Files
gtav-src/tools_ng/wildwest/script/3dsMax/Characters/Rigging/giant/addBoneLengths.ms
T
2025-09-29 00:52:08 +02:00

240 lines
6.4 KiB
Plaintext
Executable File

markerArray = #(
"MARKER_CONTAINER",
"Marker_Pelvis001",
"Marker_R_Thigh",
"Marker_R_Calf",
"Marker_R_Foot",
"Marker_R_Toe0",
"Marker_R_Toe0Nub",
"Marker_L_Thigh",
"Marker_L_Calf",
"Marker_L_Foot",
"Marker_L_Toe0",
"Marker_L_Toe0Nub",
"Marker_Spine0",
"Marker_Spine1",
"Marker_Spine2",
"Marker_Spine3",
"Marker_Neck1",
"Marker_Head",
"Marker_HeadNub",
"Marker_R_Clavicle",
"Marker_R_UpperArm",
"Marker_R_Forearm",
"Marker_R_Hand",
"Marker_R_Finger00",
"Marker_R_Finger01",
"Marker_R_Finger02",
"Marker_R_Finger0Nub",
"Marker_R_Finger40",
"Marker_R_Finger41",
"Marker_R_Finger42",
"Marker_R_Finger4Nub",
"Marker_R_Finger30",
"Marker_R_Finger31",
"Marker_R_Finger32",
"Marker_R_Finger3Nub",
"Marker_R_Finger20",
"Marker_R_Finger21",
"Marker_R_Finger22",
"Marker_R_Finger2Nub",
"Marker_R_Finger10",
"Marker_R_Finger11",
"Marker_R_Finger12",
"Marker_R_Finger1Nub",
"Marker_R_HandEND",
"Marker_L_Clavicle",
"Marker_L_UpperArm",
"Marker_L_Forearm",
"Marker_L_Hand",
"Marker_L_Finger10",
"Marker_L_Finger11",
"Marker_L_Finger12",
"Marker_L_Finger1Nub",
"Marker_L_Finger20",
"Marker_L_Finger21",
"Marker_L_Finger22",
"Marker_L_Finger2Nub",
"Marker_L_Finger00",
"Marker_L_Finger01",
"Marker_L_Finger02",
"Marker_L_Finger0Nub",
"Marker_L_Finger30",
"Marker_L_Finger31",
"Marker_L_Finger32",
"Marker_L_Finger3Nub",
"Marker_L_Finger40",
"Marker_L_Finger41",
"Marker_L_Finger42",
"Marker_L_Finger4Nub",
"Marker_L_HandEND",
"Marker_PelvisEND"
)
markerArrayParents = #(
"Null",
"Null",
"Null",
"Marker_R_Thigh",
"Marker_R_Calf",
"Marker_R_Foot",
"Marker_R_Toe0",
"Null",
"Marker_L_Thigh",
"Marker_L_Calf",
"Marker_L_Foot",
"Marker_L_Toe0",
"Null",
"Marker_Spine0",
"Marker_Spine1",
"Marker_Spine2",
"Marker_Spine3",
"Marker_Neck1",
"Marker_Head",
"Marker_Spine3",
"Marker_R_Clavicle",
"Marker_R_UpperArm",
"Marker_R_Forearm",
"Marker_R_Hand",
"Marker_R_Finger00",
"Marker_R_Finger01",
"Marker_R_Finger02",
"Marker_R_Hand",
"Marker_R_Finger40",
"Marker_R_Finger41",
"Marker_R_Finger42",
"Marker_R_Hand",
"Marker_R_Finger30",
"Marker_R_Finger31",
"Marker_R_Finger32",
"Marker_R_Hand",
"Marker_R_Finger20",
"Marker_R_Finger21",
"Marker_R_Finger22",
"Marker_R_Hand",
"Marker_R_Finger10",
"Marker_R_Finger11",
"Marker_R_Finger12",
"Null",
"Marker_Spine3",
"Marker_L_Clavicle",
"Marker_L_UpperArm",
"Marker_L_Forearm",
"Marker_L_Hand",
"Marker_L_Finger10",
"Marker_L_Finger11",
"Marker_L_Finger12",
"Marker_L_Hand",
"Marker_L_Finger20",
"Marker_L_Finger21",
"Marker_L_Finger22",
"Marker_L_Hand",
"Marker_L_Finger00",
"Marker_L_Finger01",
"Marker_L_Finger02",
"Marker_L_Hand",
"Marker_L_Finger30",
"Marker_L_Finger31",
"Marker_L_Finger32",
"Marker_L_Hand",
"Marker_L_Finger40",
"Marker_L_Finger41",
"Marker_L_Finger42",
"Null",
"Null"
)
fn createLengthExpression currObj TapeObj currChild =
(
-- print "Starting to create expressions..."
childName = (substring currChild.name 8 200 )
fcStr = ("$"+currObj.name+".modifiers[#Attribute_Holder]."+childName+".uiBoneLength.controller") --the path to the controller itself
newfcStr = execute fcStr
SVN = ("Length")
drvStr = ("$"+TapeObj.name+".length.controller") --path to controller of driver
driverStr = execute drvStr
newfcStr.AddScalarTarget SVN driverStr --add scalar pointing to the translation of the joystick object
newfcStr.SetExpression (SVN) --set the expression here
)
fn addCustomAttributes obj currObj = --this will add custom attributes to the imagePLaneRootNode to allow the user to slide them into and out of a view to help clipping
(
-- select $imagePlaneRootNode
currentJoystick = obj
print ("Starting to add attributes to "+currentJoystick.name)
select currentJoystick
if currentJoystick != undefined do
(
if currentJoystick.modifiers[#Attribute_Holder] == undefined do
(
select currentJoystick
modPanel.addModToSelection (EmptyModifier ()) ui:on
)
facialMultipliersCA = (currentJoystick.name +"CA")
-- rollName = ("Adjustments")
objNameStr = (substring currObj.name 8 200)
rollName = (objNameStr)
uiName = ("uiBoneLength") --name as seen inside the code and track view
displayName = ("BoneLength") --name as seen in the ui
posVal = "1000"
negval = "-1000"
rolloutCreation = (facialMultipliersCA +" = attributes "+rollName +"\n"+"(" +"\n"+"\t" +"parameters main rollout:params"+"\n"+"\t"+"(" +"\n" +"\t" +"\t" +uiName +" type:#float ui:" +uiName +" default:" +"0.0" +"\n" +"\t"+")" +"\n" +"\t" +"rollout params "+" \"" +rollName+" \"" +"\n" +"\t" +"(" +"\n" +"\t"+"\t" +"spinner "+uiName +" \"" +displayName+"\"" +" "+"fieldwidth:40 range:[-100,100,1] type:#float" +"\n" +"\t" +")" +"\n" +")"+"\n" +"\n" +"\t" +"custAttributes.add $" +currentJoystick.name+".modifiers[#'Attribute holder'] "+facialMultipliersCA)
execute rolloutCreation
--now add bezier floats controllers to these attributes
-- cont1 = ("$"+currentJoystick.name+".modifiers[#Attribute_Holder]."+rollName+"."+uiName+".controller = bezier_float()")
cont1 = ("$"+currentJoystick.name+".modifiers[#Attribute_Holder]."+rollName+"."+uiName+".controller = Float_Expression ()")
execute cont1
--- ok now the attributes have been created we need to hook these attributes up to the position of the image planes
print ("Custom attrs added to "+currentjoystick.name)
)
)
fn addBoneLengths =
(
for obj = 1 to markerArray.Count do
(
if markerArrayParents[obj] != "Null" do
(
currPar = getNodeByName markerArrayParents[obj]
currObj = getNodeByName markerArray[obj]
pP = currPar.position
cP = currObj.position
thisTape = Tape length:100 pos:pP isSelected:on target:(Targetobject transform:(matrix3 [1,0,0] [0,1,0] [0,0,1] cP))
thisTape.name = (currPar.name+"_Tape")
thisTarget = thisTape.target
thisTarget.name = (currPar.name+"_TapeTarget")
thisTape.parent = currPar
thisTarget.parent = currObj
thisTape.length.controller = bezier_float ()
addCustomAttributes currPar currObj
--now we need to get the length of this to drive the attribute we added.
createLengthExpression currPar thisTape currObj
)
)
)
addBoneLengths()