Behavioral animation CSE 3541 Matt Boggus
Material recap and trajectory Geometric Artist specifies translation and rotation over time Physically based Artist specifies forces acting on objects Motion equations dictate movement Behavioral Artist directs autonomous agents Interpolation Artist draws the scene at the beginning and end of an interval of time Intermediate positions are calculated
Behavioral Animation Control the motion of one or more objects using virtual actors Goal: realistic or believable motion so that the object appears to be autonomous Matt Lewis’ page on BA http://accad.osu.edu/~mlewis/Class/behavior.html Example videos 1 + 5
Actor properties (position only) Goal (xg, yg) V = Goal - Position Force based Next Position = Position + V * dt Position (x, y)
Problems with repulsive forces
A hierarchy of motion behaviors Action selection State logic Reflex agent Steering Position and orientation changing logic Locomotion Figure animation covered later in 3541 Keep using primitive shapes or non-animated meshes Figure source: Steering Behaviors For Autonomous Characters http://www.red3d.com/cwr/steer/gdc99/
Reflex agent Figure source: https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_agents_and_environments.htm
Reflex agent – predator
Actor properties (position and orientation) Orientation (ox, oy) = transform.forward Rotate(θ) Determine which rotation (±θ) orients the actor closer to the goal using dot product Rotate(-θ) Goal (xg, yg) Vtarget = Goal - Position Steering based Position (x, y) In Unity, you can use RotateTowards()
Orientation vectors in Unity Image Image source: http://answers.unity3d.com/questions/211910/getting-object-local-direction.html
Sample starter code class OrientedAgent2D { // Data GameObject model; // Use this field for geometry, // position, and orientation // Methods Update(float deltaTime); TurnLeft(); TurnRight(); MoveForward(); MoveBackward(); }; For an agent moving in the x-z plane, its y position is and y component of transform.forward are both always zero
Behavioral animation Character or object motion based on: Knowledge of the environment Aggregate behavior Primitive behavior (Intelligent behavior) (Crowd management)
Knowing the environment Vision and other senses Information available from the current state of the scene Computed “fresh” each Update() Memory Information stored from the past Ex: lastKnownPlayerPosition field set at the end of an Update call where an enemy ai saw the player
Lab4 design note Predator class/objects/script must be able to access prey class/objects/script in order to get position for vision test Multiple options All objects are fields in one script Or, add methods that pass/take references to other objects or find objects by name
Vision Targeted vision General vision Can the actor see object X? Boolean CanSee(object X); General vision What is everything the actor can currently see? Brute force approach: loop over all objects, use targeted vision on each one, return arrayList of GameObjects “seen” Possible computation/accuracy tradeoff How much of an object needs to be seen to be identified? Do we need to model visual perception?
Omniscience Everything in the scene is known CanSee(object X) { return true };
Distance limited omniscience
Field of view
Field of view – example Orientation Vector (O) Vector from agent to vertex (V) The dot product logic doesn’t take into account occlusion. Remember to normalize V before doing dot product. If the agent cannot see far away, also check that the magnitude of the V vector doesn’t exceed the max distance it can see. Angle of cone = θ Inside the cone when the angle between O and V is less then or equal to θ/2
Field of view – sample code Vector3 agentPosition, orientation, objectPosition; float visionLimit; Vector3 agentToVertex = objectPosition – agentPosition; agentToVertex.Normalize(); if(Vector3.Dot(agentToVertex,orientation) > visionLimit) // objectPosition is in cone
Occluded Vision Ray casting with collision detection Sample the environment
How well can the actor see X? Target-testing vision (per object) How well can the actor see X? Use multiple rays Can the actor see X? Cast a ray
Target-testing vision (alternative) Sample the vision cone Cast multiple rays
Other senses Hearing Smell Sensors & signal propagation Spatial occupancy approach Applications
Spatial Occupancy
Memory What is recorded about the environment Spatial occupancy Transience of objects: time-stamps Memory hierarchy: short-term, long-term
Behavioral animation Character or object motion based on: Knowledge of the environment Aggregate behavior Primitive behavior Predator-Prey forces and movement Predator-Prey steering Intelligent behavior Crowd management
Lab4 – predator-prey simulation Unbalanced abilities Vision Distance Field of view Linear speed (moving forward) Angular or rotational speed (turning) (For stealth game concept, consider enemy AI agents as predators, player controls prey)
Predator Prey vision anatomy
Prey-Predator (vision)
Prey-Predator (movement – speed and turning)
Motion – force based Force = c * posprey - pospred Apply a force on the predator towards the prey when in view
Motion – kinematic based vnew vold Determine the closest prey in view then turn towards it and increase forward velocity
Prey-Predator – environment forces Using pure forces May not prevent object penetration Prey can be ‘hidden’ by environmental repulsive forces
Behavioral animation Character or object motion based on: Knowledge of the environment Aggregate behavior Emergence Primitive behavior Intelligent behavior Crowd management
Aggregate Behavior: Emergent Behavior Type Elements Physics Env/Others Typical qualities Type Elements Physics Env/Others Intelligence Particles 102-104 Much/none None Flocking 101-103 Some/some Limited Crowds 101-102 Little/much Little-much
Emergent behavior Complex systems and patterns arising out of simple rules Aints – AI ants http://www.youtube.com/watch?v=rsqsZCH36Hk
Flocking, Swarming, Flying Boids http://www.red3d.com/cwr/boids/
Local control Rules defined to stay with friends, but avoid bumping into each other Need additional rules for collision avoidance with obstacles
Local information
Other flocking issues Global control Negotiating the motion script flock leader global migratory urge Negotiating the motion Separation, alignment, and cohesion may compete/contradict Collision avoidance Once an object is in sight, start steering to avoid Splitting and rejoining (difficult) Collision avoidance too strong – flock may never rejoin after split Flock membership too strong – flock does not split and formation changes Modeling flight
Navigating using bounding sphere
Testing for being on a collision path with (bounding) sphere Navigating Testing for being on a collision path with (bounding) sphere Given: P, V, C, r
Finding closest non-colliding point Calculate s,t
Additional Slides, time permitting
Spatial Occupancy transiency doorway doorway wall
Negotiating the motion Forces Or “Reasoning” (e.g. rule-based)
Modeling flight – common in flocking
Modeling flight Geometric flight – dynamic, incremental rigid transformation of an object moving along a tangent to a three dimensional curve
Less pressure above wing = lift Modeling Flight – Lift Air passing above wing most travel longer than air below it. Less pressure above wing = lift
Modeling Flight – turn by rolling
Modeling Flight – summary Turning is effected by horizontal lift Increasing pitch increases drag Increasing speed increases lift