2012-04-19 7 views
0

그래서 OpenGL을 사용하여 시간에 따라 변하는 추상 모양을 플롯하려고합니다. 이를 위해 Perlin 잡음 함수를 사용하고 싶습니다. 이 코드 (http://www.sorgonet.com/linux/noise_textures/)는 여기에있는 함수가 단지 두 좌표 만 취한다는 사실을 제외하고는 저를위한 완벽한 시작입니다. 저는 두 개의 공간 좌표를 취하는 좌표를 원하며, 세 번째 좌표는 시간에 따라 변합니다.2D 함수에서 3D perlin 노이즈 함수 만들기

내 질문은 :이 기능을 조정하여 하나 이상의 좌표로 사용할 수 있습니까?

답변

1

예, 가능합니다.

시간 차원을 아무런 문제없이 공간 차원으로 처리 할 수 ​​있습니다. 2D 노이즈

, 당신은 예를 들어 선형을 사용하여, 다음과 같이 2 차원 보간을 사용하지만 아이디어는 바이 큐빅 등 :

첫 번째 단계로 작동합니다 :

당신은 4 개 외부 값을 가지고 그 중 하나가 그 가치를 얻기위한 것입니다.

+ + 

    x 


+ + 

번째 단계 : Y 축에

보간.

+-+--+ 

    x 


+-+--+ 

번째 단계 : Y 축에

보간.

이제 보간 값을 얻었습니다.

이제 3 차원을 추가하기 위해 8 개의 값으로 시작하여 추가 단계를 추가합니다. 즉, Z 축에 보간합니다. 이는 임의의 많은 차원으로 확장됩니다.

+0

이 접근법은 심플 렉스 노이즈보다 느리고 더 많은 (가장 작은 목적을위한) 아티팩트를 생성합니다.) – Monkey

+1

@ 몬키 : 사실,하지만 OP는 펄린 노이즈를 요구했기 때문에 그를 혼동하고 싶지 않았습니다. –