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
        )       
    )
)