SetNeutralPose

Description

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.

Scripting Syntax

SetNeutralPose( [InputObjs], [Type], [Reset] );

Parameters

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

Examples

JScript Example

//

// 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 : "--------------------------"

See Also

ResetTransform