背景
- Pythonでメッシュを3Dビューポートに追加する方法が知りたい方
- Pythonで書いたコードで頂点を移動させたい方
- 角柱のメッシュの作り方が知りたい方
- タイトルに興味を持ってくださった方
実行環境
- Blender 3.4
- Python 3.11.5
コード
◆前提(初期状態)
前提として、3Dビューウィンドウに何もメッシュがない事を想定しています。
重なると分かりにくいので、メッシュがある方は消去した方が分かりやすいと思います。
1. コードを書く準備
Scriptingをクリックします。
新規(New)をクリックし、コードを書くためのテキストエディタを開きます。
2. メッシュの追加
以下のコードで10角柱を3Dビューポートに追加します。
パラメーターの意味に関してはこちらが参考になります。
import bpy
import bmesh
# メッシュ追加
bpy.ops.mesh.primitive_cone_add(location=(0,0,0),vertices=10,radius1=1.5,
radius2=1,depth=5, rotation=(0, 0, 0))
上記のコードが書けたら画右上の「▶」をボタンをクリックし実行します。
実行すると以下の画像のように10角柱が3Dビューポートに表示されます。
3. メッシュの頂点の移動
続いて以下のコードを実行します。
(2. メッシュの追加の上記コードを実行されてる方は3Dビューポート内の10角柱を消去してから以下のコードを実行した方がメッシュが重ならずに分かりやすいと思います。)
import bpy
import bmesh
# メッシュ追加
bpy.ops.mesh.primitive_cone_add(location=(0,0,0),vertices=10,radius1=1.5,
radius2=1,depth=5, rotation=(0, 0, 0))
# 編集モード
bpy.ops.object.mode_set(mode='EDIT')
# メッシュを非選択状態
bpy.ops.mesh.select_all(action='DESELECT')
b_mesh = bmesh.from_edit_mesh(bpy.context.object.data)
b_mesh.verts.ensure_lookup_table()
# indexが0の頂点をx軸方向に移動
vert = b_mesh.verts[0]
vert.co.x += 1.0
以下の部分のコードでメッシュの頂点のうちindexが0の番号の頂点をx軸方向に移動させています。
index番号を変更すれば別の頂点も移動する事ができます。
# indexが0の頂点をx軸方向に移動
vert = b_mesh.verts[0]
vert.co.x += 1.0
・実行結果画像
赤枠部分の頂点(index番号0)の頂点が移動している事が確認できます。