ChangeGeneratorInputReadPosition
 
 
 

ChangeGeneratorInputReadPosition

Introduced

v5.0

Description

Changes the stack position at which the generator operator reads from its inputs. The generator can read above any of the construction mode markers.

Scripting Syntax

ChangeGeneratorInputReadPosition( Operator, ReadPosition, [UnTransferShapesAndEnvelopes] );

Parameters

Parameter Type Description
Operator String Specifies the generator operator to modify
ReadPosition siConstructionMode Position on which the generator will reconnect. Can be above any construction mode markers.
UnTransferShapesAndEnvelopes 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 a generator operator and then moves
        its read positions across various construction modes.
*/
NewScene(null, null);
Sphere = CreatePrim("Sphere", "MeshSurface", null, null);
//Create a twist operator in modeling construction mode
TwistOp = ApplyOp("Twist", Sphere, 3, siPersistentOperation, null, 0);
//Envelope the shere with a Null (animation construction mode),
//and move the Null so we can see the difference:
NullObject = GetPrim("Null", null, null, null);
EnvOp = ApplyFlexEnv(Sphere + ";" + NullObject, false, 2);
Translate(NullObject, 4, 0, 0, siRelative, siView, siObj, siXYZ, null, null, null, null, 
        null, null, null, null, null, 0);
//Generate a subdivided sphere from this one
MeshSubdivideWithCenter(null, "sphere", null, siPersistentOperation, siKeepGenOpInputs);
GeneratorOp = GetValue("polymsh.polymsh.MeshSubdivideWithCenter");
logmessage( "Construction region after generator creation: " + 
                        GetGeneratorInputReadPosition( GeneratorOp ) );
//Currently, the generated sphere inherits from the animated (result)
//position, since by default it connects in secondary shape construction mode.
//We will now move the read point over the modeling marker so it has
//has twisted but not enveloped positions:
ChangeGeneratorInputReadPosition( GeneratorOp, siConstructionModeModeling, 0 );
logmessage( "Construction region after moving in modeling: " + 
                        GetGeneratorInputReadPosition( GeneratorOp ) );
//Transfer the envelope operator onto the generated sphere:
TransferClusterPropertiesAcrossGenOp("polymsh.polymsh.MeshSubdivideWithCenter", "polymsh", 
        "sphere.polymsh.cls.EnvelopWeightCls.Envelope_Weights", "Envelope_Weights", true);
//Move the read position to animation mode, but specify to untransfer
//the envelope in order to avoid the double deformation:
ChangeGeneratorInputReadPosition( GeneratorOp, siConstructionModeSecondaryShape, 0 );
logmessage( "Construction region after moving back in secondary shape: " + 
                        GetGeneratorInputReadPosition( GeneratorOp ) );
//Output:
//      INFO : Construction region after generator creation: 3
//      INFO : Construction region after moving in modeling: 0
//      INFO : Construction region after moving back in secondary shape: 3

See Also

GetGeneratorInputReadPosition MoveOperator MoveOperatorBefore MoveOperatorAfter