how to animate a character youve never seen before chris hecker, maxis checker@d6.com

Post on 27-Mar-2015

224 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

How to Animate a Character

You’ve Never Seen BeforeChris Hecker, Maxis

checker@d6.com

makepipeline

createassets

bakeassets

testassets

shipgame

traditionalgame pipeline development

makepipeline

createassets

bakeassets

testassets

shipgame

game pipeline development

makepipeline

shipgame

createassets

bakeassets

?

spore

What can players make?

creatures

skin

paint

parts

bones

creditsKees van ProoijenJordan MaynardRyan W. EnslowBernd RaabeJohn DeWeese

Bob KingGal RothJohn CiminoTony Gialdini

Steven SadlerPatrick Benjamin

Steve EngSteve Lim

how the animation system sees creatures

skin, just for wysiwyg

bodiesxforms for mesh parts have capabilitiesparts, limbs, spine

joints between bodiesik chains

very few limits on topology & morphology

tree structure

some socket constraints

scale limits

shader bone limits

see Chaim’s talk on the editors

Friday, 2:30pm — 3:30pm

So, we have a problem.

How do we make themmoveshow intent & purposeconvey emotions?

idea: describe the movement

1st approach: classically procedural

Now, we have another problem.

Do we hireanimators who can program?programmers who can animate?

take a step back

Want to hireanimators who can animate!

but how?

How?

Show, don’t tell.

Example based, not descriptive.

Animate on one creature, the software applies it to the others...somehow.

watch animators work

select bone

move bone

selecting

Where is bone #57?images from http://highend3d.com/articles/features/25-4.html

selecting

Need to add semanticsdescribe what you’re selecting.we call this description a “context”.

I’d like to select the left topmost grasper, please.

selecting

(demo)

selecting in code

This is how the code reasons about the creature.

The code needs to deal with the variable results.

This is hard.

Code performs a “context query,”can return 0, 1, or many bodies.

moving

Move bone #57 to (3.14, 2.72, 1.62).

How do you punch something?

moving

How do you punch something?

Again, we require semantics,describe the intent.this is the “frame” of the movement.

Move fist to the target, please.

moving - madlibs

move grasper to same creature’s mouth.

move grasper to other creature’s grasper.

move mouth to external target.

move slasher to position relative to ground.

move slasher to absolute position.

moving - scaling

Is a given movement “big” becausethe creature is big?the movement is inherently big?the target is far away?

The animator needs to tell the system.

(demo)

moving - frame

This description of the movement specifies the frame in which it is recorded.

Even for multiple bodies on the same creature.

moving - space

Generalizedrecorded in the frame of the movement mode.all keys are in generalized space.

Specializedprojected onto a single body on a creature.multiple projections for multiple bodies.

a spore animation file

animationchannel

contextdescriptions (madlibs, scaling)keys

channelchannel...

the spore animation runtime loop

for each creature, for each animationtick to time – interpolates generalized splinesfor each channel

evaluate context queryfor each body

specialize onto bodycompute gait and wigglesdump all goals into ik solver

gaits

The game drives around an oriented particle.

The gait system tries to keep up.

gaits

cluster legs based on length

move foot goals using parameters

step height & lengthtrigger & duty factor

lots of other parameters

toe curl, ankle anglehip rotation and translation

(demo)

wiggles

We want “secondary animation”

tail bobbing, arm swaying,without manual keying.

wiggles

Find “wiggleable” bodies that haven’t been selected.

Add secondary with damped spring mass system.

(demo)

the constant question:

How well does an animation generalize across lots of

creatures?

stochastic testing

AVG – Animation Validation Grid

branching

split up creature-space

“has feet”

“has graspers”

“upright spine”

ik solver

Decouple procedural systems from needing to think about creature topology.

Just set goals on bodies.

ik solver

Want it to befast.accurate in workspace.fail gracefully if missing goal.decide not to hit goals for quality.path independent.

ik solver history

0.0 – linked rigid bodies, constraints, controllersslow, inaccurate, unstable, not “posable”

1.0 – multibranch 6DOF CCDcomplex, slow, more accurate, not tunable

2.0 – particle IK – “control freak”fast, accurate, more tunable, twitchy, fails poorly

2.5 – particle IK – “laid back”fast, accurate, tunable, smooth, fails better

useful takeaways?

target relative curves

ik solver experience

semantics are valuable

custom toolwas worth it

(demo)

thank you

How to Animate a Character

You’ve Never Seen BeforeChris Hecker, Maxis

checker@d6.com

top related