0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Blender×Python】Pythonで作成したコードでメッシュの頂点を移動させる方法

Last updated at Posted at 2023-10-21

背景

  • Pythonでメッシュを3Dビューポートに追加する方法が知りたい方
  • Pythonで書いたコードで頂点を移動させたい方
  • 角柱のメッシュの作り方が知りたい方
  • タイトルに興味を持ってくださった方

実行環境

  • Blender 3.4
  • Python 3.11.5

コード

◆前提(初期状態)

前提として、3Dビューウィンドウに何もメッシュがない事を想定しています。
重なると分かりにくいので、メッシュがある方は消去した方が分かりやすいと思います。

・初期状態のイメージ画像
image.png

1. コードを書く準備

Scriptingをクリックします。
新規(New)をクリックし、コードを書くためのテキストエディタを開きます。
image.png

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ビューポートに表示されます。

・実行結果画像
image.png

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)の頂点が移動している事が確認できます。
image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?