'****************************************************** '* script zum generieren eines spline deform systems * '* by marc egli * '* me-design.ch * '* e-mail: m.egli@me-design.ch * '* © 23.11.2006 * '****************************************************** '************************************************************************************************* sub createCluster(clsSize, nbDef) On Error GoTo 0 dim i dim j dim k j = -1 k = -1 dim kurve dim crvClosed dim nbKnots 'speichert die anzahl der points einer Kurve dim prozent 'wert f?r den path constrain dim nullname PickElement "curve", "Select Curve", "Select Curve", kurve 'ParameterSet Creation AddProp "Custom_parameter_list", , , "Deformer_Weight" SIAddCustomParameter kurve, "weight", siDouble, 1, 0, 1, , 5, 0, 1 SIAddCustomParameter kurve, "size", siDouble, clsSize, 0, clsSize, , 5, 0, clsSize 'einfärben der Curve MakeLocal kurve & ".display", siDefaultPropagation SetValue kurve & ".display.wirecol", 14 'Generieren der Cluster With Center 'überprüft ob kurve geschlossen ist set oObject = kurve set oNurbsCurveList = oObject.ActivePrimitive.Geometry GetNumberOfKnots kurve, nbKnots logmessage kurve & "." & nbKnots if oNurbsCurveList.Closed then logmessage "NURBS curves closed" nbKnots = nbKnots else nbKnots = nbKnots+2 end if logmessage nbKnots for i = 1 To nbKnots j = j + 1 SelectGeometryComponents kurve & ".pnt" & "[" & j & "]" CreateClusterCenterWithNull kurve & ".pnt" & "[" & j & "]", 0 CutObj 'SelectObj kurve & "_Point_ClsCtr", , True 'AddToSelection kurve &"_Point" & j & "_ClsCtr", , True if j = 0 Then SetValue kurve & "_Point" & "_ClsCtr.null.primary_icon", 4 CopyPaste kurve & ".Deformer_Weight.size", , kurve & "_Point" & "_ClsCtr.null.size", 1 'SetValue kurve & "_Point" & "_ClsCtr.null.size", clsSize 'umfärben MakeLocal kurve & "_Point" & "_ClsCtr.display", siDefaultPropagation SetValue kurve & "_Point" & "_ClsCtr.display.wirecol", 1008 else SetValue kurve & "_Point" & j & "_ClsCtr.null.primary_icon", 4 CopyPaste kurve & ".Deformer_Weight.size", , kurve & "_Point" & j & "_ClsCtr.null.size", 1 'SetValue kurve & "_Point" & j & "_ClsCtr.null.size", clsSize 'umfärben MakeLocal kurve & "_Point" & j & "_ClsCtr.display", siDefaultPropagation SetValue kurve & "_Point" & j & "_ClsCtr.display.wirecol", 1008 end if next 'Generieren der Deformers logmessage "generating deformers" CreateGroup SetValue "Group.Name", "deformers_" & kurve for h = 1 To nbDef k = k + 1 logmessage h GetPrim "Null" 'Wie heisst das aktuelle Objekt Set oReturn = GetValue("SelectionList") For Each r In oReturn 'LogMessage r & " is an " & r.Type nullname = r Next prozent = 100 / nbDef * h 'umbenennen der nulls SetValue nullname & ".Name", "deformer_null_" & kurve & "_" & k 'zur gruppe hinzuf?gen SIAddToGroup "deformers_" & kurve, "deformer_null_" & kurve & "_" & k if k = 0 Then 'SetValue "null.Name", "deformer_" & kurve ApplyCns "Path", "deformer_null_" & kurve & "_" & k, kurve 'blend weight verbinden mit custom parameter CopyPaste kurve & ".Deformer_Weight.weight", , "deformer_null_" & kurve & "_" & k & ".kine.pathcns.blendweight", 1 CopyPaste kurve & ".Deformer_Weight.size", , "deformer_null_" & kurve & "_" & k & ".null.size", 1 SetValue "deformer_null_" & kurve & "_" & k & ".kine.pathcns.perc", prozent SetValue "deformer_null_" & kurve & "_" & k & ".null.primary_icon", 7 'SetValue "deformer_null_" & kurve & "_" & k & ".null.size", clsSize else 'SetValue "null" & k & ".Name", "deformer_" & kurve & k ApplyCns "Path", "deformer_null_" & kurve & "_" & k, kurve CopyPaste kurve & ".Deformer_Weight.weight", , "deformer_null_" & kurve & "_" & k & ".kine.pathcns.blendweight", 1 CopyPaste kurve & ".Deformer_Weight.size", , "deformer_null_" & kurve & "_" & k & ".null.size", 1 SetValue "deformer_null_" & kurve & "_" & k & ".kine.pathcns.perc", prozent SetValue "deformer_null_" & kurve & "_" & k & ".null.primary_icon", 7 'SetValue "deformer_null_" & kurve & "_" & k & ".null.size", clsSize end if next SelectObj kurve & ".Deformer_Weight" InspectObj 'Deformer_Weight end sub '************************************************************************************************* createCluster 2, 25 'groesse der clusters angeben und Anzahl der Deformers 'first number defines the size of the Clusters, second defines the 'numbers of clusters