Copies all or parts of the current local transform to the
neutral pose transform. It also recalculates the local transform
based on the new neutral pose. The neutral pose acts like an
intermediate parent between an object and its real parent. Neutral
pose transform values are relative the parent object.
An object's neutral pose is the pose where the local transform is
identity. In Softimage the default neutral pose is the object's
parent pose. Local animation is relative the object's neutral
pose.
Use ResetTransform to reset an
object to its neutral pose.
SetNeutralPose( [InputObjs], [Type], [Reset] ); |
Parameter | Type | Description |
---|---|---|
InputObjs | String | List of objects or
components.
Default Value: Selected elements |
Type | siTransformFilter | Specifies the type of transformation to reset
Default Value: siSRT |
Reset | Boolean | False = Set the neutral pose, True = Reset the neutral pose.
Default Value: False |
// // This script creates a cone, sets a pose, copies the local transform // into the neutral pose (which will zero-out the local transform), then // resets the neutral pose (which will restore the local transform). // var oMyCone = CreatePrim("Cone", "MeshSurface") Translate(oMyCone, 1,2,3,siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null); Rotate(oMyCone, 10, 20, 30, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null); LogMessage("Original"); LogPosAndRot(oMyCone); //set the current pose as the neutral pose SetNeutralPose(oMyCone, siSRT, false); LogMessage("After setting neutral pose"); LogPosAndRot(oMyCone); //reset the neutral pose SetNeutralPose(oMyCone, siSRT, true); LogMessage("After resetting neutral pose"); LogPosAndRot(oMyCone); //--------------------------------------------// // log the local position and rotation, // // and the neutral pose position and rotation // //--------------------------------------------// function LogPosAndRot( in_obj ) { LogMessage("Local Position:" + " (" + GetValue(in_obj+ ".kine.local.posx") + " ," + GetValue(in_obj+ ".kine.local.posy") + " ," + GetValue(in_obj+ ".kine.local.posz") + ")"); LogMessage("Local Rotation:" + " (" + GetValue(in_obj+ ".kine.local.rotx") + " ," + GetValue(in_obj+ ".kine.local.roty") + " ," + GetValue(in_obj+ ".kine.local.rotz") + ")"); LogMessage("Neutral Position:" + " (" + GetValue(in_obj+ ".kine.local.nposx") + " ," + GetValue(in_obj+ ".kine.local.nposy") + " ," + GetValue(in_obj+ ".kine.local.nposz") + ")"); LogMessage("Neutral Rotation:" + " (" + GetValue(in_obj+ ".kine.local.nrotx") + " ," + GetValue(in_obj+ ".kine.local.nroty") + " ," + GetValue(in_obj+ ".kine.local.nrotz") + ")"); LogMessage ("--------------------------"); } // // Output from this script: // //INFO : "Original" //INFO : "Local Position: (1 ,2 ,3)" //INFO : "Local Rotation: (10 ,20 ,30)" //INFO : "Neutral Position: (0 ,0 ,0)" //INFO : "Neutral Rotation: (0 ,0 ,0)" //INFO : "--------------------------" //INFO : "After setting neutral pose" //INFO : "Local Position: (0 ,0 ,0)" //INFO : "Local Rotation: (0 ,0 ,0)" //INFO : "Neutral Position: (1 ,2 ,3)" //INFO : "Neutral Rotation: (10 ,20 ,30)" //INFO : "--------------------------" //INFO : "After resetting neutral pose" //INFO : "Local Position: (1 ,2 ,3)" //INFO : "Local Rotation: (10 ,20 ,30)" //INFO : "Neutral Position: (0 ,0 ,0)" //INFO : "Neutral Rotation: (0 ,0 ,0)" //INFO : "--------------------------" |