モデルデータをバラバラにして comoplex asset 化する
最初にモデルデータを作成し、その後分解して complex asset 化をしたいときがあります。そのときの手順を説明します
アセットのトップにしたいノードを選択する
アセットのトップにしたいノードを選択します(複数選択可)
アセット化
complexAssetBuilder を立ち上げた状態で以下のコードを実行します
import math import libDCCTools from complexAssetBuilder import App import complexAsset app = App.Get() for s in mxs.selection: n = libDCCTools.node.DAGNode(s) ret, msg, a = app.createAssetNode() n.parent = a.node root, base, ofst = a.getRootController() T, R, S = libDCCTools.node.getLocalPosRotScale(n, root.parent) libDCCTools.node.setLocalPos(root, T) libDCCTools.node.setLocalRot(root, R) libDCCTools.node.setLocalScale(root, S) bbox = libDCCTools.node.getBoundingBox(n) bx = bbox[1][0,0] - bbox[0][0,0] by = bbox[1][0,0] - bbox[0][0,0] bz = bbox[1][0,0] - bbox[0][0,0] if libDCCTools.toolName == 'Maya': #YUp r = math.sqrt(pow(bx, 2) + pow(bz, 2)) elif libDCCTools.toolName == '3dsmax': #ZUp r = math.sqrt(pow(bx, 2) + pow(by, 2)) root.radius = r * 1.1
すると、complexAssetBuilder 上に作成された assetNode がリストアップされます。
このファイルは保存しておき、後から complex asset を作成する際に使用します。
アセットの準備
- root コントローラとアセットを適切に接続します(スケール対応するならリンクコンストレイン?:問題ないか要確認)
- root コントローラを全て原点に移動させます
- rig モードで publish
この手順を全てのアセットについておこないます。
※現時点では publish 処理に問題があり、複数の assetNode がシーン中にあると正常に処理ができないので、save selection をするなどしてアセット毎にファイルを分けて、一つづつ処理をおこなう必要があります
→ アセット化スクリプトを修正したら asset モードでパブリッシュできるようになったかも? asset モードでパブリッシュできればアセットを別々のファイルに保存する必要がないので非常に楽になる。
complex asset の作成
先ほど保存したファイルを開きます。このファイルには complex asset を作成するのに必要なアセットの位置情報が含まれているので、これを利用します。
各 assetNode の子供として対応するアセットを登録します。
登録がおわったら assetNode との親子関係を切ります。こうすることで、元々のオブジェクトの位置と同じ場所にアセットを配置することができます。
assetNode は必要が無いので削除します。
ここまでで、本来必要な位置に配置されたアセットが全てトップの階層に配置された状態になります。ここからは通常通り assetNode やグループを作成して complex asset 化していきます。