Blender Python BMesh 〜点の操作〜
前回は、イメージファイルからの座標点の取得〜画面上への描画を行う
スクリプトについて説明しました。
色々と考えたのですが、点(vertex)の操作方法を学ぶ方が先だと思い今回に至ります。
Python Consoleを使い、点を作成しプレートと併用して、オブジェクの変形まで
やれたらいいなと思います。
とりあえず、以下のコマンドを入力しました。
>> ob = bpy.context.object
>>> import bmesh
>>> bm = bmesh.from_edit_mesh(ob.data)
>>> bm.verts.new ( (0,0,0 ) )
<BMVert(0x109c4e398), index=-1>
>>> bm.verts.new ( (-1,-1,0 ) )
<BMVert(0x109c4e408), index=-1>
>>> bm.verts.new ( (1,1,0 ) )
<BMVert(0x109c4e3d0), index=-1>
# ヘルプの内容です。
>>> bmesh.update_edit_mesh(
update_edit_mesh(mesh, tessface=True, destructive=True)
.. method:: update_edit_mesh(mesh, tessface=True, destructive=True)
Update the mesh after changes to the BMesh in editmode,
optionally recalculating n-gon tessellation.
:arg mesh: The editmode mesh.
:type mesh: :class:`bpy.types.Mesh`
:arg tessface: Option to recalculate n-gon tessellation.
:type tessface: boolean
:arg destructive: Use when geometry has been added or removed.
:type destructive: boolean
>>> bmesh.update_edit_mesh(ob.data)
>>>
こんな感じで出力します。
※太文字の部分が実行コマンドになります。
前回作成したスクリプトも同様の手段を使用して点(Vertex)を作成しています。
ここで、点を操作するときに最後の行bmesh.update_edit_mesh()を実行した後だと
変数の「bm」が空になってしまうため更新前に点の処理を行います。
つまり、
>>> bm = bmesh.from_edit_mesh(ob.data)
# この間で点の追加〜編集を行います。
bm.verts.ensure_lookup_table()
>>> bmesh.update_edit_mesh()
ということです。
そして「bm.verts.ensure_lookup_table()」を実行した後でないと
点の操作はできない仕様になっていました。
bm.verts.ensure_lookup_table()の実行前
実行後
そんなこんなで、スクリプトを作成してみました。
実行結果は以下のようになりました。
※テストの残骸が残っていますが。。。。
ソースとしては、以下のような形です。
起動するソースはこちら(ダウンロードできます)
import bpy, bmesh
ob = bpy.context.object
bm = bmesh.from_edit_mesh(ob.data)
vList =
vList.append((-0.5, -0.5, 0.0))
vList.append((0.5, -0.5, 0.0))
vList.append((0.5, 0.5, 0.0))
vList.append((-0.5, 0.5, 0.0))
i = 0
list =
for v in bm.verts:
print(v.co)
if i >= 4:
print("*** IN ***")
bm.verts.new(vList[i-4])
list.append(v)
if i -3 == len(vList):
break
print(i)
i = i+1
print(i)
print(len(list))
bm.edges.new*1
次回は、点の作成時の座標について勉強します。
お疲れ様でした。
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Java Basic
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
*1:list[0], list[1]