mqo, pmdインポータがほぼ完了

ようやくpmdインポータでメッシュ、shape key、Armatureの読み込みまでができた。blender2.5向けのスクリプト情報が不足していて一部難航したがなんとかなった。夜に今バージョンを整理してアップロードする予定。


特に頂点選択からオペレーション(不要頂点の削除)を適用する処理でおおいにはまった。

# Editモード
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
# 頂点を選択
for v in mesh.verts:
  v.selected=True
# 選択された頂点数と全頂点数が等しい
assert(mesh.total_vert_sel==len(mesh.verts))

というのを

# 頂点を選択
for v in mesh.verts:
  v.selected=True
# Editモード
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
# 選択された頂点数と全頂点数が等しい
assert(mesh.total_vert_sel==len(mesh.verts))

と書かないといけないのがわからず数時間悩む。
モード変更時に裏で何かupdate系処理が呼ばれていると思うのだが、それでたまたま状態が反映されていると思われる。
前にもはまったがblender2.5のスクリプトでEditモードの操作をする時は、状態を反映するタイミングと方法が不明で良くはまる。関係オブジェクトのupdateなどを適切に呼ぶ必要があるのかもしれないが今のところよくわからない。

ソース更新

ビルド済みのpythonモジュールとblender2.4と2.5のインポータを作ろうと思ったが時間切れ。
今日はリポジトリの更新までしかできず。
http://sourceforge.jp/projects/meshio/wiki/FrontPage

ToDo
distutilsでWindows独自のオプション(スタティックランタイムの使用とマニフェストを使わない)のやり方を調べる。
distutilsのインストーラの作り方を調べる。