2011-09-22 3 views
6

나는 Perlin 노이즈를 사용하여 지형, 구름 및 다른 멋진 것들을 생성합니다. 그러나 나는 이제 비행 곤충들 (특히 반딧불이)을 움직이기 위해 노력하고 있으며, 이것 역시 Perlin 소음을 사용하도록 제안되었습니다. 그러나, 나는 이것에 관해 어떻게 가야하는지 정말로 모른다.모션에 대한 펄린 노이즈?

노이즈 맵과 같이 주어진이었다 나에게 발생한 가장 먼저하는 일 : 반딧불

  1. 할당 각각 임의의 초기 위치, 속도 및 각가속도.
  2. 프레임에서 방향 벡터에 따라 파리의 위치를 ​​앞 당깁니다.
  3. 새 위치에서 노이즈 맵을 읽고 각도 가속도를 조절하여 가벼운 픽셀쪽으로 "회전"하도록하십시오.
  4. 다른 파리의 근접성에 의해 각 가속도를 다시 조정하여 최대 가속도를 피해야합니다.

그러나 이것은 파리가지도의 가장자리에 도달하는 경우 또는 단일 지점을 궤도 위로 돌릴 수있는 경우에는 적용되지 않습니다. 두 번째 사례는 큰 문제가 아니지만 맵 가장자리와의 충돌을 피할 수있는 확실한 방법은 확실하지 않습니다.

제안 사항? 자습서 또는 논문 (영어로)

답변

6

다음은 2D perlin 노이즈의 매우 좋은 소스입니다. 똑같은 원칙을 따를 수 있지만 2D 그래디언트 그리드를 만드는 대신 1D 그라데이션 배열을 만들 수 있습니다. 이를 사용하여 특정 축에 대한 노이즈를 생성 할 수 있습니다.

이 레시피를 따르기 만하면 다른 축 각각에 대해서도 유사한 퍼널 노이즈 기능을 만들 수 있습니다! 이 동작들을 결합하면 손에 잡음이 들려야합니다. (펄린 노이즈 함수가 전 세계적으로 단조로운 때문에 당신은 또한 당신의 파리하지 않습니다 로켓 미친 거리에 떨어져. 임의 accellerations 또는 속도 등이 노이즈 기능을 사용할 수 있습니다.)

http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html

을 당신이에 대해 궁금하다면 다른 유형의 움직임, 나는 제안 할 것이다 Brownian Motion. 그것은 먼지 입자가 당신의 방 주위에 떠있을 때 보여주는 것과 같은 종류의 움직임입니다. 이 기사는 마지막에 좀 더 재미있는 수학을 접해 봤지만, Matlab을 사용하는 모든 사람들에게 도움이된다면 처음 몇 가지 지침 세트를 이해하기 쉬워야합니다. 그렇지 않다면 funcitons을 Google로 검색하고 환경에 맞는 고유 한 파일을 찾으십시오 (또는 직접 만들어야합니다!)이 좀 더 현실적인, 소음

http://lben.epfl.ch/files/content/sites/lben/files/users/179705/Simulating%20Brownian%20Motion.pdf

행복 비행 펄린보다 계산하기가 훨씬 빠를 것입니다!

+0

당신이 1 년 된 질문에 대답하는 그 어색한 순간. – Peaches491

+0

그래도 좋은 답변입니다. 내가 끝내었던 것보다 낫고, 장래에 도움이 될 것입니다. 감사. –

1

어쩌면 당신은 boids를 찾고 있습니까?

Wikipedia page

그것은 당신이 '비행에 밝은'행동하려고 노력하고 있습니다로 어쩌면 당신은, 어 트랙터 또는 리 펄서를 생성하는 소음을 사용할 수 있습니다, 원래의 개념 펄린 노이즈를 특징으로하지 않습니다.

추 신 : 위에 링크 된 페이지는 Firefly algorithm에 대한 관련 링크가 있습니다. 아마도 그 점에 관심이 있으십니까?

+0

반딧불 알고리즘 (쉽게 검색하기 쉬운 이름으로 지정됨)을 보았지만 약간의 반딧불 특유의 것을 찾고있었습니다. 나는 보이드를 살펴볼 것이다. –

+0

충돌을 피하려면 새, 물고기 등 어떤 종류의 시뮬레이션을해도 정말 멋집니다. 당신이 무언가를 혼란스럽게 느끼고 싶다면, 즉 모든 요소가 통일 된 방향으로 기울어 져있는 것을 원하지 않는다면, 단지 '응집력'의 영향력을 무효로 설정할 수 있습니다. – jv42