The snapToSystem command positions and/orients a module based on a coordinate system defined by the positions of three selected nodes:
- The first selected node is always the origin
- The second selected node defines the X axis
- The third selected node defines the Y axis
- Z is normal to the plane XY.
This command is similar to snapToRigid with some important differences:
- snapToSystem requires exactly three nodes, snapToRigid may use three or more nodes.
- snapToSystem defines its coordinate system at each frame, whereas snapToRigid uses the entire frame range to establish the best coordinate system given the available data.
Use snapToSystem when you need to constrain a module to a location defined by a local coordinate system that is re-defined for each frame. If neither option for all time or ranges is used, then the operation affects the current frame only.
By default the offsets are defined as a percentage of the distance from the first selected module to the second selected module. Alternatively, the
-absolute option can be used to define the offset in millimeters.
Use of the
-positionOnly option prevents rigid body rotations from being applied to the target module. This option can be useful when you want to snap an object, like a baseball bat to a new location while maintaining the rotational orientation of the bat. If you want to aim an axis other than X of the module being snapped at the X axis, see snapToSystemAlign.
|float||yes||Specifies the position offset to apply to the object being snapped on the Z axis of the space defined by the selected markers.|
|float||yes||Specifies the position offset to apply to the object being snapped on the Y axis of the space defined by the selected markers.|
|float||yes||Specifies the position offset to apply to the object being snapped on the X axis of the space defined by the selected markers.|
|string||yes||Name of the node that will be snapped.|
|Name||Flag arguments||Argument type||Exclusive to||Comments|
|0||—||ranges||Performs the snap over the entire animation range.|
|0||—||rotationOnly||Only modifies the position of the module being snapped.|
Only modifies the rotation of the module being snapped.
|0||—||—||Specifies the offset is in mm rather then a percentage of the distance between the first two modules that define the system.|
|0||—||allTime||Performs the snap over the selected time ranges.|
// This sequence of commands creates a new Marker module
// and snap its position over all time to a position offset the
// indicated number of millimeters ( -50 in X, 50 in Y, and 50 in Z)
// calculated from the origin of a coordinate system defined by the
// animation of LFWT, LMWT, and LBWT. The offset is applied in terms
// of the coordinate system defined at each frame.
// The coordinate system is then expressed in rotations relative to
// world space and applied to the target module, snapSystemTest.
create Marker snapSystemTest;
select LFWT LMWT LBWT;
snapToSystem -allTime -absolute snapSystemTest -50 50 50;