03 モデルデータの差し替え
シーンの準備ができたので、モデルデータの差し替えを行います。データの差し替え手順は以下の通りです。
STEP 1:新しいモデルを合成する
STEP 2:コントローラを差し替える
STEP 3:古いモデルを削除する
STEP 4:新しいモデルにプレフィックスを付ける
これをコードに落としたものがこちらです。
fn getPrefix node = (
return (filterString node.Name ":")[1]
)
fn importAsset = (
fname = get3ds MaxOpenFileName()
if fname == undefined do (
return false
)
merge3ds MaxFile fname #select #useMergedMtlDups
return selection[1]
)
with animate off (
disableSceneRedraw()
srcNode = selection[1]
--新しいモデルを合成する
newNode = importAsset()
--ノードのPrefixを取得する
prfx = getPrefix srcNode
--アニメーションデータを転送する
if srcNode.pos.isAnimated == true then (
newNode.pos.controller = srcNode.pos.controller
) else (
in coordsys parent newNode.pos = srcNode.pos
)
if srcNode.rotation.isAnimated == true then (
newNode.rotation.controller = srcNode.rotation.controller
) else (
in coordsys parent newNode.rotation = srcNode.rotation
)
notifyDependents newNode.controller
--元のモデルを削除する
delete srcNode
--新しいモデルにPrefixをつける
newNode.Name = prfx + ":" + newNode.Name
enableSceneRedraw()
)
このツールの動作結果をムービーにしました。見ての通り、モデルを差し替えてもきちんとアニメーションが再現できています。
いかがでしたか? この他にも、3ds Max のアニメーション周りは非常に複雑で、知らないと行き詰ってしまう事柄が多数存在します。そこで次回は、今回作成したツールを元に、スクリプトからアニメーションデータを扱うための注意事項を説明していきましょう。
TEXT_痴山紘史(JCGS)
映像制作のためのパイプライン構築をはじめ、技術提供を行なっていくエンジニア集団、「JCGS(日本CGサービス)」 の代表取締役......というのは表の顔で、実態は飲み会とCG関連の技術が好きなただのCGオタク。
個人サイト 「PHILO式」