CG, KATANA

XMLファイルを使ってショットシーンを構築する

Importomatic ノードで XML ファイル経由でアセットを読み込むことができたので、もう少し複雑なシーンも構築してみます。

使用するネタは CGWorld.jp の記事で使用したシーンです。この時は USD 形式でき出力しましたが、やることはまあ同じなので何となくパラメータを読み替えつつ XML ファイルで出力するようにします。


xml_tmpl = r'''
<scenegraphXml name="Zombie_OnFire" version="0.1.0">
  <!-- channelData startFrame="1" endFrame="10" 
      ref="/tmp/myChannelData" / -->
  <instanceList>
    %s
  </instanceList>
</scenegraphXml>
'''

instance_tmpl = r'''
    <instance type="reference" name="%(name)s" refType="abc" refFile="%(path)s">
      <xform value="%(xform)s"/>
    </instance>
'''

import maya.cmds as cmds

nodes = []
for r in cmds.ls(type='reference'):
    if r == 'sharedReferenceNode':
        continue

    fn = cmds.referenceQuery(r, filename=True)
    ns = cmds.referenceQuery(r, namespace=True)[1:]
    path = cmds.referenceQuery(r, filename=True, withoutCopyNumber=True)
    root = cmds.ls('%s:*_root' % ns)
    xform = cmds.getAttr('%s.worldMatrix' % root[0])
    nodes.append(instance_tmpl % {'name' : ns,
                                  'path' : path,
                                  'xform' : str(xform)[1:-1]})

fp = open(r'/home/chiyama/Documents/katanta/scene_build/layout.xml', 'w')
fp.write(xml_tmpl % '\n'.join(nodes))
fp.close()

このようにして出力したファイルを KATANA で読むと、Maya 上でレイアウトしたシーンを再現することができました。

※そのままでは見た目がよくわからなかったので、全てのオブジェクトにグレーなマテリアルを割り当てています

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です