2023年7月9日日曜日

20230710 mon 球体で 数直線

 




RGBAのカラーサンプル

https://ywork2020.com/content/tips-rgba-color-sample.html


RGBAの各成分を255の範囲から1.0の範囲に変換するためには、次のような変換を行います。

  1. RGBAの各成分の値を0から255の範囲に持つ整数として取得します。
  2. 各成分の値を255で除算します。
  3. 得られた結果を小数点以下2桁まで丸めます。

以下にPythonのコード例を示します。






blender python で スクリプト 書く


円柱を3つ作る

円柱長さ 10

円柱半径 0.01

円柱中心位置 Bleu  0,0,+1

円柱中心位置 Green  0,0,0

円柱中心位置 Red  0,0,-1



# 3本の円柱 

import bpy

import math


# 円柱を作成する関数

def create_cylinder(center_point, index):

    bpy.ops.mesh.primitive_cylinder_add(

        align='WORLD',

        location=center_point,

        depth=10,

        rotation=(0, math.pi/2, 0),  # y軸を回転軸にして90度回転

        radius=0.01

    )


    # 作成した円柱に連番の名前を付ける

    obj = bpy.context.object

    obj.name = "Cylinder{}".format(index)


# 円柱1

center_point_1 = (0, 0, -1)

create_cylinder(center_point_1, 1)


# 円柱2

center_point_2 = (0, 0, 0)

create_cylinder(center_point_2, 2)


# 円柱3

center_point_3 = (0, 0, 1)

create_cylinder(center_point_3, 3)





#色付き 円柱 3つ

import bpy

import math


# 円柱を作成する関数

def create_cylinder(center_point, index, color):

    bpy.ops.mesh.primitive_cylinder_add(

        align='WORLD',

        location=center_point,

        depth=10,

        rotation=(0, math.pi/2, 0),  # y軸を回転軸にして90度回転

        radius=0.01

    )


    # 作成した円柱に連番の名前を付ける

    obj = bpy.context.object

    obj.name = "Cylinder{}".format(index)


    # マテリアルを追加して色を設定

    mat = bpy.data.materials.new("Material{}".format(index))

    mat.use_nodes = True

    obj.data.materials.append(mat)

    

    # ノードエディタで色を設定

    node_tree = mat.node_tree

    principled_bsdf = node_tree.nodes.get("Principled BSDF")

    if principled_bsdf:

        principled_bsdf.inputs[0].default_value = color


# 円柱1

center_point_1 = (0, 0, -1)

color_1 = (200/255, 0.0, 0.0, 0.8)  # 赤色 (RGBA)

create_cylinder(center_point_1, 1, color_1)


# 円柱2

center_point_2 = (0, 0, 0)

color_2 = (0.0, 1.0, 0.0, 1.0)  # 緑色 (RGBA)

create_cylinder(center_point_2, 2, color_2)


# 円柱3

center_point_3 = (0, 0, 1)

color_3 = (0.0, 0.0, 1.0, 1.0)  # 青色 (RGBA)

create_cylinder(center_point_3, 3, color_3)




21個の球体を作る

球体半径 0.02

名前を付ける 連番で Green水平

(-1,0,0) と(+1,0,0) の間に均等配置





# Green水平 球体21個

import bpy


# 球体を作成する関数

def create_sphere(location, index, color):

    bpy.ops.mesh.primitive_uv_sphere_add(

        radius=0.03,

        location=location

    )


    # 作成した球体に連番の名前を付ける

    obj = bpy.context.object

    obj.name = "Green水平{}".format(index)


    # マテリアルを追加して色を設定

    mat = bpy.data.materials.new("Material{}".format(index))

    mat.use_nodes = True

    obj.data.materials.append(mat)


    # ノードエディタで色を設定

    node_tree = mat.node_tree

    principled_bsdf = node_tree.nodes.get("Principled BSDF")

    if principled_bsdf:

        principled_bsdf.inputs[0].default_value = color


# 21個の球体を作成

start_pos = (-1.0, 0.0, 0.0)  # 配置の開始位置

distance = 0.1  # 球体同士の間隔

color = (0.0, 1.0, 0.0, 1.0)  # 緑色 (RGBA)


for i in range(21):

    x = start_pos[0] + (i * distance)

    location = (x, start_pos[1], start_pos[2])

    create_sphere(location, i+1, color)



21個の青い球体を作る

球体半径 0.03 

(0,0,1) と(+2,0,1) の間に均等配置




作った 球体21個を複製し 移動する

(1,0,1) と(+2,0,1) の間に均等配置

名前を付ける 連番で Blue+1水平


作った 球体21個を複製し 移動する

(1,0,1) と(+2,0,1) の間に均等配置

名前を付ける 連番で Blue time+1水平





3つのコレクションを作り 3つに分けて 名前は B原点 B水平移動 B時間移動


import bpy


# コレクションを作成する関数

def create_collection(name):

    collection = bpy.data.collections.new(name)

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


# コレクションを作成

create_collection("B原点")

create_collection("B水平移動")

create_collection("B時間移動")





コレクションだけを作り 名前は 

R原点 

R水平移動 

R時間移動

G時間移動

G原点


import bpy


# コレクションを作成する関数

def create_collection(name):

    collection = bpy.data.collections.new(name)

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


# コレクションの作成

create_collection("R原点")

create_collection("R水平移動")

create_collection("R時間移動")

create_collection("G時間移動")

create_collection("G原点")




20230710 散布図 

 




BlenderのPythonスクリプトを使用して、50個のランダムなXY座標を持つ点の散布図を作成












ChatGPTでGPT-4のCode Interpreterを触ってみる by Yuichiro Minato | blueqat

https://blueqat.com/yuichiro_minato2/45612470-6574-41d1-8940-469669924e12




# 50個のランダムなXY座標を持つ点の散布図

import bpy

import random


# 点の数を指定します

point_count = 50


# ランダムなXY座標を生成します

points = [(random.uniform(-10, 10), random.uniform(-10, 10)) for _ in range(point_count)]


# 点オブジェクトを作成します

for point in points:

    bpy.ops.object.empty_add(location=(point[0], point[1], 0))


# レンダリング設定を調整します

bpy.context.scene.render.engine = 'CYCLES'

bpy.context.scene.cycles.device = 'GPU'


# カメラを設定します

bpy.ops.object.camera_add(location=(0, 0, 20))

bpy.context.scene.camera = bpy.context.object


# ランダムな色のマテリアルを作成します

for obj in bpy.data.objects:

    if obj.type == 'EMPTY':

        mat = bpy.data.materials.new(name='PointMaterial')

        mat.use_nodes = True

        obj.data.materials.append(mat)

        mat.node_tree.nodes.new(type='ShaderNodeRGB')

        mat.node_tree.nodes["RGB"].outputs[0].default_value = (random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1))


# レンダリングを実行します

bpy.ops.render.render(write_still=True)