COLLADAのシーングラフを可視化する

graphviz-collada.png

COLLADAのシーングラフを可視化する

#-*- coding: utf-8 -*-
from xml.etree.ElementTree import *
import pydot
g = pydot.Dot('COLLADA', graph_type='digraph')
g.set_rankdir("LR")
tree = parse('model.dae') # 返値はElementTree型
namespace="{http://www.collada.org/2005/11/COLLADASchema}";
root = tree.getroot()# ルート要素を取得(Element型)
visual_scene=tree.find(".//"+namespace+"visual_scene")
print(visual_scene.tag)
nodes=visual_scene.findall("*");
for node in nodes:
    nodeID=node.get("id")
    if(nodeID=="Camera"):
        continue;#Cameraならば無視する
    print("1st Generation:"+nodeID)
    parenNode=pydot.Node(node.get("id"))
    nodes2=node.findall("*")
    for node in nodes2:
 
        print("    2nd Generation:"+node.get("id"))
        childNode=pydot.Node(node.get("id"))
        print(childNode)
        edge=pydot.Edge(parenNode,childNode)
        print(edge)
        g.add_edge(edge)
g.write_svg("test.svg",prog="dot");
g.write_dot("test.dot")
# 確認のため標準出力に dot ファイルの中身を出力
# print unicode(g.to_string())
#g=pydot.graph_from_edges(edges)
#g.add_edge(pydot.Edge("a_1>3", "a_2>10"))

collada dae graphviz python xml

サポートサイト Wikidot.com colladadaegraphvizpythonxml