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

315 lines
6.3 KiB
Plaintext
Executable File

boneArray = #(
"SKEL_R_Finger02",
"SKEL_R_Finger01",
"SKEL_R_Finger00",
"SKEL_R_Finger12",
"SKEL_R_Finger11",
"SKEL_R_Finger10",
"SKEL_R_Finger22",
"SKEL_R_Finger21",
"SKEL_R_Finger20",
"SKEL_R_Finger32",
"SKEL_R_Finger31",
"SKEL_R_Finger30",
"SKEL_R_Finger42",
"SKEL_R_Finger41",
"SKEL_R_Finger40",
"SKEL_L_Finger02",
"SKEL_L_Finger01",
"SKEL_L_Finger00",
"SKEL_L_Finger12",
"SKEL_L_Finger11",
"SKEL_L_Finger10",
"SKEL_L_Finger22",
"SKEL_L_Finger21",
"SKEL_L_Finger20",
"SKEL_L_Finger32",
"SKEL_L_Finger31",
"SKEL_L_Finger30",
"SKEL_L_Finger42",
"SKEL_L_Finger41",
"SKEL_L_Finger40",
"SKEL_L_Toe0",
"SKEL_L_Foot",
"SKEL_L_Calf",
"SKEL_L_Thigh",
"SKEL_R_Toe0",
"SKEL_R_Foot",
"SKEL_R_Calf",
"SKEL_R_Thigh",
"SKEL_R_Hand",
"SKEL_R_Forearm",
"SKEL_R_UpperArm",
"SKEL_R_Clavicle",
"SKEL_L_Hand",
"SKEL_L_Forearm",
"SKEL_L_UpperArm",
"SKEL_L_Clavicle",
"SKEL_Head",
"SKEL_Neck_1",
"SKEL_Spine3",
"SKEL_Spine2",
"SKEL_Spine1",
"SKEL_Spine0",
"SKEL_Spine_Root",
"SKEL_Pelvis"
-- "SKEL_ROOT"
)
parentArray = #(
"SKEL_Pelvis",
"SKEL_L_Thigh",
"SKEL_L_Calf",
"SKEL_L_Foot",
"SKEL_L_Toe0",
"SKEL_Pelvis",
"SKEL_R_Thigh",
"SKEL_R_Calf",
"SKEL_R_Foot",
"SKEL_R_Toe0",
"SKEL_Spine_Root",
"SKEL_Spine0",
"SKEL_Spine1",
"SKEL_Spine2",
"SKEL_Spine3",
"SKEL_L_Clavicle",
"SKEL_L_UpperArm",
"SKEL_L_Forearm",
"SKEL_L_Hand",
"SKEL_L_Finger00",
"SKEL_L_Finger01",
"SKEL_L_Finger02",
"SKEL_L_Hand",
"SKEL_L_Finger10",
"SKEL_L_Finger11",
"SKEL_L_Finger12",
"SKEL_L_Hand",
"SKEL_L_Finger20",
"SKEL_L_Finger21",
"SKEL_L_Finger22",
"SKEL_L_Hand",
"SKEL_L_Finger30",
"SKEL_L_Finger31",
"SKEL_L_Finger32",
"SKEL_L_Hand",
"SKEL_L_Finger40",
"SKEL_L_Finger41",
"SKEL_L_Finger42",
"SKEL_Spine3",
"SKEL_R_Clavicle",
"SKEL_R_UpperArm",
"SKEL_R_Forearm",
"SKEL_R_Hand",
"SKEL_R_Finger00",
"SKEL_R_Finger01",
"SKEL_R_Finger02",
"SKEL_R_Hand",
"SKEL_R_Finger10",
"SKEL_R_Finger11",
"SKEL_R_Finger12",
"SKEL_R_Hand",
"SKEL_R_Finger20",
"SKEL_R_Finger21",
"SKEL_R_Finger22",
"SKEL_R_Hand",
"SKEL_R_Finger30",
"SKEL_R_Finger31",
"SKEL_R_Finger32",
"SKEL_R_Hand",
"SKEL_R_Finger40",
"SKEL_R_Finger41",
"SKEL_R_Finger42",
"SKEL_Spine3",
"SKEL_Head",
"SKEL_Neck_1"
)
childArray = #(
"SKEL_L_Thigh",
"SKEL_L_Calf",
"SKEL_L_Foot",
"SKEL_L_Toe0",
"SKEL_L_Toe0_NUB",
"SKEL_R_Thigh",
"SKEL_R_Calf",
"SKEL_R_Foot",
"SKEL_R_Toe0",
"SKEL_R_Toe0_NUB",
"SKEL_Spine0",
"SKEL_Spine1",
"SKEL_Spine2",
"SKEL_Spine3",
"SKEL_L_Clavicle",
"SKEL_L_UpperArm",
"SKEL_L_Forearm",
"SKEL_L_Hand",
"SKEL_L_Finger00",
"SKEL_L_Finger01",
"SKEL_L_Finger02",
"SKEL_L_Finger0_NUB",
"SKEL_L_Finger10",
"SKEL_L_Finger11",
"SKEL_L_Finger12",
"SKEL_L_Finger1_NUB",
"SKEL_L_Finger20",
"SKEL_L_Finger21",
"SKEL_L_Finger22",
"SKEL_L_Finger2_NUB",
"SKEL_L_Finger30",
"SKEL_L_Finger31",
"SKEL_L_Finger32",
"SKEL_L_Finger3_NUB",
"SKEL_L_Finger40",
"SKEL_L_Finger41",
"SKEL_L_Finger42",
"SKEL_L_Finger4_NUB",
"SKEL_R_Clavicle",
"SKEL_R_UpperArm",
"SKEL_R_Forearm",
"SKEL_R_Hand",
"SKEL_R_Finger00",
"SKEL_R_Finger01",
"SKEL_R_Finger02",
"SKEL_R_Finger0_NUB",
"SKEL_R_Finger10",
"SKEL_R_Finger11",
"SKEL_R_Finger12",
"SKEL_R_Finger1_NUB",
"SKEL_R_Finger20",
"SKEL_R_Finger21",
"SKEL_R_Finger22",
"SKEL_R_Finger2_NUB",
"SKEL_R_Finger30",
"SKEL_R_Finger31",
"SKEL_R_Finger32",
"SKEL_R_Finger3_NUB",
"SKEL_R_Finger40",
"SKEL_R_Finger41",
"SKEL_R_Finger42",
"SKEL_R_Finger4_NUB",
"SKEL_Neck_1",
"SKEL_Head_NUB",
"SKEL_Head"
)
boneLengthList = #()
inputData = #()
fn unparentRig =
(
for i = 1 to parentArray.count do
(
thisBn = getNodeByName parentArray[i]
select thisBn
max unlink
)
)
fn reparentRig =
(
for i = 1 to childArray.count do
(
thisBn = getNodeByName childArray[i]
thisParent = getNodeByName parentArray[i]
thisBn.parent = thisParent
)
)
fn setBoneLengths =
(
unparentRig()
if input_name == undefined do
(
input_name = getOpenFileName caption:"Bone Length file" types:"BoneLengths (*.len)|*.len|All Files (*.*)|*.*|"
)
if input_name != undefined then
(
f = openfile input_name
inputData = #() -- define as array
while not eof f do
(
append inputData (filterstring (readLine f) ",")
)
close f
)
for i in inputData do
(
execStr = i[1]
execute execStr
)
reparentRig
)
fn queryBoneLength =
(
output_name = getSaveFileName caption:"Bone Length file" types:"BoneLengths (*.len)|*.len|All Files (*.*)|*.*|"
if output_name != undefined then
(
output_file = createfile output_name
-- for i = 1 to boneArray.count do
for i = 1 to parentArray.count do
(
thisBone = getNodeByname parentArray[i]
thisChild = getNodeByName childArray[i]
if thisBone != undefined do
(
if thisChild != undefined do
(
-- thisBoneLength = (thisBone.length as float)
thisBoneLength = ((distance thisBone thisChild) as float)
existingPos = in coordsys parent thisBone.position
eY = (existingPos[2] as float)
eZ = (existingPos[3] as float)
boneLengthStr = ("$"+thisBone.name+".length = "+(thisBoneLength as string))
boneParentStr = ("in coordsys parent $"+thisBone.name+".position = ["+(thisBoneLength as string)+","+(eY as string)+","+(eZ as string)+"]")
append boneLengthList boneLengthStr
format ((boneLengthStr as string)+"\n") to:output_file
format ((boneParentStr as string)+"\n") to:output_file
)
)
)
close output_file
)
print ("Bone Lengths saved")
)
if ((lengthToolsGUI != undefined) and (lengthToolsGUI.isDisplayed)) do
(destroyDialog lengthToolsGUI)
rollout lengthToolsGUI "Spotting Tools"
(
button btnSaveLengths "Save Lengths" width:110
button btnSetLengths "Set Lengths" width:110
-- on btnImagePlanes pressed do
-- (
-- filein (RsConfigGetWildWestDir() + "script\\max\\Rockstar_North\\character\\Rigging_tools\\giant\\skeletonSpotImagePlaneSetup.ms")
-- )
-- on btnMirrorSel pressed do
-- (
-- filein (RsConfigGetWildWestDir() + "script\\max\\Rockstar_North\\character\\Rigging_tools\\giant\\mirrorMarkers.ms")
-- )
--
on btnSaveLengths pressed do
(
queryBoneLength()
)
on btnSetLengths pressed do
(
setBoneLengths()
)
)
CreateDialog lengthToolsGUI width:125 pos:[1450, 100]