【Blender】をPythonで試してみた3
はじめに
こんにちは、がんがんです。
今回はBlenderの出力をcsvに出力したりと、少しだけいじってみました。
なので、Blender × Pythonに関するメモとしてまとめておきます。
Blender × Pythonに関する前回記事は以下になります。
gangannikki.hatenadiary.jp
参考記事
参考記事はその都度載せていきますが、すぐに見れるようにまとめておきます。
プリミティブ方式に関するはなし
PythonによるBlender3DCGモデリング(1)
BlenderのプリミティブオブジェクトをPythonで操作する -- PythonによるBlender 3DCGモデリング(2) --
csv出力に関するはなし
python - 頂点の座標をCSVにエクスポート
プリミティブ方式のおさらい
Blenderはオブジェクトの作成方法として、様々な方式があるようです。
今まで実験していたものはすべてプリミティブ方式と呼ばれるものになります。
今回は以下を参考に改めておさらいします。
www.rinkak.com
三角コーンを作成
とりあえず、参考記事に倣って三角コーンを作成します。コードは以下の通りです。
import bpy def delete_all(): for item in bpy.context.scene.objects: bpy.context.scene.objects.unlink(item) for item in bpy.data.objects: bpy.data.objects.remove(item) for item in bpy.data.meshes: bpy.data.meshes.remove(item) for item in bpy.data.materials: bpy.data.materials.remove(item) def add_cone(): bpy.ops.mesh.primitive_cone_add() if __name__ == '__main__': delete_all() add_cone()
実験の結果はこんな感じです。ちゃんとコーンが表示されています。
三角コーンを増やしてたり、変形させたりしてみる
次は三角コーンの数を増やしたり、形を変形させたりしてみます。
以下のコードは3つに増やした場合です。
def add_sankon(): for x in range(3): bpy.ops.mesh.primitive_cone_add( location=(x, x, 0) )
見事に増えてます。
次に、別のパラメータもいじって形を変形させます。
コードは以下の通りです。
def add_cone(): bpy.ops.mesh.primitive_cone_add( vertices=6, radius1=6, radius2=3, location=(3, 0, 0), rotation=(0.5, 0, 0) )
原型であるコーンの形はなくなってますね。
csvファイルに出力
今回のメインはこちらです。同様の質問をみつけ、そちらを参考にしていきました。
blender.stackovernet.com
コードは以下の通りです。基本はほぼ同じですが、Pathlib
でファイル処理をしています。
def output_csv(): verts = [ bpy.context.object.matrix_world * v.co \ for v in bpy.context.object.data.vertices ] csvLines = [ ";".join([ str(v) for v in co ]) + "\n" for co in verts ] outputFile = Path(".") / "mesh.csv" with outputFile.open(mode="w") as f: f.writelines( csvLines )