Animation & Java3D

doutfanaticalMechanics

Nov 14, 2013 (4 years and 1 month ago)

78 views

1

Animation & Java3D

©Anthony Steed 2002


2

Overview


Introduction to Animation


Kinematics


Dynamics


Boids


Java3D


Scene graph


Animation


Vehicles


3

Animation


Kinematics


Position, velocity and acceleration only


Dynamics


Based on forces, masses



4

Kinematics


Two forms


Forward


specify each joint in hierarchy
by hand


Inverse


specify position of end
-
effector
and compute joint steps

5

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)

S

E

p

6

Inverse Kinematics


End effector (point
p) is specified


E and S must be
calculated


This is simple in this
situation

S

E

p

7

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

8

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


9

Dynamics


Solve for a set of forces acting on a
number of bodies


Discrete time
-
step integration


Car dynamics


Human gait patterns


Boids

10

Boids


Boids


Avoid each other


Head in the same direction


Gravitate towards each other


Emergent behaviour is very complex

11

Avoid Close Neighbours


12

Head Toward Centre of Group


13

Turn Towards Group Direction

14

In Code


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

15

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

16

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

17

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

18

Example
-

Boid Set

Scene Graph

RunTime Calls

Event Source

Boid

Boid

Boid

Locale

BoidSet

(BranchGroup)

FlockBehaviour
(Behavior)

WakeupOnFramesElapsed(0)

setTransform

19

Example
-

Boid

Scene Graph

Run Time Call

Reference

Boid
(TransformGroup)

Morph

FlapBehaviour
(Behavior)

WakeupOnTransformChanged

Shape

Shape

Shape

Alpha

Triangle

Array

Triangle

Array

Triangle

Array

20

Recap


Kinematics


Motion independent of force


Used in “traditional” key
-
frame animation


Dynamics


Boids


Java3D


Scene graph