原型 トーラス円周 3つ x軸 方向







import bpy

import math

import mathutils


# 外接円の半径とトーラスの minor 半径

RADIUS = 1.0

MINOR_RADIUS = 0.05


# トーラスを作成する関数

def create_torus(x, y, z):

    # Meshデータの作成

    mesh = bpy.data.meshes.new("Torus")


    # 頂点を生成する

    verts = []

    for i in range(32):

        theta = 2 * math.pi * i / 32

        for j in range(32):

            phi = 2 * math.pi * j / 32

            x1 = (RADIUS + MINOR_RADIUS * math.cos(phi)) * math.cos(theta)

            y1 = (RADIUS + MINOR_RADIUS * math.cos(phi)) * math.sin(theta)

            z1 = MINOR_RADIUS * math.sin(phi)

            verts.append((x1, y1, z1))


    # 面を生成する

    faces = []

    for i in range(32):

        for j in range(32):

            v1 = i * 32 + j

            v2 = i * 32 + (j + 1) % 32

            v3 = ((i + 1) % 32) * 32 + j

            v4 = ((i + 1) % 32) * 32 + (j + 1) % 32

            faces.append((v1, v2, v4, v3))


    # Meshデータに頂点、面情報を追加する

    mesh.from_pydata(verts, [], faces)


    # オブジェクトを作成する

    obj = bpy.data.objects.new("TorusObject", mesh)


    # オブジェクトを指定位置に移動する

    obj.location = mathutils.Vector((x, y, z))


    # オブジェクトをシーンに追加する

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


# トーラスを3つ生成する

create_torus(0, 0, 0)

create_torus(2, 0, 0)

create_torus(-2, 0, 0)







 

このブログの人気の投稿

基本の   線路レール

原型 球体36 xy 横 正方形 60x60 平面分布

原型 球体36 xz 縦 正方形 60x60 平面分布