3DSMAX 2011 脚本 - 如何重命名多个对象?
3DSMAX 2011 script - How to rename multiple objects?
我正在使用 Mixamo 的网站自动绑定一些角色。
当我将角色导入回 3DSMAX 时,所有骨骼都将使用 mixamo 的命名模式导入,类似于:
mixamo:head
mixamo:neck
mixamo:lefthand
我必须将它们重命名为我要选择的自定义模式,例如:
bip01_hat_attachment
bip01_neck
bip01_Lhand
有人可以提供一个有效的 3DSMAX 2011 脚本来查找、select 并替换特定骨骼的名称吗?
提前致谢!
-------------------------------------------- ----------------------
@Rotem
我已经实现了你的脚本,但只有第一块骨头改变了它的名字。我也忘了说我实际上使用的是假人,而不是骨头(不知道这有什么区别)
这是我的完整代码(运行 on 3DSMAX 2011):
Sample.fbx 具有命名的骨骼:http://www.mediafire.com/download/1o5ci5cj254ksrj/sample.FBX
(
local fromPrefix = "mixamorig:"
local toPrefix = "Bip01_"
local nameMap = #( \
dataPair "Hips" "Pelvis",
dataPair "Spine" "Spine",
dataPair "Spine1" "Spine1",
dataPair "Spine2" "Spine2",
dataPair "Neck" "Neck",
dataPair "Head" "Head",
dataPair "HeadTop_End" "HeadTop_End",
dataPair "LeftShoulder" "L_Clavicle",
dataPair "LeftArm" "L_UpperArm",
dataPair "LeftForeArm" "L_Forearm",
dataPair "LeftHand" "L_Hand",
dataPair "LeftHandThumb1" "L_Finger0",
dataPair "LeftHandThumb2" "L_Finger01",
dataPair "LeftHandThumb3" "L_Finger02",
dataPair "LeftHandThumb4" "L_Finger03",
dataPair "LeftHandIndex1" "L_Finger1",
dataPair "LeftHandIndex2" "L_Finger11",
dataPair "LeftHandIndex3" "L_Finger12",
dataPair "LeftHandIndex4" "L_Finger13",
dataPair "LeftHandMiddle1" "L_Finger2",
dataPair "LeftHandMiddle2" "L_Finger21",
dataPair "LeftHandMiddle3" "L_Finger22",
dataPair "LeftHandMiddle4" "L_Finger23",
dataPair "LeftHandRing1" "L_Finger3",
dataPair "LeftHandRing2" "L_Finger31",
dataPair "LeftHandRing3" "L_Finger32",
dataPair "LeftHandRing4" "L_Finger33",
dataPair "LeftHandPinky1" "L_Finger4",
dataPair "LeftHandPinky2" "L_Finger41",
dataPair "LeftHandPinky3" "L_Finger42",
dataPair "LeftHandPinky4" "L_Finger43",
dataPair "RightShoulder" "R_Clavicle",
dataPair "RightArm" "R_UpperArm",
dataPair "RightForeArm" "R_Forearm",
dataPair "RightHand" "R_Hand",
dataPair "RightHandThumb1" "R_Finger0",
dataPair "RightHandThumb2" "R_Finger01",
dataPair "RightHandThumb3" "R_Finger02",
dataPair "RightHandThumb4" "R_Finger03",
dataPair "RightHandIndex1" "R_Finger1",
dataPair "RightHandIndex2" "R_Finger11",
dataPair "RightHandIndex3" "R_Finger12",
dataPair "RightHandIndex4" "R_Finger13",
dataPair "RightHandMiddle1" "R_Finger2",
dataPair "RightHandMiddle2" "R_Finger21",
dataPair "RightHandMiddle3" "R_Finger22",
dataPair "RightHandMiddle4" "R_Finger23",
dataPair "RightHandRing1" "R_Finger3",
dataPair "RightHandRing2" "R_Finger31",
dataPair "RightHandRing3" "R_Finger32",
dataPair "RightHandRing4" "R_Finger33",
dataPair "RightHandPinky1" "R_Finger4",
dataPair "RightHandPinky2" "R_Finger41",
dataPair "RightHandPinky3" "R_Finger42",
dataPair "RightHandPinky4" "R_Finger43",
dataPair "LeftUpLeg" "L_Thigh",
dataPair "LeftLeg" "L_Calf",
dataPair "LeftFoot" "L_Foot",
dataPair "LeftToeBase" "L_Toe0",
dataPair "LeftToe_End" "L_Toe0_End",
dataPair "RightUpLeg" "R_Thigh",
dataPair "RightLeg" "R_Calf",
dataPair "RightFoot" "R_Foot",
dataPair "RightToeBase" "R_Toe0",
dataPair "RightToe_End" "R_Toe0_End"
)
for namePair in nameMap do
(
local fromName = fromPrefix + namePair.v1
for o in getNodebyName fromName all:on do
(
o.name = toPrefix + namePair.v2
)
)
)
可能是什么问题?
根据您的问题和评论,我了解到您希望提供对象名称的自定义映射。
您可以使用此代码来提供此类映射。我使用了您评论中的两个示例。
通过在映射中不包含前缀,您可以轻松更改它们。
(
local fromPrefix = "mixamo:"
local toPrefix = "bip01_"
local nameMap = #( \
dataPair "left_foot" "Lfoot",
dataPair "neck" "neck_special_effects_attachment"
-- add more mappings here
)
for namePair in nameMap do
(
local fromName = fromPrefix + namePair.v1
for o in getNodebyName fromName all:on do
(
o.name = toPrefix + namePair.v2
)
)
)
我正在使用 Mixamo 的网站自动绑定一些角色。
当我将角色导入回 3DSMAX 时,所有骨骼都将使用 mixamo 的命名模式导入,类似于:
mixamo:head
mixamo:neck
mixamo:lefthand
我必须将它们重命名为我要选择的自定义模式,例如:
bip01_hat_attachment
bip01_neck
bip01_Lhand
有人可以提供一个有效的 3DSMAX 2011 脚本来查找、select 并替换特定骨骼的名称吗?
提前致谢!
-------------------------------------------- ----------------------
@Rotem
我已经实现了你的脚本,但只有第一块骨头改变了它的名字。我也忘了说我实际上使用的是假人,而不是骨头(不知道这有什么区别)
这是我的完整代码(运行 on 3DSMAX 2011):
Sample.fbx 具有命名的骨骼:http://www.mediafire.com/download/1o5ci5cj254ksrj/sample.FBX
(
local fromPrefix = "mixamorig:"
local toPrefix = "Bip01_"
local nameMap = #( \
dataPair "Hips" "Pelvis",
dataPair "Spine" "Spine",
dataPair "Spine1" "Spine1",
dataPair "Spine2" "Spine2",
dataPair "Neck" "Neck",
dataPair "Head" "Head",
dataPair "HeadTop_End" "HeadTop_End",
dataPair "LeftShoulder" "L_Clavicle",
dataPair "LeftArm" "L_UpperArm",
dataPair "LeftForeArm" "L_Forearm",
dataPair "LeftHand" "L_Hand",
dataPair "LeftHandThumb1" "L_Finger0",
dataPair "LeftHandThumb2" "L_Finger01",
dataPair "LeftHandThumb3" "L_Finger02",
dataPair "LeftHandThumb4" "L_Finger03",
dataPair "LeftHandIndex1" "L_Finger1",
dataPair "LeftHandIndex2" "L_Finger11",
dataPair "LeftHandIndex3" "L_Finger12",
dataPair "LeftHandIndex4" "L_Finger13",
dataPair "LeftHandMiddle1" "L_Finger2",
dataPair "LeftHandMiddle2" "L_Finger21",
dataPair "LeftHandMiddle3" "L_Finger22",
dataPair "LeftHandMiddle4" "L_Finger23",
dataPair "LeftHandRing1" "L_Finger3",
dataPair "LeftHandRing2" "L_Finger31",
dataPair "LeftHandRing3" "L_Finger32",
dataPair "LeftHandRing4" "L_Finger33",
dataPair "LeftHandPinky1" "L_Finger4",
dataPair "LeftHandPinky2" "L_Finger41",
dataPair "LeftHandPinky3" "L_Finger42",
dataPair "LeftHandPinky4" "L_Finger43",
dataPair "RightShoulder" "R_Clavicle",
dataPair "RightArm" "R_UpperArm",
dataPair "RightForeArm" "R_Forearm",
dataPair "RightHand" "R_Hand",
dataPair "RightHandThumb1" "R_Finger0",
dataPair "RightHandThumb2" "R_Finger01",
dataPair "RightHandThumb3" "R_Finger02",
dataPair "RightHandThumb4" "R_Finger03",
dataPair "RightHandIndex1" "R_Finger1",
dataPair "RightHandIndex2" "R_Finger11",
dataPair "RightHandIndex3" "R_Finger12",
dataPair "RightHandIndex4" "R_Finger13",
dataPair "RightHandMiddle1" "R_Finger2",
dataPair "RightHandMiddle2" "R_Finger21",
dataPair "RightHandMiddle3" "R_Finger22",
dataPair "RightHandMiddle4" "R_Finger23",
dataPair "RightHandRing1" "R_Finger3",
dataPair "RightHandRing2" "R_Finger31",
dataPair "RightHandRing3" "R_Finger32",
dataPair "RightHandRing4" "R_Finger33",
dataPair "RightHandPinky1" "R_Finger4",
dataPair "RightHandPinky2" "R_Finger41",
dataPair "RightHandPinky3" "R_Finger42",
dataPair "RightHandPinky4" "R_Finger43",
dataPair "LeftUpLeg" "L_Thigh",
dataPair "LeftLeg" "L_Calf",
dataPair "LeftFoot" "L_Foot",
dataPair "LeftToeBase" "L_Toe0",
dataPair "LeftToe_End" "L_Toe0_End",
dataPair "RightUpLeg" "R_Thigh",
dataPair "RightLeg" "R_Calf",
dataPair "RightFoot" "R_Foot",
dataPair "RightToeBase" "R_Toe0",
dataPair "RightToe_End" "R_Toe0_End"
)
for namePair in nameMap do
(
local fromName = fromPrefix + namePair.v1
for o in getNodebyName fromName all:on do
(
o.name = toPrefix + namePair.v2
)
)
)
可能是什么问题?
根据您的问题和评论,我了解到您希望提供对象名称的自定义映射。
您可以使用此代码来提供此类映射。我使用了您评论中的两个示例。
通过在映射中不包含前缀,您可以轻松更改它们。
(
local fromPrefix = "mixamo:"
local toPrefix = "bip01_"
local nameMap = #( \
dataPair "left_foot" "Lfoot",
dataPair "neck" "neck_special_effects_attachment"
-- add more mappings here
)
for namePair in nameMap do
(
local fromName = fromPrefix + namePair.v1
for o in getNodebyName fromName all:on do
(
o.name = toPrefix + namePair.v2
)
)
)