3
4

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 5 years have passed since last update.

[Blender2.8] Pythonで板ポリを生成する。BMesh利用しない版と利用する版。

Last updated at Posted at 2019-07-07

BlenderPython3日目。BlenderでPythonを用いてモデリングするために、頂点とインデックスの生成をおさえる。もちろん、ツール上に存在するプリミティブに関しては専用の関数があるため、それで問題ない場合はそちらで。

##作るもの
サイズ1.0の板ポリ。v1 から v4 の順で頂点を生成し、v1,v3,v2とv2,v3,v4で面を張る。
quiita1 copy.png

##オブジェクトのメッシュに直接アクセスする方法
これが楽。mesh.from_pydataで空の配列を渡している2つ目の引数は辺のインデックス。点、辺、面がBlenderにおいての基本要素。

import bpy

vertsData = [(-0.5, -0.5, 0), (0.5, -0.5, 0.0),(-0.5,0.5, 0.0),(0.5,0.5,0.0)]
facesData = [(0,2,1),(1,2,3)]
 
# Create Mesh
mesh = bpy.data.meshes.new("mesh")
mesh.from_pydata(vertsData, [], facesData)  
mesh.update()

# Create Object
obj = bpy.data.objects.new("ItaPoly", mesh)
obj.data = mesh

# Add Object
scene = bpy.context.scene
scene.collection.objects.link(obj)

##Bmeshを利用する方法
頂点とインデックスをもたせるだけであれば、Bmeshでやる必要はなさそう。

import bpy
import bmesh

verts = [(-0.5, -0.5, 0), (0.5, -0.5, 0.0),(-0.5,0.5, 0.0),(0.5,0.5,0.0)]

# Create Empty Mesh & Object
mesh = bpy.data.meshes.new("mesh")
obj  = bpy.data.objects.new("ItaPoly", mesh)

# Add Object
scene = bpy.context.scene
scene.collection.objects.link(obj)

# Create Bmesh
bm = bmesh.new()

bm_verts = []
for v in verts:
    b_v = bm.verts.new(v)
    bm_verts.append(b_v)

v1 = bm_verts[0]
v2 = bm_verts[1]
v3 = bm_verts[2]
v4 = bm_verts[3]

bm.faces.new([v1,v3,v2])
bm.faces.new([v2,v3,v4])

# QUAD
#bm.faces.new([v1,v2,v3,v4])

bm.to_mesh(mesh)
bm.free() # Release Bmesh

まとめ

Blenderでは、頂点とインデックスのデータを用意し、mesh.from_pydataに渡せばメッシュが生成できる。

##参考 (Blender2.8では動かない箇所あり)
Blender 2.80: Scene and Object API
create mesh then add vertices to it in python
different-ways-to-create-mesh-objects

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?