2014/7/30 開催の Okinawa.rb に参加。
本来 Ruby の集いであるにも関わらず、この日は構わず Blender 方面へ突入。主に Python Console において Bpy な方面へ。
結果、オブジェクト(以降の説明では Plane)に対し、頂点、辺、面をそれぞれ追加する手法を理解したため、以下のとおりメモ。
準備
まず、本件について準備しつつ Python Console を開くまでの手順。 Blender は、現 2.71 の on OS X な版を使用。
デフォルトの Cube は使用しないため削除。(X キーをタイプ)
オブジェクト(Plane)を配置するため、 3D View の表示形式を Top Persp に切り替え。
3D View にマウスカーソルをのせ、スペースキーをタイプ。 表示されたメニューから Add Plane を選択。 なお、以下な矢印の付け根部分をドラッグすることで画面分割が可能。
Editor Type のメニューから Python Console を選択。
これで Python Console が開きます。
頂点の追加
Python Console に以下を入力し、 3D View にマウスカーソルを移動させタブキーをタイプして Edit Mode に切り替えると
d = bpy.data.objects['Plane'].data d.vertices.add(1) d.vertices[4].co.x = 3
以下のアカマルな位置に頂点が追加されている。
ちなみに、 bpy.data.objects['Plane'].data の戻りは bpy.data.meshes['Plane'] であり Blender 2.71.0 5c2d7f7 - API documentation では bpy.types.Mesh に示される。 vertices については bpy.types.MeshVertex 。
辺の追加
面の追加
Object Mode に切り替え、 Python Console にて以下な入力。
d.loops.add(3) d.loops[4].vertex_index = 1 d.loops[5].vertex_index = 4 d.loops[6].vertex_index = 3 d.polygons.add(1) d.polygons[1].loop_start = 4 d.polygons[1].loop_total = 3
d.loops のデフォルトを確認すると vertex_index にそれぞれ 0, 1, 3, 2 が設定されている。これに追加し 0, 1, 3, 2, 1, 4, 3 とする。 また d.polygons にひとつ追加し、 d.loops の要素中、 4 番目から 3 つ目までを追加面として設定している。
Edit Mode に切り替た後、確認すると以下なとおり。
これらの手法で、プログラム的モデリングについていろいろ妄想中。
あと、 いい加減、そろそろ Unity 方面をおさえないとな件。