When you select the Animate tab, a timeline window will show up at the bottom of your screen.
When you select the Animate tab, a timeline window will show up at the bottom of your screen.
...
@@ -32,7 +28,7 @@ Check `Draw Splines` to visualize the spline along which objects are animated.
...
@@ -32,7 +28,7 @@ Check `Draw Splines` to visualize the spline along which objects are animated.
`Add Frames` inserts 90 empty frames into the timeline. `Crop End` deletes frames from the selected location to the end of the timeline.
`Add Frames` inserts 90 empty frames into the timeline. `Crop End` deletes frames from the selected location to the end of the timeline.
### Posing
### Posing
Once you have [rigged](./rig) an object with a skeleton, it can now be posed by selecting a joint and changing its pose i.e., rotating the joint. This is called Forward Kinematics.
Once you have [rigged](/docs/guide/rig.md) an object with a skeleton, it can now be posed by selecting a joint and changing its pose i.e., rotating the joint. This is called Forward Kinematics.
Joint poses can also be indirectly changed by using the IK (Inverse Kinematics) handles to provide target positions.
Joint poses can also be indirectly changed by using the IK (Inverse Kinematics) handles to provide target positions.
Note that IK handles need to be explicitly enabled using the checkbox.
Note that IK handles need to be explicitly enabled using the checkbox.
@@ -21,6 +15,8 @@ listed below for each mode. Note that the input scheme may change depending on
...
@@ -21,6 +15,8 @@ listed below for each mode. Note that the input scheme may change depending on
the mode. For instance, key commands in `Model` mode may result in
the mode. For instance, key commands in `Model` mode may result in
different actions in `Render` mode.
different actions in `Render` mode.
For the detailed documentation, see the guides of each mode: [Layout Mode](/docs/guide/layout.md), [Model Mode](/docs/guide/model.md), [Render Mode](/docs/guide/render.md), [Rigging Mode](/docs/guide/rig.md), [Animate Mode](/docs/guide/animate.md), [Simulate Mode](/docs/guide/simulate.md).
The current mode is displayed as the "pressed" button in the menu bar, and available actions
The current mode is displayed as the "pressed" button in the menu bar, and available actions
are are detailed in the left sidebar. Note that some actions are only available when a model/element/etc. is selected.
are are detailed in the left sidebar. Note that some actions are only available when a model/element/etc. is selected.
Note that rigging only uses extents of the bone for skeleton setup, joint pose does not influence the skeleton. Once rigging is done, the object can be posed by changing joint rotations in the [animate](./animate) mode.
Note that rigging only uses extents of the bone for skeleton setup, joint pose does not influence the skeleton. Once rigging is done, the object can be posed by changing joint rotations in the [animate](/docs/guide/animate.md) mode.
## Inverse Kinematics
## Inverse Kinematics
Instead of computing the positions of the bones from the joint poses (forward kinematics), in inverse kinematics, joint positions are computed from target positions.
Instead of computing the positions of the bones from the joint poses (forward kinematics), in inverse kinematics, joint positions are computed from target positions.
To associate a target position with a joint, select `Add IK` and edit the target position. Multiple target positions can be associated with the same joint but targets need to be explicitly enabled using the checkbox.
To associate a target position with a joint, select `Add IK` and edit the target position. Multiple target positions can be associated with the same joint but targets need to be explicitly enabled using the checkbox.
In the [animate](./animate) mode, once inverse kinematics is implemented, joint rotation(pose) is updated based on the enabled IK handles.
In the [animate](/docs/guide/animate.md) mode, once inverse kinematics is implemented, joint rotation(pose) is updated based on the enabled IK handles.
@@ -94,8 +94,6 @@ Finally, the **boundary** of the surface (e.g., the ankles and waist of a pair o
...
@@ -94,8 +94,6 @@ Finally, the **boundary** of the surface (e.g., the ankles and waist of a pair o
Face::is_boundary()
Face::is_boundary()
Halfedge::is_boundary()
Halfedge::is_boundary()
TODO: explicitly save a boundary vertices list??? https://stanford-cs248.github.io/Cardinal3D/meshedit/halfedge
These methods return true if and only if the element is associated with a boundary face. Boundary faces are stored in the usual face list, i.e., they will show up when iterating over faces. You can disambiguate faces and boundaries using the above tests.
These methods return true if and only if the element is associated with a boundary face. Boundary faces are stored in the usual face list, i.e., they will show up when iterating over faces. You can disambiguate faces and boundaries using the above tests.
The figure below should help to further explain the behavior of `Halfedge_Mesh` for surfaces with boundary:
The figure below should help to further explain the behavior of `Halfedge_Mesh` for surfaces with boundary: