Open9

blender

blenderloverblenderlover

https://qiita.com/H4ppyR41nyD4y/items/faba6fd6c5a85528fb10

http://ouc.seesaa.net/article/503117721.html

ハート型のメッシュを作成するコード

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()
blenderloverblenderlover
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()