2016-05-19 6 views
1

私は3DSMAXスクリプティングの初心者です。3DSMAX 2011スクリプティング - 骨のクローンと名前の変更方法

名前でボーンをクローンし、特定の名前で "クローンボーン"の名前を変更する必要があります。 exempleについては

私はbip_01_Lhandのクローンを作成し、_bone_weapon_attachmentとしてクローンの名前を変更し、そのクローン_bone_hat_attachmentなるとY axis

にクローン化された骨 15 units of distanceを移動する必要があります bip01_headに対して同じ

X axisにクローン化された骨 10 units of distanceを移動する必要があります

どうすればいいですか? (obs:自分でしようとしましたが、配列を正しく作成できなかったときに失敗しました)

+0

あなたがここに満足のいく答えを得られない場合は、gamedev.stackexchange.comを試してみてください。そこにはいくつかのツールがあります。 (私はあなた自身を助けることができたが、私たちはマヤショップです) – Crashworks

+0

するでしょう!ありがとうございました :) – Cami

答えて

0

テクニカルアート/アニメーションでは、やりたいことの要点がかなりあります。

適用する必要がある変更が各ボーンごとに異なる場合は、多少の選択肢はありませんが、何らかのマッピングが作成されます。 Pythonでは、これは辞書で簡単に行うことができます。 maxscriptを使用している場合は、多次元配列を作成し、各配列項目は探している項目から始まる配列であり、2番目の項目は複製の名前で、3番目はオフセットです。

リグの各ボーンを繰り返し、目的のボーンを複製し、マッピングに保存したオフセットを適用します。

ここでは例です:

mapping = #(
    #("bip_01_Lhand ", "_bone_weapon_attachment", [10, 0, 0]), 
    #("bip01_head", "_bone_hat_attachmentand", [0, 15, 0]) 
)  

selectedNodes = getCurrentSelection() 

for s in selectedNodes do 
(
    -- for each item in the selection, go through each mapping and 
    -- see if a match can be found 
    for m in mapping do 
    (
     -- m is an array, so fetch each item of the array 
     name = m[1] 
     targetName = m[2] 
     offset = m[3] 
     -- verify that the names match, otherwise move on to the next 
     if s.name == name then 
     (
      cloneObj = copy s 
      cloneObj.name = targetName 
      cloneObj.position += offset 
     ) 
    ) 

) 
関連する問題