Selects a list of objects as shape keys for another object. Selecting shape keys can optionally set up a relation between the target object or cluster and the shape keys, allowing to you fine-tune the shape keys and have those adjustments appear on the target object or cluster. Selecting shape keys creates shape sources but you also have the option of automatically creating a shape clip in the mixer similarly to SaveShapeKey.

With shape animation (sometimes called morphing), you can change the shape of an object over time, animating the geometrical shape of an object using clusters of points (clusters made of polygons or edges are not supported). You can use surface (NURBS) or polygon objects to create shape animation, or even curves and lattices--any geometry that has a static number of points.

In Softimage, all shape animation is done on clusters. This means that you can create different clusters on an object and create shape keys for each of them; or you can treat a complete object as one cluster and save shape keys for it. For more information on clusters in general, see the Softimage user guide.

Scripting Syntax

oReturn = SelectShapeKey( InputObj, SourceObj, [RefMode], [Relational], [ApplyKeys] );

Return Value

Returns the shape key(s) as an XSICollection of ShapeKey objects.


Parameter Type Description
InputObj String List of objects to be deformed.
SourceObj String List of objects that define the shape keys.
RefMode siShapeReferenceMode The reference mode of the shape key created

Default Value: siShapeLocalReferenceMode

Relational Boolean Keep a modelling relation between the created shape and the selected geometry.

Default Value: True

ApplyKeys Boolean Apply the shapes on the mixer given the shape instancing mode.

Default Value: False


VBScript Example

'This example creates 3 spheres: 1 basic sphere and 2 deformed ones.
'The two deformed spheres have a different shape.
'The basic sphere will then use the two deformed spheres as shape
'sources, in order to morph between the two shapes.
'Create 3 sphere, give a different shape to 2 of them.
CreatePrim "Sphere", "MeshSurface"
SetValue "sphere.sphere.radius", 1
Duplicate "sphere", , 2, 1, 1, 0, 0, 1, 0, 1
Translate , -3, 0, -3, siRelative, siView, siObj, siXYZ
SetSelFilter "Point"
AddToSelection "sphere1.pnt[0-8,30-36]", , True
AddToSelection "sphere1.pnt[0,1,16-22,44-50]", , True
Scale , 1.9, 1.9, 1.9, siRelative, siGlobal, siObj, siXYZ
Duplicate "sphere", , 2, 1, 1, 0, 0, 1, 0, 1
Translate , 3, 0, -3, siRelative, siView, siObj, siXYZ
SetSelFilter "Point"
AddToSelection "sphere2.pnt[*]", , True
RemoveFromSelection "sphere2.pnt[0-8,30-36]"
RemoveFromSelection "sphere2.pnt[0,1,16-22,44-50]"
Scale , 2.4, 2.4, 2.4, siRelative, siGlobal, siObj, siXYZ
'Call SelectShapeKey to create 2 shapes based on the 2 deformed spheres
SelectShapeKey "sphere", "sphere1,sphere2",_
siShapeLocalReferenceMode, True, False
'Apply the 2 shape keys
ApplyShapeKey "sphere.polymsh.cls.sphere1_ShapeKey.sphere1_ShapeKey,"_
& "sphere.polymsh.cls.sphere1_ShapeKey.sphere2_ShapeKey", , , 1
ApplyShapeKey "sphere.polymsh.cls.sphere1_ShapeKey.sphere2_ShapeKey", , , 2
'Change the weights in order to see the blend between 
'the 2 shapes on the target sphere
SetValue "Mixer.Mixer_Shape_Track.sphere1_ShapeKey_ClusterClip."_
& "Mixer_Shape_Track2.sphere2_ShapeKey_Clip.actionclip.weight", 1
'Changing the sliders' values of sphere.ShapeWeights will blend 
'from one source shape to the other:
InspectObj "sphere.ShapeWeights"

See Also

SaveShapeKey ApplyShapeKey SelectShapeKey StoreShapeKey