200 likes | 325 Views
Animation & Java3D. ©Anthony Steed 2002. Overview. Introduction to Animation Kinematics Dynamics Boids Java3D Scene graph Animation Vehicles. Animation. Kinematics Position, velocity and acceleration only Dynamics Based on forces, masses. Kinematics. Two forms
E N D
Animation & Java3D ©Anthony Steed 2002
Overview • Introduction to Animation • Kinematics • Dynamics • Boids • Java3D • Scene graph • Animation • Vehicles
Animation • Kinematics • Position, velocity and acceleration only • Dynamics • Based on forces, masses
Kinematics • Two forms • Forward – specify each joint in hierarchy by hand • Inverse – specify position of end-effector and compute joint steps
Forward Kinematics • Two joints S and E can be rotated. • End position is determined by rotational angle of S and E • Point p can be calculated from the matrices SE (and H, B which are fixed) E S p
Inverse Kinematics • End effector (point p) is specified • E and S must be calculated • This is simple in this situation E S p
Inverse Kinematics • For complex situations where more degrees of freedom in joints that required to specify p • Solve using a non-linear optimiser and further constraints • Energy minimisation p
Kinematics • Key-framing • Specify transformations of individual joints or transformation of end-effectors at fixed points (key-frames) • Interpolate between them • Interpolation • Linear interpolation will look jerky, so use a spline interpolation
Dynamics • Solve for a set of forces acting on a number of bodies • Discrete time-step integration • Car dynamics • Human gait patterns • Boids
Boids • Boids • Avoid each other • Head in the same direction • Gravitate towards each other • Emergent behaviour is very complex
For each boid Keep position and velocity On each frame for group Find centre Find average velocity On each frame for each boid Forces are Attraction towards centre Attraction towards average velocity Repulse neighbours Calculate new velocity Calculate new position In Code
Java3D Summary • Java3D is a 3D API for Java • Broad support across 3D graphics layers • immediate mode rendering through to HMD and free space tracker support • No built-in support for any file format • Limited VRML97 file reader available promised in near future • Not 100% Pure Java (currently) • relies on native bindings to graphics library for acceptable speed
Nodes • Similar basic components to VRML • Geometry, Attributes, Groups, Sounds • Super-structure • Canvas3D, View, VirtualUniverse, Locale • Behaviors • Scheduling bound - scope for action potential • WakeUpConditions - triggers for behaviour • time / frames elapsed • Input Devices
Scene Graph Actions • Designed so that parts of scene graph can be compiled to lower layers • Capability bits determine access to internals of scene graph • Support for copying scene graphs • Supports immediate mode rendering • pre/postRender for background/overlay graphics
Boid Locale Boid Boid BoidSet (BranchGroup) Scene Graph RunTime Calls FlockBehaviour (Behavior) WakeupOnFramesElapsed(0) Event Source Example - Boid Set setTransform
FlapBehaviour (Behavior) WakeupOnTransformChanged Alpha Morph Shape Triangle Array Shape Scene Graph Shape Triangle Array Run Time Call Triangle Array Reference Example - Boid Boid (TransformGroup)
Recap • Kinematics • Motion independent of force • Used in “traditional” key-frame animation • Dynamics • Boids • Java3D • Scene graph