Vertex animation: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
(bugs bugs bugs!) |
||
Line 2: | Line 2: | ||
Vertex animation was added in [[Source Filmmaker]] and is also available in [[Dota 2]]. | Vertex animation was added in [[Source Filmmaker]] and is also available in [[Dota 2]]. | ||
{{bug|Using the [[$scale]] command breaks vertex animation.}} | |||
== Implementation == | == Implementation == | ||
Line 15: | Line 17: | ||
# Add a new bone which will drive the vertex animation. It doesn't need to have any vertices attached. | # Add a new bone which will drive the vertex animation. It doesn't need to have any vertices attached. | ||
# Add two <code>[[$boneflexdriver]]</code> commands to bind your vertex animation to the new bone (see example). | # Add two <code>[[$boneflexdriver]]</code> commands to bind your vertex animation to the new bone (see example). | ||
# Add at least one <code>[[$sequence]]</code> in which the new bone is animated in its X and Y axes. Its X position defines the blend weight of the vertex animation (0-1), and its Y position defines the frame of vertex animation (0-1). | # Add at least one <code>[[$sequence]]</code> in which the new bone is animated in its X and Y axes. Its X position defines the blend weight of the vertex animation (0-1), and its Y position defines the frame of vertex animation (0-1). {{bug|Currently the flex driver sequence ''must'' be defined with [[$upaxis|$upaxis Y]]. This doesn't affect the rest of the model.}} | ||
== Example == | == Example == | ||
Line 29: | Line 31: | ||
$boneflexdriver "flexAnimBone" ty "multi_vertex_animation" 0 1 | $boneflexdriver "flexAnimBone" ty "multi_vertex_animation" 0 1 | ||
$upaxis Y // currently flex driver sequences must be Y-up | |||
$sequence "vertex_animation" "flexAnimBone_anim.smd" | $sequence "vertex_animation" "flexAnimBone_anim.smd" | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 03:24, 8 May 2014
Vertex animation is the keyframed animation of individual vertices of a mesh. It's good for very complicated motion like that of cloth, hair, or water. It should not be confused with flex animation, which deforms a mesh from one shape to another by moving its vertices in straight lines.
Vertex animation was added in Source Filmmaker and is also available in Dota 2.
Implementation
- Create a vertex animation in your modelling tool.
- Export a Vertex Cache file. Currently only the official Maya exporter can do this, and only to SMD.
- Add the
vcafile
command to your $model block (see example below).
This produces two flex controllers named after your VCA file. The first defines the blend weight of the animation, the second (prefixed with multi_
) defines the active frame.
A programmer can now control your animation. If you need to map the vertex animation to a standard animation sequence, perform these extra steps:
- Add a new bone which will drive the vertex animation. It doesn't need to have any vertices attached.
- Add two
$boneflexdriver
commands to bind your vertex animation to the new bone (see example). - Add at least one
$sequence
in which the new bone is animated in its X and Y axes. Its X position defines the blend weight of the vertex animation (0-1), and its Y position defines the frame of vertex animation (0-1).
Example
$model "body" "ref_mesh.smd" {
vcafile "vertex_animation.vta"
}
// Optional:
$boneflexdriver "flexAnimBone" tx "vertex_animation" 0 1
$boneflexdriver "flexAnimBone" ty "multi_vertex_animation" 0 1
$upaxis Y // currently flex driver sequences must be Y-up
$sequence "vertex_animation" "flexAnimBone_anim.smd"