2023年3月9日木曜日

試作ノート トーラスと ランダム球体









import bpy
import math
import random

# トーラスの作成
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, location=(0, 0, 0))
bpy.context.active_object.name = "AAA_Torus"
torus = bpy.context.active_object

# トーラスを別のコレクションに移動
main_torus_collection = bpy.data.collections.new(name="main_Torus")
bpy.context.scene.collection.children.link(main_torus_collection)
main_torus_collection.objects.link(torus)

# 球体をトーラス表面にランダムに生成
sub_200_spheres_collection = bpy.data.collections.new(name="sub_200_spheres")
bpy.context.scene.collection.children.link(sub_200_spheres_collection)

for i in range(200):
    # トーラス表面上のランダムな位置を計算
    u = random.uniform(0, 2*math.pi)
    v = random.uniform(0, 2*math.pi)
    x = (10 + 1*math.cos(v)) * math.cos(u)
    y = (10 + 1*math.cos(v)) * math.sin(u)
    z = 1 * math.sin(v)

    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))
    sphere = bpy.context.active_object
    sphere.name = "Sphere" + str(i)
    sub_200_spheres_collection.objects.link(sphere)

# コレクションの名前を変更
sub_200_spheres_collection.name = "sub_200_spheres"

















あああああああああああああああああああああああああああああああ

import bpy
import math
import random

# トーラスの作成
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, location=(0, 0, 0))
bpy.context.active_object.name = "AAA_Torus"
torus = bpy.context.active_object

# 球体をトーラス表面にランダムに生成
sphere_collection = bpy.data.collections.new(name="200_Spheres")
bpy.context.scene.collection.children.link(sphere_collection)

for i in range(200):
    # トーラス表面上のランダムな位置を計算
    u = random.uniform(0, 2*math.pi)
    v = random.uniform(0, 2*math.pi)
    x = (10 + 1*math.cos(v)) * math.cos(u)
    y = (10 + 1*math.cos(v)) * math.sin(u)
    z = 1 * math.sin(v)

    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))
    sphere = bpy.context.active_object
    sphere.name = "Sphere" + str(i)
    sphere_collection.objects.link(sphere)


# トーラスを別のコレクションに移動
torus_collection = bpy.data.collections.new(name="main_Torus")
bpy.context.scene.collection.children.link(torus_collection)
torus_collection.objects.link(torus)







torus_material = bpy.data.materials.new(name="Torus_Material")
torus_material.use_nodes = True
torus_material_output = torus_material.node_tree.nodes.get("Material Output")
torus_material_output.location = (400, 0)
torus_material_diffuse = torus_material.node_tree.nodes.new(type="ShaderNodeBsdfDiffuse")
torus_material_diffuse.location = (0, 0)
torus_material_diffuse.inputs["Color"].default_value = (0, 1, 0, 0.1)
torus_material_node = torus_material.node_tree.nodes.get("Principled BSDF")
torus_material_node.inputs["Alpha"].default_value = 0.1
torus_material_node.location = (200, 0)
torus_material_link = torus_material.node_tree.links.new(torus_material_diffuse.outputs[0], torus_material_node.inputs[0])
torus_material_link = torus_material.node_tree.links.new(torus_material_node.outputs[0], torus_material_output.inputs[0])
torus.data.materials.append(torus_material)
ああああああああああああああああああああ

追加だけのスクリプト書いて トーラスを透明 わずかに緑色で塗る


# コレクションの名前を変更
sphere_collection.name = "200_Spheres"





以下が、トーラスを透明にし、わずかに緑色で塗るスクリプトになります。

python
import bpy # トーラスを選択状態にする bpy.context.view_layer.objects.active = bpy.data.objects['AAA_Torus'] # トーラスのマテリアルを作成 mat = bpy.data.materials.new(name="Torus_Material") mat.use_nodes = True nodes = mat.node_tree.nodes links = mat.node_tree.links diffuse = nodes.get("Diffuse BSDF") emission = nodes.new(type='ShaderNodeEmission') emission.inputs[0].default_value = (0.0, 0.5, 0.0, 1.0) mix = nodes.new(type='ShaderNodeMixShader') output = nodes.get("Material Output") links.new(diffuse.outputs['BSDF'], mix.inputs[1]) links.new(emission.outputs['Emission'], mix.inputs[2]) links.new(mix.outputs['Shader'], output.inputs['Surface']) # トーラスを透明にする bpy.data.objects['AAA_Torus'].active_material.blend_method = 'BLEND' bpy.data.objects['AAA_Torus'].active_material.shadow_method = 'TRANSPARENT' bpy.data.objects['AAA_Torus'].active_material.alpha_threshold = 0.0

上記スクリプトでは、トーラスのマテリアルを作成して、Diffuse BSDFとEmissionノードを混合して、わずかに緑色で塗っています。また、トーラスを透明にするために、blend_method、shadow_method、alpha_thresholdを設定しています。

なお、上記スクリプトを実行する前に、トーラスがシーンに存在している必要があります。


import bpy

# トーラスを選択状態にする
bpy.context.view_layer.objects.active = bpy.data.objects['AAA_Torus']

# トーラスのマテリアルを作成
mat = bpy.data.materials.new(name="Torus_Material")
mat.use_nodes = True
nodes = mat.node_tree.nodes
links = mat.node_tree.links
diffuse = nodes.get("Diffuse BSDF")
emission = nodes.new(type='ShaderNodeEmission')
emission.inputs[0].default_value = (0.0, 0.5, 0.0, 1.0)
mix = nodes.new(type='ShaderNodeMixShader')
output = nodes.get("Material Output")
links.new(diffuse.outputs['BSDF'], mix.inputs[1])
links.new(emission.outputs['Emission'], mix.inputs[2])
links.new(mix.outputs['Shader'], output.inputs['Surface'])

# トーラスを透明にする
bpy.data.objects['AAA_Torus'].active_material.blend_method = 'BLEND'
bpy.data.objects['AAA_Torus'].active_material.shadow_method = 'TRANSPARENT'
bpy.data.objects['AAA_Torus'].active_material.alpha_threshold = 0.0














import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1)

# トーラスの表面に100個の球体をランダムに描く
for i in range(100):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)
    
    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))






ああああああああああああああああああああああ
試作

import bpy
import math
import random

# トーラスの作成
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, location=(0, 0, 0))
bpy.context.active_object.name = "AAA_Torus"
torus = bpy.context.active_object


# 球体をランダムに生成
sphere_collection = bpy.data.collections.new(name="200_Spheres")
bpy.context.scene.collection.children.link(sphere_collection)

for i in range(200):
    x = random.uniform(-10, 10)
    y = random.uniform(-10, 10)
    z = random.uniform(-1, 1)
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))
    sphere = bpy.context.active_object
    sphere.name = "Sphere" + str(i)
    sphere_collection.objects.link(sphere)

# コレクションの名前を変更
sphere_collection.name = "200_Spheres"







import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1)

# トーラスオブジェクトに名前を設定する torus_obj = bpy.context.object torus_obj.name = 'AAA_Torus'


# コレクションを作成し、トーラスオブジェクトを移動する torus_collection = bpy.data.collections.new('TorusCollection') bpy.context.scene.collection.children.link(torus_collection) torus_collection.objects.link(torus_obj)


# トーラスの表面に100個の球体をランダムに描く
for i in range(100):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)
    
    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))





# トーラスオブジェクトに名前を設定する bpy.context.object.name = 'AAA_Torus'



import bpy import math import random # トーラスを描く bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(0, 0, 0)) # トーラスオブジェクトに名前を設定する torus_obj = bpy.context.object torus_obj.name = 'AAA_Torus' # コレクションを作成し、トーラスオブジェクトを移動する torus_collection = bpy.data.collections.new('TorusCollection') bpy.context.scene.collection.children.link(torus_collection) torus_collection.objects.link(torus_obj)







import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1)

# トーラスの表面に100個の球体をランダムに描く
for i in range(100):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)
    
    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))












トーラスの名前をAAA_Torusに変更するには、
以下のようにスクリプトを変更します。



import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(0, 0, 0))
# トーラスオブジェクトに名前を設定する
bpy.context.object.name = 'AAA_Torus'

# トーラスの表面に100個の球体をランダムに描く
for i in range(100):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)
    
    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))



あああああああああああああああああああああああ


エラーあり


import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(0, 0, 0))

# トーラスオブジェクトに名前を設定する
torus_obj = bpy.context.object
torus_obj.name = 'AAA_Torus'

# コレクションを作成し、トーラスオブジェクトを移動する
torus_collection = bpy.data.collections.new('TorusCollection')
bpy.context.scene.collection.children.link(torus_collection)
torus_collection.objects.link(torus_obj)

# 球体を描く
sphere_collection = bpy.data.collections.new('SphereCollection')
bpy.context.scene.collection.children.link(sphere_collection)

for i in range(200):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)

    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))
    sphere_obj = bpy.context.object
    
    # 球体オブジェクトに名前を設定する
    sphere_obj.name = 'Sphere{}'.format(i)
    
    # 球体オブジェクトをコレクションに移動する
    sphere_collection.objects.link(sphere_obj)














あああああああああああああああああああ




import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1)


# トーラスに緑色のマテリアルを設定する
mat = bpy.data.materials.new(name="Green")
mat.diffuse_color = (0, 1, 0)
bpy.context.object.data.materials.append(mat)


















aaa

import bpy
import math
import random

# トーラスを描く
bpy.ops.mesh.primitive_torus_add(major_radius=10, minor_radius=1)

# トーラスに緑色のマテリアルを設定する
mat = bpy.data.materials.new(name="Green")
mat.diffuse_color = (0, 1, 0)
bpy.context.object.data.materials.append(mat)

# トーラスの表面に200個の球体をランダムに描く
for i in range(200):
    # 球体を描く位置をランダムに決定する
    theta = random.uniform(0, 2 * math.pi)
    phi = random.uniform(0, 2 * math.pi)
    x = (10 + 1 * math.cos(phi)) * math.cos(theta)
    y = (10 + 1 * math.cos(phi)) * math.sin(theta)
    z = 1 * math.sin(phi)
    
    # 球体を描く
    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(x, y, z))
    
    # 球体に赤色のマテリアルを設定する
    mat = bpy.data.materials.new(name="Red")
    mat.diffuse_color = (1, 0, 0)
    bpy.context.object.data.materials.append(mat)




import bpy
import math
import random

# Define the parameters
num_spheres = 500
outer_radius = 1
inner_radius = 0.02

# Create the outer sphere and rename it
bpy.ops.mesh.primitive_uv_sphere_add(radius=outer_radius)
big_sphere = bpy.context.active_object
big_sphere.name = "Big_sphere"

# Create the inner spheres
for i in range(num_spheres):
    theta = random.uniform(0, 2*math.pi)
    phi = random.uniform(0, math.pi)
    x = outer_radius * math.sin(phi) * math.cos(theta)
    y = outer_radius * math.sin(phi) * math.sin(theta)
    z = outer_radius * math.cos(phi)
    bpy.ops.mesh.primitive_uv_sphere_add(radius=inner_radius, location=(x, y, z))







bbb
togetter.com/t/c2022meetzionad
togetter.com/t/b2022meetzionad




twitter 新着検索 Dürer & 測距儀


aaa









bbb
twitter zionadchat
twitter に追い出されたら 連絡先は Gettr https://gettr.com/user/zionadchat
twitter サブアカウント https://twitter.com/2022zionad

old page いいい
new page いいい

目次 2022の目次 単純トリック hatena zionadchat
いいいいいいいい

伊勢丹 建物広告 球体群 配置 20240323_001

aaa y軸に 球体半径0.1を等間隔に配置して 球体の名前は Sphere_x_y_z で 小数1桁で 座標位置で 名前を作る y=+1から ー1までで 21個の球体で 作る コレクションだけを作って "y軸の球体群" import bpy #...