- Unity Artificial Intelligence Programming
- Dr. Davide Aversa Aung Sithu Kyaw Clifford Peters
- 271字
- 2021-06-10 18:57:46
Flocking, swarming, and herding
Many living beings such as birds, fish, insects, and land animals perform specific operations such as moving, hunting, and foraging in groups. They stay and hunt in groups because it makes them stronger and safer from predators than pursuing goals individually. So, let's say you want a group of birds flocking, swarming around in the sky; it'll cost too much time and effort for animators to design the movement and animations of each bird. However, if we apply some simple rules for each bird to follow, we can achieve the emergent intelligence of the whole group with complex, global behavior.
One pioneer of this concept is Craig Reynolds, who presented such a flocking algorithm in his 1987 SIGGRAPH paper, Flocks, Herds, and Schools – A Distributed Behavioral Model. He coined the term boid that sounds like bird, but refer to a bird-like object. He proposed three simple rules to apply to each unit:
- Separation: Each boid needs to maintain a minimum distance with neighboring boids to avoid hitting them (short-range repulsion)
- Alignment: Each boid needs to align itself with the average direction of its neighbors, and then move in the same velocity with them as a flock
- Cohesion: Each boid is attracted to the group's center of mass (long-range attraction)
These three simple rules are all that we need to implement a realistic and a reasonably complex flocking behavior for birds. We can also apply them to group behaviors of any other entity type with little or no modifications. We'll examine how to implement such a flocking system in Unity in Chapter 5, Flocking.
- CorelDRAW X6 中文版圖形設計實戰從入門到精通
- C++黑客編程揭秘與防范
- GPS/GNSS原理與應用(第3版)
- 網絡安全技術與解決方案(修訂版)
- Getting Started with Grunt:The JavaScript Task Runner
- 光纖通信系統與網絡(修訂版)
- 一本書讀懂物聯網
- 5G技術核心與增強:從R15到R17
- 數據血緣分析原理與實踐
- 園區網絡架構與技術
- 物聯網的機遇與利用
- Intelligent Mobile Projects with TensorFlow
- Enterprise ApplicationDevelopment with Ext JSand Spring
- Python API Development Fundamentals
- RestKit for iOS