11: characters & navigation
characters
- avatars
- 'avatar' popularized as computer term by stephenson in snow crash (1992), originally from sanskrit: 'Earthly incarnation of a Hindu god or goddess'
- h-anim specification
- h-anim animation [boxman]
- avatar me [»]
- avatar-related links from web3d.org [»]
- avatar-related stuff from paul flavin [»]
- working avatars
- jack (anthropometrics guru)
- mariela (soap saleswoman)
- jackie strike (2000 presidential hopeful)
- crowd simulators [»]
- nude performers [www.somavision.de] [www.3dmodels.de]
- using mocap
- examples [»]
- scripts & info [»]
- accad mocap lab [»]
- facegen [»]
- multi-user vrml worlds
- typically communicate to vrml scene using java eai
- Deep Matrix [»]
- Blaxxun [»]
- Cortona Islands [»]
- Open Community [»]
- mpeg4
- about [»]
- the spec [»]
- collaboration with vrml [»]
navigation
NavigationInfo{} node
NavigationInfo{}
avatarSize
[force field radius, eye height, step height, center of rotation]
- should be scaled to match environment
- can be parented by
Transform{} node for scaling
- affects collision detection and terrain following
headlight: on by default
speed: match with frame rate and environment size, to avoid overshoot / plodding
type: ["EXAMINE", "WALK", "FLY", "NONE", "ANY"]
test worlds: [examine] [walk] [fly]
visibilityLimit: far clipping plane
viewpoints
- don't be lazy,
0 0 10 is rarely the optimal viewpoint
- use Info, it's easy
- can use
Anchor{} nodes to bind viewpoints by DEFing viewpoint node and setting anchor url field to "#viewpointName"
collisions
- turning off:
- put everything inside a Collision{} node
- set
collide to FALSE
- leaving collision on (default) results in a speed hit if scene is at all complicated: bad
- use proxies instead
- guiderails (invisible or not) it's easy to fall off stairs, walkways, into valleys
- moon [»]
- stream [»]
- vrml specification only requires detection between avatar (camera) and scene
- cortona has an extension for object-object collsions [»]
environment authoring tips
Anchor{} node
- Anchor{}
- to another url (webpage):
url ["http://www.accad.ohio-state.edu"]
- to another world, optionally specifying viewpoint:
url ["world.wrl#viewpoint"]
- to change viewpoint in current world:
url ["#viewpoint"]
- example: [»]
depth cues
- most display technology is still lacking stereo cues, so we must exaggerate others:
- overlap/occlusion: overlap background with foreground so positioning is unambiguous
- relative size: don't compose a shot with a giant in the background and and expect it to seem large
- relative height: don't put distant objects low in the frame and expect them to seem far away
- atmospheric perspective: use a little fog when appropriate
- familiar size: stick familiar objects next to unfamiliars to register size
- linear perspective: use grids, rows, rivers etc. as depth cues
- motion parallax: set viewpoints looking across motion paths create layers of left/right movement.
programming navigation interfaces
- great for HUDs
- will discuss more later
visible avatars
- "where does camera go?" problem
- body can obstruct view
- can't see character's face if behind
- can't see from character's vantage point if in front
- immersion issue (1st person vs 3rd person)
- how many controls are necessary for expressive avatars? will using an avatar be like learning to type or drive, someday?