Перлин шум для движения? - PullRequest
       9

Перлин шум для движения?

6 голосов
/ 22 сентября 2011

Я успешно использую шум Перлина для создания ландшафта, облаков и нескольких других интересных вещей. Однако сейчас я пытаюсь оживить группу летающих насекомых (в частности, светлячков), и мне было предложено также использовать шум Перлина для этого. Однако я не совсем уверен, как это сделать.

Первое, что пришло мне в голову, было, учитывая карту шума, такую ​​как:

image

  1. Назначьте каждому светлячку случайное начальное местоположение, скорость и угловое ускорение.
  2. На кадре продвигайте положение мухи, следуя ее вектору направления.
  3. Считайте карту шума в новом месте и используйте ее для регулировки углового ускорения, вызывая муха «поворачивается» к более светлым пикселям.
  4. Снова отрегулируйте угловое ускорение за счет близости других мух, чтобы они не группировались вокруг локальных максимумов.

Однако это не распространяется на случаи, когда мухи достигают края карты, или случаев, когда они могут оказаться на орбите одной точки. Второй случай, возможно, не имеет большого значения, но я не уверен в надежном способе их поворота, чтобы избежать столкновений с краем карты.

Предложения? Учебники или статьи (на английском языке, пожалуйста)?

Ответы [ 2 ]

6 голосов
/ 27 мая 2013

Вот очень хороший источник для 2D перлин-шума.Вы можете следовать тем же принципам, но вместо создания двумерной сетки градиентов вы можете создать одномерный массив градиентов.Вы можете использовать это, чтобы создать свой шум для определенной оси.

Просто следуйте этому рецепту, и вы можете создавать аналогичные функции перлин-шума для каждой из ваших других осей!Объедините эти движения, и у вас должен получиться красивый шум на руках.(Вы также можете использовать эти шумовые функции в качестве случайных ускорений или скоростей. Поскольку функция шума Перлина глобально монотонна, ваши мухи не будут лететь на безумные расстояния.)

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

Если вам интересно узнать о других типах движения, я бы предложил Броуновское движение .Это то же самое движение, которое проявляют частицы пыли, когда они плавают вокруг вашей комнаты.В конце этой статьи мы рассмотрим более интересную математику, но если вы вообще знакомы с Matlab, первые несколько наборов инструкций должны быть довольно просты для понимания.Если нет, просто гуглите функции и найдите их собственные эквиваленты для вашей среды (или создайте их самостоятельно!). Это будет немного более реалистично и гораздо быстрее, чем вычисление перлин-шума

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

Счастливого полета!

1 голос
/ 22 сентября 2011

Может быть, вы ищете boids?

Страница Википедии

В оригинальной концепции он не содержит шума Перлина, может быть, вы могли бы использовать шум для генерации аттракторов или отталкивателей, как вы пытаетесь сделать с поведением «лететь к свету».

PS: на странице, указанной выше, есть ссылка на алгоритм Firefly , может быть, вас это заинтересует?

...