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

 














# コレクションを作成

import bpy


collection_name = "torus y軸 3つ"

if collection_name not in bpy.data.collections:

    zionad_collection = bpy.data.collections.new(collection_name)

    bpy.context.scene.collection.children.link(zionad_collection)

else:

    zionad_collection = bpy.data.collections[collection_name]









# 3つのトーラス円周 平行移動 離れ度合い調整


import bpy

import mathutils

import math


zion_y_hanare = 1

zion_x_hanare = 0

zion_z_hanare = 0

zion_heikou_idou = (0, 0, 0)


# 外接円の半径とトーラスの 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(zion_x_hanare, -1*zion_y_hanare + zion_z_hanare, 0)

create_torus(zion_x_hanare, zion_z_hanare, 0)

create_torus(zion_x_hanare, zion_y_hanare + zion_z_hanare, 0)


# トーラスをすべてx軸に90度回転する

for obj in bpy.data.objects:

    if obj.name.startswith("TorusObject"):

        obj.rotation_euler.rotate_axis("X", math.radians(90))


# トーラスを平行移動する

for obj in bpy.data.objects:

    if obj.name.startswith("TorusObject"):

        obj.location += mathutils.Vector(zion_heikou_idou)











import bpy

import mathutils

import math


# 外接円の半径とトーラスの 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, -1, 0)

create_torus(0, 0, 0)

create_torus(0, 1, 0)


# トーラスをすべてx軸に90度回転する

for obj in bpy.data.objects:

    if obj.name.startswith("TorusObject"):

        obj.rotation_euler.rotate_axis("X", math.radians(90))




このブログの人気の投稿

基本の   線路レール

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

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