2011-12-11 4 views
10

gamedev.SE에서 우리는 flash implementation of Perlin-noise이 다른 구현에서 상당히 벗어난 것처럼 보였습니다.플래시의 펄린 노이즈는 어떻게 구현됩니까?

온라인에서 구현 세부 정보를 찾지 못했지만 누군가 플래시에서 펄린 노이즈에 사용되는 알고리즘을 알 수 있는지 궁금해했습니다.

numOctaves 파라미터 (왼쪽에서 오른쪽으로 1, 2, 4)을 변경 한 곳 bitmapData.perlinNoise(32, 32, 1, 200, false, false, 7, true); 이런 이미지를 생성하여 : 펄린 노이즈의 다른 구현이 상당히 다를 그러나

perlin noise in flash

. 예를 들어, Wikipedia article about Perlin-noise의 이미지 : 당신은 (왼쪽에서 오른쪽으로 옥타브 1, 24)를 다음 이미지에서 볼 수 있듯이 또한

Perlin noise as depicted on Wikipedia

this Actionscript Implementation of Perlin-noise는 상당히 다른 결과를 생성합니다

Perlin noise AS3

내가 주로 관심을 가지고있는 것은 단지 한 옥타브의 노이즈 모양입니다. 플래시 구현에서는 노이즈가 분리 된 얼룩 같은 것을 형성한다는 것을 분명히 볼 수 있습니다.

중요 : 플래시에서 생성되는 노이즈는 fractalNoise 매개 변수에 대해 false을 사용합니다. fractalNoisetrue으로 설정된 경우 결과는 실제로 위키 백과 및 다른 구현의 결과와 매우 유사합니다.

부울 값을 다음과 같이

파라미터의 설명을 판독한다. 값이 true이면이 메서드는 프랙탈 노이즈를 생성합니다. 그렇지 않으면 난류가 발생합니다. 난기류가있는 이미지에는 그래디언트의 가시적 인 불연속성이있어 화염이나 파도와 같은 더 선명한 시각적 효과에 더 가깝게 만들 수 있습니다.

우리가 볼 수 있듯이, 그들은 잡음을 발생시키는 방법을 설명하기 위해 난류 인 을 말합니다. 그래서 질문 : 플래시에 의해 생성 된 출력은 여전히 ​​펄린 노이즈인가? 또는 그런 종류의 소음에 또 다른 이름이 있습니까? 가장 중요한 것은 이런 곳에서 잡음을 발생시키는 구현을 어디에서 찾을 수 있는가?

답변

1

는 내가 모든 이미지 처리를 한 이후 looong 시간이었다,하지만 어쩌면이 중 일부는 도움이 될 것입니다

참고 : (그리고 답을 아는 사람 ...) http://www.kelvinluck.com/assets/perlin_noise_experiments/, http://www.quasimondo.com/archives/000672.php, http://www.sjeiti.com/?p=305

내 이해 플래시 구현 float보다 정수 계산을 기반으로 결과를 출력합니다. 이것은 왜 렌더링이 빠르지 만 외관이 약간 다른 이유를 설명합니다.

적어도 올바른 방향으로 설정하면 ...

+0

미안하지만, 그렇지 않습니다. 나는 당신의 링크 중 하나에서 코드를 사용하여 노이즈가 아닌 * 관심있는 이미지를 생성했다. 플래시 구현은 정수 기반 (it 's가 아니기 때문에)과 최종 이미지를 출력하기 때문에 다르지 않다. 당신은 정수를 가질 것입니다, 그 주위에 방법이 없습니다. 플래시 구현을 통해 "난기류"와 "규칙적인"잡음 중 하나를 선택할 수 있습니다. 내가 관심을 갖는 것은 난기류 **에 대한 알고리즘입니다. Google 이미지에서 '난기류 노이즈'및 '펄린 노이즈'를 검색하면 그 차이가 나타납니다. – bummzack

4

용어에 대해 혼란이 있습니다. 그러나 기술적으로 Perlin이 말한 잡음은 합계가없는 단일 옥타브입니다. 첫 번째 위키 백과 이미지처럼 보입니다.

저는 거의 아무도 실제로 그것을 사용하지 않을 것이라고 확신합니다. 모든 사람이 몇 옥타브를 더하고 보통 낮은 주파수에서 진폭을 크게 만듭니다. "얼마나 더 큰가"는 지속성입니다. 어쨌든, 당신이 그것을 추가하면, 그것은 프랙탈 소위라고합니다.

실제로 "펄린 노이즈"는 실제로 임의의 그라데이션을 만들고이를 보간한다는 의미입니다. 하지만 사람들은 프랙탈 노이즈를 Perlin 노이즈라고 부릅니다. Perlin 노이즈가 여러 개 있기 때문입니다.

참고 구현과 마찬가지로 종종 Perlin 및 Simplex 노이즈 함수는 0을 중심으로 한 값을 출력하고 (때때로) [-1, +1]로 스케일 된 값을 출력합니다. 또한 유사하지만 동일하지는 않습니다. 심플 렉스 노이즈는 약간 다릅니다. Ken Perlin은 원래 Perlin 노이즈 (그는 단지 "노이즈"라고 함)를 생각하고 나중에 일부 중복을 제거하여 속도를 높이고 단순 노이즈 ("향상된 노이즈"라고도 함)를 생성했기 때문에 Perlin 노이즈라고도합니다.). 심플 렉스는 그 자체로 조금 더 어둡게 보일 수 있습니다 (그리드가 다르기 때문에 분명히 다르게 보입니다). 고차원 노이즈를 통한 섹션도 Perlin에서와 똑같이 동작하지 않습니다.