>   >  スクリプト兵法書 〜MAX Script編〜:Vol.6:アニメーションの分離と差し替え
Vol.6:アニメーションの分離と差し替え

Vol.6:アニメーションの分離と差し替え

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式」

その他の連載