Votch
09-23-2004, 05:51 PM
Hello Everyone,
I just wrote a symmetry modeling script last night that creates a symmetry modeling rig. The purpose of the rig is to enable any topology transformations and the addition/subtraction of new components. I'm new to XSI and VB so Beware it's not fully tested and could break easily.
Instructions.
Select the right hemisphere of a polygon object and run the script.
The script creates a model named "symModel" containing the Symmetry Rig.
A property panel is created under the "symModel" with basic Symmetry perimeters.
The rig is based on the "Clone" tool technique. Any changes made to the "right side" will carry symmetry to the left side. But any changes made to the "left side" will only affect the "left side" while maintaining symmetry with the "right side"
*note. You will need to manually change the name of "symModel" in order to run the script on a second object. (i could'nt figure out how to set a model variable name in VB)
Let me know what you guys think.
Votch Levi
VFX Artist
CafeFX
here is the script in VB
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'
' Anything Goes Symmetry Modeling
' By Votch Levi (votch@cafefx.com)
' V.02
' 09-23-04
'
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim i,newObj,ltSide,rtSide,merged
mySelection = selection.item(0)
set newObj = Duplicate (mySelection, , 2, 1, 1, 0, 0, 1, 0, 1, , , , , , , , , , , 0)
SetValue mySelection&".visibility.viewvis", False
'DeleteObj mySelection
set ltSide = Clone (newObj,1, 1, 0, 0, 1, 0, 1,1,-1)
set rtSide = Clone (newObj,1, 1, 0, 0, 1, 0, 1,1,1)
ApplyGenOp "MeshMerge",, ""<Side&","&rtSide&"", 3, siPersistentOperation, siKeepGenOpInputs
merged = selection.item(0)
'SetValue ltSide&".visibility.selectability", False
SetValue rtSide&".visibility.selectability", False
SetValue merged&".visibility.selectability", False
SetValue ltSide&".visibility.rendvis", False
SetValue rtSide&".visibility.rendvis", False
SetValue newObj&".visibility.rendvis", False
SetValue ltSide&".visibility.viewvis", False
SetValue rtSide&".visibility.viewvis", False
MakeLocal ltSide&".display", siNodePropagation
SetValue ltSide&".display.staticsel", 0
SetValue ltSide&".display.intsel", 0
SetValue ltSide&".display.playbacksel", 0
SetValue ltSide&".display.staticunselnear", 0
SetValue ltSide&".display.intunselnear", 0
SetValue ltSide&".display.playbackunselnear", 0
SetValue ltSide&".display.staticunselfar", 0
SetValue ltSide&".display.intunselfar", 0
SetValue ltSide&".display.playbackunselfar", 0
MakeLocal rtSide&".display", siNodePropagation
SetValue rtSide&".display.staticsel", 0
SetValue rtSide&".display.intsel", 0
SetValue rtSide&".display.playbacksel", 0
SetValue rtSide&".display.staticunselnear", 0
SetValue rtSide&".display.intunselnear", 0
SetValue rtSide&".display.playbackunselnear", 0
SetValue rtSide&".display.staticunselfar", 0
SetValue rtSide&".display.intunselfar", 0
SetValue rtSide&".display.playbackunselfar", 0
MakeLocal newObj&".display", siNodePropagation
SetValue newObj&".display.staticsel", 0
SetValue newObj&".display.intsel", 0
SetValue newObj&".display.playbacksel", 0
SetValue newObj&".display.staticunselnear", 0
SetValue newObj&".display.intunselnear", 0
SetValue newObj&".display.playbackunselnear", 0
SetValue newObj&".display.staticunselfar", 0
SetValue newObj&".display.intunselfar", 0
SetValue newObj&".display.playbackunselfar", 0
SetValue "Camera.camdisp.mixviewmode,Views.ViewA.UserCamera.camdisp.mixviewmode,Views.ViewA.TopCamera.camdisp.mixviewmode,Views.ViewA.FrontCamera.camdisp.mixviewmode,Views.ViewA.RightCamera.camdisp.mixviewmode,Views.ViewA.SpotCamera.camdisp.mixviewmode,Views.ViewB.UserCamera.camdisp.mixviewmode,Views.ViewB.TopCamera.camdisp.mixviewmode,Views.ViewB.FrontCamera.camdisp.mixviewmode,Views.ViewB.RightCamera.camdisp.mixviewmode,Views.ViewB.SpotCamera.camdisp.mixviewmode,Views.ViewC.UserCamera.camdisp.mixviewmode,Views.ViewC.TopCamera.camdisp.mixviewmode,Views.ViewC.FrontCamera.camdisp.mixviewmode,Views.ViewC.RightCamera.camdisp.mixviewmode,Views.ViewC.SpotCamera.camdisp.mixviewmode,Views.ViewD.UserCamera.camdisp.mixviewmode,Views.ViewD.TopCamera.camdisp.mixviewmode,Views.ViewD.FrontCamera.camdisp.mixviewmode,Views.ViewD.RightCamera.camdisp.mixviewmode,Views.ViewD.SpotCamera.camdisp.mixviewmode", Array(True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True)
DeselectAll
CreateModel ,"symModel"
ParentObj "symModel", rtSide
ParentObj "symModel", ltSide
ParentObj "symModel", newObj
ParentObj "symModel", merged
SelectObj "symModel"
AddProp "Custom_parameter_list", , , "Symmetry_Controls"
SIAddCustomParameter "symModel.Symmetry_Controls", "Blend_Tolerance", siDouble, .5, 0, 5, , 5, 0, 2
SIAddCustomParameter "symModel.Symmetry_Controls", "Blend", siBool, 1, 0, 1, , 5, 0, 1
SIAddCustomParameter "symModel.Symmetry_Controls", "Show_Left_Cage", siBool, 0, 0, 1, , 5, 0, 1
SIAddCustomParameter "symModel.Symmetry_Controls", "Show_Right_Cage", siBool, 1, 0, 1, , 5, 0, 1
SIAddCustomParameter "symModel.Symmetry_Controls", "Cage_SubD_Level", siInt4, 0, 0, 7, , 5, 0, 0
SIAddCustomParameter "symModel.Symmetry_Controls", "Merge_SubD_Level", siInt4, 0, 0, 7, , 5, 0, 0
SetExpr "symModel."&merged&".polymsh.mergemesh.tolerance", "symModel.Symmetry_Controls.Blend_Tolerance"
SetExpr "symModel."&merged&".polymsh.mergemesh.blend", "symModel.Symmetry_Controls.Blend"
SetExpr ltSide&".visibility.viewvis", "symModel.Symmetry_Controls.Show_Left_Cage"
SetExpr ltSide&".visibility.rendvis", "symModel.Symmetry_Controls.Show_Left_Cage"
SetExpr ltSide&".visibility.selectability", "symModel.Symmetry_Controls.Hide_Left_Cage"
SetExpr newObj&".visibility.viewvis", "symModel.Symmetry_Controls.Show_Right_Cage"
MakeLocal rtSide&".geomapprox", siDefaultPropagation
MakeLocal ltSide&".geomapprox", siDefaultPropagation
MakeLocal newObj&".geomapprox", siDefaultPropagation
SetExpr rtSide&".geomapprox.gapproxmosl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr rtSide&".geomapprox.gapproxmordrsl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr ltSide&".geomapprox.gapproxmosl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr ltSide&".geomapprox.gapproxmordrsl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr newObj&".geomapprox.gapproxmosl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr newObj&".geomapprox.gapproxmordrsl", "symModel.Symmetry_Controls.Cage_SubD_Level"
SetExpr "symModel."&merged&".geomapprox.gapproxmosl", "symModel.Symmetry_Controls.Merge_SubD_Level"
SetExpr "symModel."&merged&".geomapprox.gapproxmordrsl", "symModel.Symmetry_Controls.Merge_SubD_Level"
SelectObj newObj
InspectObj "SymModel.Symmetry_Controls"
SetDisplayMode "Camera", "shaded"
vBulletin v3.0.5, Copyright ©2000-2013, Jelsoft Enterprises Ltd.