Elements (ClusterProperty) *

Description

Returns a ClusterElementCollection containing cluster property elements.

C# Syntax

// get accessor
ClusterElementCollection ClusterProperty.get_Elements();

// set accessor
ClusterProperty.set_Elements( Object pVal );

Examples

1. VBScript Example

'VBScript example demonstrating how to access
'a Vertex Color Cluster Property

set oRoot = application.activeproject.activescene.root
set oObj = oRoot.addgeometry( "Cube", "MeshSurface" )

CreateVertexColorSupport ,,oObj

set oGeom = oObj.activeprimitive.geometry

set oSamplePointClusters = oGeom.clusters.filter( "sample" )

' find vertexcolor for list of sample points
set oVertexColor=Nothing

for each oSamplePointCluster in oSamplePointClusters 

   set  oVertexColor = oSamplePointCluster.properties.find("vertexcolor")
   if typename( oVertexColor  ) <> "Nothing" then
       exit for
   end if
next

aClusterToGeometryMapping = oSamplePointCluster.Elements.Array
aRGBA  = oVertexColor.Elements.Array

'Print out the first 10 elements of the ClusterProperty
'(See go though the whole array use "0 to ubound(aRGBA,2)" )
for index = 0 to 9 
   logmessage "Sample [" &_
       aClusterToGeometryMapping( index ) &_
       "] has RGBA(" & _
       round( aRGBA(0,iIndex), 2) & "," & _
       round( aRGBA(1,iIndex), 2) & "," & _
       round( aRGBA(2,iIndex), 2) & "," & _
       round( aRGBA(3,iIndex), 2) & ")"
next

'Results of this script:
'INFO : "Sample [0] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [1] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [2] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [3] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [4] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [5] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [6] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [7] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [8] has RGBA(0.75,0.75,0.75,1)"
'INFO : "Sample [9] has RGBA(0.75,0.75,0.75,1)"

2. VBScript Example

'vbscript example that randomizes the length of hairs on a sphere
'by modifying a weight map cluster property

option explicit

'Step 1 - Create a little scene

newscene ,false
dim oObj, oObjVertexCluster, oWM, oWMOnHair, oHair

set oObj = ActiveSceneRoot.AddGeometry("Grid","MeshSurface")

SetValue oObj & ".polymsh.geom.subdivu", 4
SetValue oObj & ".polymsh.geom.subdivv", 1

ApplyHairOp oObj.Name
set oHair = oObj.Children( "Hair" )



'Step 2 - Create the weight map and connect it to the hair

set oObjVertexCluster= oObj.ActivePrimitive.Geometry.AddCluster( siVertexCluster, "MyCluster" ) 

'Create the weightmap on the sphere
CreateWeightMap , oObjVertexCluster.FullName, "MyWeightMap"
set oWM = oObjVertexCluster.Properties( "MyWeightMap" )

PropertyTransfer oHair, oWM.FullName

'Get pointer to the weight map that has been transfered
set oWMOnHair = oHair.ActivePrimitive.Geometry.Clusters( "MyCluster" ).Properties( "MyWeightMap" )

'Connect the weightmap to the Cut parameter.  The tricky thing is specifying the
'three different objects that will be connected - the original weight map, the cut parameter
'and transfered weight map on the qhair cluster.  However once the relationship is
'established we just work with the original weight map
ApplyOp "MapCompOp",  oWM.FullName & ";" & oHair.Name & ".hair.Cut;" & oWMOnHair


'Step 3 - set random values in the original weight map

dim oWMElements
set oWMElements = oWM.Elements  

dim Cnt
Cnt = oWMElements.count

'Get an array of all the weights (it has dimensions 1 x NumberElements)
dim ElArray
ElArray = oWMElements.Array

'We can adjust the values in this array as we see fit
          Randomize

dim i
for i = 0 to Cnt - 1
   'Pick a number between 0 and 1
   ElArray( 0, i ) = rnd

   'Tip: To Pick a random number between 0.2 and 1.0
   'the forumula would be 0.2 + (0.8 * rnd ) instead
next

'Set the values back
oWMElements.Array = ElArray

'If you render the hair now you will see that the lengths
'have been randomized


Autodesk Softimage v7.5