CopyAnimationAcrossGenerator

Introduced

v5.0

Description

Copies the shape and envelope animation from the generator operator inputs to the generated object. This includes the installation of the envelope and shape combiner operators on the generated primitive, and the copy of shape animation (tracks and clips).

If the generator is connected over the modeling marker, it will be reconnected automatically in modeling construction mode.

If none of the input primitives' envelope weight properties and shape key properties were transfered before the command was executed, the command will automatically transfer them all before copying the animation. However, if only some of input primitives' envelope weight properties or shape key properties were transfered before the command was executed, then the decision to transfer or not the remaining ones will depend on the TransferRemainingShapesAndEnvelopes argument.

Scripting Syntax

CopyAnimationAcrossGenerator( Operator, [ReadPosition], [TransferRemainingShapesAndEnvelopes] );

Parameters

Parameter Type Description
Operator String Specifies the generator operator to modify
ReadPosition siConstructionMode Specifies which construction stack to read from.

Default Value: siConstructionModeModeling

TransferRemainingShapesAndEnvelopes Integer What to do with any transfered shapes and/or envelope weight properties when the command will reconnect the generator over the primary shape/animation construction mode. It is usually preferred to undo these transfers, since otherwise there could be a double deformation (the envelope is applied to the input and the generated object).

Default Value: 2

Possible Values:

Description:

0 Yes
1 No
2 Prompt the user

Examples

JScript Example

/*

	This example creates 2 spheres with animation (shapes and envelopes), merges them and manually transfers 

	only one of the envelopes. Then, using CopyAnimationAcrossGenerator, it copies the animation with 

	TransferRemainingShapesAndEnvelopes = 1, and then TransferRemainingShapesAndEnvelopes = 0.

*/

NewScene(null, null);

//Create an enveloped sphere that has an applied shape key

Sphere1 = CreatePrim("Sphere", "MeshSurface", null, null);

NullPrim1 = GetPrim("Null", null, null, null);

SetSelFilter("Vertex");

SelectGeometryComponents("sphere.pnt[44-50]");

Translate(null, 0, 0, -4.83347471775276, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 1);

StoreShapeKey("sphere.pnt[44-50]", "", siShapeObjectReferenceMode, 1, 0, 0, siShapeContentPrimaryShape);

ApplyFlexEnv(Sphere1 + ";" + NullPrim1, false, 2);

SelectObj(NullPrim1, null, true);

Translate(null, -3.20599401067148, 0, 0, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 0);

//Create a second enveloped sphere

Sphere2 = CreatePrim("Sphere", "MeshSurface", null, null);

NullPrim2 = GetPrim("Null", null, null, null);

ApplyFlexEnv(Sphere2 + ";" + NullPrim2, false, 2);

SelectObj(NullPrim2, null, null);

Translate(null, 6.77561899920499, 0, -1.00435838290967, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 2);

//Generate a new object from the merge of the two spheres

SetValue("Context.constructionmode", 0, null);

ApplyGenOp("MeshMerge", "", Sphere1 + "," + Sphere2, 3, siPersistentOperation, siKeepGenOpInputs, null);

Translate(null, 5.54342092599887, 0, 8.39090426346892, siRelative, siView, siObj, siXYZ, null, null, null, null, null, null, null, null, null, 2);

//Transfer manually only one of the envelope weight props of the input spheres

TransferClusterPropertiesAcrossGenOp("polymsh.polymsh.mergemesh", "polymsh", "sphere.polymsh.cls.EnvelopWeightCls.Envelope_Weights", "Envelope_Weights", true);

//Copy the animation without transfering the envelope weight props that were not transfered

CopyAnimationAcrossGenerator("polymsh.polymsh.mergemesh", 0, 1 /*don't transfer remaining envelopes*/);

//Copy the animation and transfer the envelope weight props that were not transfered

CopyAnimationAcrossGenerator("polymsh.polymsh.mergemesh", 0, 0 /*transfer remaining envelopes*/);

See Also

TransferPropertiesAcrossGenOp TransferPropertiesAcrossGenOp TransferClusterPropertiesAcrossGenOp TransferAllPropertiesAcrossGenOp