유니티게임개발/개발정보

분산 행동 모델(Distributed Behavior Model) 보이드(Boids) 유니티 시뮬레이션 레퍼런스

디지털콘텐츠크리에이터 2024. 9. 28. 18:04

분산 행동 모델(Distributed Behavior Model) 보이드(Boids) 유니티 시뮬레이션 레퍼런스

분산 행동 모델

분산 행동 모델(Distributed Behavior Model)은 다수의 개체가 중앙 제어 없이 각각 독립적인 로컬 규칙에 따라 행동하면서도 집단으로서의 전체적인 행동을 만들어내는 시스템을 의미합니다(집단의 각 개체가 개별적으로 행동하면서도 집단의 조화로운 움직임을 이루는 원리)

 

보이드(Boids)

보이드(Boids, bird-oid object)는 새들의 무리 짓기 행동(flocking behaviour of birds)과 관련된 집단 운동을 시뮬레이션하기위해 Craig Reynolds가 개발한 인공 생명 프로그램(artificial life program)입니다. 보이드는 분산 행동 모델의 대표적인 예로 개체들이 서로 상호작용하면서 나타나는 집단의 복잡한 행동을 간단한 규칙으로 구현해내는 것이 핵심입니다.

Flocks, Herds, and Schools:A Distributed Behavioral Model
https://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/

 

가장 간단한 보이드 세계에 적용되는 세가지 규칙

보이드는 세 가지 기본 규칙인 분리, 정렬, 응집(separation, alignment,  cohesion)에 따라 개체(보이드)들의 행동을 정의하고 동물 무리의 자연스러운 움직임을 재현합니다.

https://en.wikipedia.org/wiki/Boids

 

분리(Separation)
보이드는 너무 가까이 있는 이웃을 피하려고 움직입니다(근접회피) 이 규칙은 서로 충돌을 방지하는 데 도움이 됩니다.

 

정렬(Alignment)
보이드는 가까운 이웃의 방향을 따라서 움직이려고 합니다. 이를 통해 집단의 동기화된 움직임이 발생합니다.

 

응집(Cohesion)
보이드는 무리의 중심으로 이동하려고 합니다. 이를 통해 무리가 모여서 움직이게 됩니다.

 

Coding Adventure: Boids

유니티(Unity) 엔진을 사용하여 보이드를 시뮬레이션하고 보이드의 기본적인 행동 규칙에 대한 설명을 제공합니다. 보이드의 자연스러운 행동을 결정하는 분리, 정렬, 응집의 세 가지 원칙, 황금 비율과 피보나치 수열이 점 분포와 곡선 생성에 활용되는 방법, 장애물 회피와 목표 설정 실험을 통해 보이드들이 실제 환경에서도 잘 작용하는지 확인등

https://youtu.be/bqtqltqcQhw

 

 

Boids 프로젝트
https://github.com/SebLague/Boids/tree/master

 

GitHub - SebLague/Boids

Contribute to SebLague/Boids development by creating an account on GitHub.

github.com

 

셰이더로 물고기 수영 애니메이션을 만드는 방법
https://www.bitshiftprogrammer.com/2018/01/how-to-animate-fish-swimming-with.html

 

How To Animate A Fish Swimming With Shaders

animated fish shader tutorial with unity

www.bitshiftprogrammer.com

 

https://github.com/albertomelladoc/Fish-Animation/blob/master/FishAnimation.shader

 

Fish-Animation/FishAnimation.shader at master · albertomelladoc/Fish-Animation

Test Vertex Animation Shader for Unity3D. Contribute to albertomelladoc/Fish-Animation development by creating an account on GitHub.

github.com

 

 

Points on a sphere
https://stackoverflow.com/questions/9600801/evenly-distributing-n-points-on-a-sphere/44164075#44164075

 

Evenly distributing n points on a sphere

I need an algorithm that can give me positions around a sphere for N points (less than 20, probably) that vaguely spreads them out. There's no need for "perfection", but I just need it so none of t...

stackoverflow.com