BlenderでPython APIを使ってMeshを作成する手順についての覚え書きをメモしてみようと思います。注1
Scriptingレイアウト
普通にBlenderを起動してScriptingレイアウトにします。
左側の部分がPythonのコードを入力するテキストエディターになります。ここに必要なコードを入力していきます。
新規ファイルの作成は「New」ボタンをクリックします。
※最初からあるCamera、Cube、Lampは削除しておくと見易くなると思います。
Meshの作成
今回は入門Hello world的に立方体を作成するスクリプトを作ってみようと思います。注2
テキストエディターの部分に次のような感じでコードを入力します。
import bpy
verts = [(-1.0,-1.0,-1.0), (1.0,-1.0,-1.0), (1.0,1.0,-1.0), (-1.0,1.0,-1.0), (-1.0,-1.0,1.0), (1.0,-1.0,1.0), (1.0,1.0,1.0), (-1.0,1.0,1.0)]
faces = [(0,1,5,4), (1,2,6,5), (2,3,7,6), (3,0,4,7), (0,1,2,3), (4,5,6,7)]
mesh = bpy.data.meshes.new('Cube')
object = bpy.data.objects.new('Cube', mesh)
object.show_name = True
bpy.context.scene.objects.link(object)
mesh.from_pydata(verts, [], faces)
mesh.update(calc_edges = True)
入力できたらAlt+P
でスクリプトを実行します。
画面に立方体が表示されれば成功です。
少し解説すると、verts
で8つの頂点座標を指定し、faces
で面を指定しています。(0,1,5,4)
等の数字は何番目の頂点を使って面を作るかの設定になります。
Materialの設定
続いてMaterialを設定してみます。今回は面ごとに異なるMaterialを設定してみようと思います。
Materialの作成とObjectへの設定
bpy.data.materials.new
でMaterialを作成しobject
に割り当てていきます。
for i in range(6):
m = bpy.data.materials.new('material_' + str(i))
m.diffuse_color = (int(i / 4 % 2), int(i / 2 % 2), i % 2)
object.data.materials.append(m)
各面ごとにMaterialを設定
面へのMaterialの設定は通常Blenderを操作するようにEDITモードに移行して実行する形になります。
import bmesh
bpy.context.scene.objects.active = object
bpy.ops.object.mode_set(mode = 'EDIT')
mesh = bmesh.from_edit_mesh(object.data)
mesh.select_mode = {'FACE'}
mesh.faces.ensure_lookup_table()
for i in range(6):
mesh.faces[i].material_index = i
object.data.update()
bpy.ops.object.mode_set(mode = 'OBJECT')
mesh.faces[i].material_index = i
の部分が実際にMaterialを設定している部分になります。代入している数字が何番目のMaterialを割り当てるかという意味になります。
※このサンプルを複数回実行するとCube.001、Cube.002という名称のオブジェクトが作成されます。スクリプト内で削除するようにはなっていませんので、手動で削除するか非表示にしておくと見易くなるかと思います。
まとめ
Meshを作成してMaterialを割り当てるだけという簡単な覚え書きですが、これだけでも外部ファイルのデータを読み込んでMeshを作成し、色付けするなど、使える場面もあるのではないかと思います。
自分自身もBlenderの勉強中ですが、機会があればaddonとかも作ってみたいと思います。
おすすめ書籍
リンク
- blender.org – Home of the Blender project – Free and Open 3D Creation Software
https://www.blender.org/ - Blender Documentation – blender.org
https://docs.blender.org/
注1 BlenderでPython APIを使うにはaddonを作成する方法もありますが、ここではaddonを使わないで、Scriptを実行するだけのお手軽な方法を使ってみようと思います。
注2 primitive_cube_add
を使ってCubeを作ることもできます。
こちらの記事はWindowsの使い方というサイトで公開していた内容です。
使用していたレンタルサーバーのサービス終了に伴い移転しました。