Open9
blender
ハート型のメッシュを作成するコード
import bpy
import bmesh
import math
# range() 関数の浮動小数点数バージョン
# (参考) Pythonからはじめる数学入門 2.4.2.1 等間隔浮動小数点数の生成
def frange(start, final, increment = 0.1):
numbers = []
while start < final:
numbers.append(start)
start = start + increment
return numbers
def create_heart_polygon():
# メッシュを作成する
new_mesh = bpy.data.meshes.new("Regular Heart Polygon")
# オブジェクトを作成する
new_obj = bpy.data.objects.new("Regular Heart Polygon", new_mesh)
# 現在のシーンにオブジェクトをリンクさせる
bpy.context.scene.collection.objects.link(new_obj)
# 作成したオブジェクトをアクティブオブジェクトにする
bpy.context.view_layer.objects.active = new_obj
# 作成したオブジェクトを選択状態にする
new_obj.select_set(True)
# BMeshを作成する
bm = bmesh.new()
verts = []
intervals = frange(0, 2 * math.pi)
for t in intervals:
# Heart
x = 16 * math.sin(t) ** 3
y = 13 * math.cos(t) - 5 * math.cos(2 * t) - 2 * math.cos(3 * t) - math.cos(4 * t)
vert = bm.verts.new([x, y, 0.0])
verts.append(vert)
# 面を作成する
bm.faces.new(verts)
# BMeshをメッシュオブジェクトに変換する
bm.to_mesh(new_mesh)
create_heart_polygon()
マテリアルの設定のレンダーメソッドがディザーだとアルファで透過してもノイズが発生するので、ブレンドにする
import bpy
import bmesh
import math
def create_heart_polygon():
# メッシュを作成する
new_mesh = bpy.data.meshes.new("Regular Heart Polygon")
# オブジェクトを作成する
new_obj = bpy.data.objects.new("Regular Heart Polygon", new_mesh)
# 現在のシーンにオブジェクトをリンクさせる
bpy.context.scene.collection.objects.link(new_obj)
# 作成したオブジェクトをアクティブオブジェクトにする
bpy.context.view_layer.objects.active = new_obj
# 作成したオブジェクトを選択状態にする
new_obj.select_set(True)
# BMeshを作成する
bm = bmesh.new()
verts = []
#
r = 1.0
#
for deg in range(0, 360, 10):
#
rad = math.radians(deg)
x = r * math.cos(rad)
y = r * math.sin(rad)
#
vert = bm.verts.new((x, y, 0.0))
verts.append(vert)
# を作成する
for i in range(len(verts) - 1):
v1 = verts[i]
v2 = verts[i + 1]
#
bm.edges.new((v1, v2))
# BMeshをメッシュオブジェクトに変換する
bm.to_mesh(new_mesh)
create_heart_polygon()