더 맛있는 Boids를 그리고 싶습니다.

최근 Unity를 시작했기 때문에, 좋은 느낌으로 움직이는 것을 만들고 싶고, Boids를 시뮬레이션하는 것을 만들어 보았습니다.

Boids란?


コンピュータ上の鳥オブジェクトに以下の三つの動作規則を与え、多数を同時に動かして群れの振る舞いをシミュレーションする。

分離(Separation)
鳥オブジェクトが他の鳥オブジェクトとぶつからないように距離をとる。
整列(Alignment)
鳥オブジェクトが他の鳥オブジェクトと概ね同じ方向に飛ぶように速度と方向を合わせる。
結合(Cohesion)
鳥オブジェクトが他の鳥オブジェクトが集まっている群れの中心方向へ向かうように方向を変える。

인용 - 보이드_(인공생명) - wikipedia

참고문헌


  • Boids 시뮬레이션 - WonderPlanet DEVELOPER BLOG
  • JavaScript, HTML5에서 '무리'를 시뮬레이션하는 레시피 (보이드) - 코드 레시피

  • 도전과 개선



    우선, 기본의 룰 대로에 코드를 썼습니다만 상당히 움직임이 단조롭게 되어 버려 뭔가, 좋은 느낌이 아니다. (단 그룹의 덩어리가 여러 방향으로 움직일 뿐이 되어 버린다.)
    그래서 규칙을 추가하거나 수치를 이용하여 더 좋은 움직임을 하는 Boids를 만들 수 없는지 시도해 보았습니다.

    실제로 한 일



    1. 조인 규칙 변경



    다른 새 오브젝트와 결합할지 여부를 때의 새 오브젝트 간의 거리에 따라 결정하도록 했다.
    그렇게 함으로써, 그룹을 복수 할 수 있게 되고, 또한 거리에 따라서는 그룹의 결합이 행해져 복잡성이 증가한 것 같다.

    2. 정렬 규칙 변경



    군중 중심이 아니라 군중심에서 가장 멀리 떨어진 새 객체를 리더로 하여 그 쪽으로 향하도록 변경을 했다. 장면에 의해 리더가 대신, 보다 종횡무진으로 장면을 오가게 되었습니다.

    3. 그룹의 새 개체 수를 활용



    군이 클수록, 색이 짙어지도록 하고, 각각의 군이 가시화할 수 있게 해 보았다. (여기는 아직 개선의 여지가 있을 것 같다)

    실제로 만든 것




    nuuullnull/Unity-Boids

    미래의 도전



    아직도, 여러가지 룰의 추가로 재미있게 될 것 같은 생각이 들기 때문에, 값이라든지 잘 사용해 돌릴 수 있도록(듯이) 하고 싶다.
    그리고 Unity, C#의 작법이 아직 제대로 잘 모르기 때문에 공부하고 싶습니다.
    코드로 이상한 곳이라면 꼭 알려주세요!

    좋은 웹페이지 즐겨찾기