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のコードはインデントが多くなり勝ちなので、ちょっと見づらくなるのも何とかしたいなー。関数化、とかか?