[Blender2.8] Python으로 플레이트 폴리를 생성합니다. BMesh 사용하지 않는 버전과 사용하는 버전.
만드는 것
크기 1.0 판 폴리. v1 에서 v4 의 순서로 정점을 생성해, v1, v3, v2 와 v2, v3, v4 로 면을 붙인다.
객체의 메쉬에 직접 액세스하는 방법
이것이 편하다. mesh.from_pydata에서 빈 배열을 전달하는 두 번째 인수는 가장자리의 인덱스입니다. 점, 모서리, 면이 블렌더의 기본 요소입니다.
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
Reference
이 문제에 관하여([Blender2.8] Python으로 플레이트 폴리를 생성합니다. BMesh 사용하지 않는 버전과 사용하는 버전.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiro_assh/items/c8a41f5b247e6b2dfb61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)