BlenderでPythonプラグイン#2(Exporterの基礎完成)
もともと入っているプラグインをごそごそ見て回っていると、なんとなくメッシュ情報の取得手順が見えてきました。
どうやら、BPyMesh というデフォルトで入っているユーティリティを使うようです。
で、下記のようなスクリプトで試してみます。
import Blender from Blender import * import BPyMesh print "=== PRINT SCENE OBJECTS NAME ===" for obj in Blender.Scene.GetCurrent().getChildren(): print obj.getName()+" ("+obj.getType()+")" if obj.getType() == "Mesh": mesh = BPyMesh.getMeshFromObject(obj) if not mesh: continue print " " + str(len(mesh.verts)) + " vertices." for v in mesh.verts: print " v["+str(v.co[0])+","+str(v.co[1])+","+str(v.co[2])+"]"
これをデフォルトシーンに適用すると、次のような出力が得られました。
=== PRINT SCENE OBJECTS NAME === Cube (Mesh) 8 vertices. v[1.0,0.999999940395,-1.0] v[1.0,-1.0,-1.0] v[-1.00000011921,-0.999999821186,-1.0] v[-0.999999642372,1.00000035763,-1.0] v[1.00000047684,0.999999463558,1.0] v[0.999999344349,-1.00000059605,1.0] v[-1.00000035763,-0.999999642372,1.0] v[-0.999999940395,1.0,1.0] Lamp (Lamp) Camera (Camera)
あとはコードの整形、書き出すフォーマットをちょっと修正すればいろいろ使えそうです。
調べる前は不安だったけど、たった1,2時間でここまでできれば十分実用に耐えそうですね、blender。
pythonのコードはインデントが多くなり勝ちなので、ちょっと見づらくなるのも何とかしたいなー。関数化、とかか?