2023年7月21日金曜日

20230722 上書き 球体 コピー

 



コレクション名 日本語で

作って


" Z=-1” 

" Z=0” 

" Z=+1” 

" Z=+5” 




# 球体の半径

sphere_radius = 0.1


" Z=-1” 


" Z=0” 


" Z=+1” 


" Z=+5” 


Zの位置に

y=0で


X=-1

X=0

X=+1


合計 12個の球体作って


名前は X=-1なら ”左”連番で

X=0 なら ”中央”

X=1なら ”右”









" Z=ー5” にも 作って 





import bpy


# 正方形のサイズと中心位置のリスト

squares = [

    {"size": 2, "location": (0, 0, 5)},

    {"size": 2, "location": (0, 0, 1)},

    {"size": 2, "location": (0, 0, 0)},

    {"size": 2, "location": (0, 0, -1)}

]


# 球体の半径

sphere_radius = 0.1


# 正方形を作成する関数

def create_square(size, location):

    bpy.ops.mesh.primitive_plane_add(size=size, location=location)


# 球体を作成する関数

def create_sphere(radius, location, name):

    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=location)

    bpy.context.active_object.name = name


# 正方形と球体を作成

for i, square_data in enumerate(squares):

    create_square(square_data["size"], square_data["location"])

    create_sphere(sphere_radius, square_data["location"], f"Center_{i}")

    

    # 左側に球体を作成

    left_location = (square_data["location"][0] - 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, left_location, f"Left_{i}")


    # 右側に球体を作成

    right_location = (square_data["location"][0] + 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, right_location, f"Right_{i}")





import bpy


# 正方形のサイズと中心位置のリスト

squares = [

    {"size": 2, "location": (0, 0, 5)},

    {"size": 2, "location": (0, 0, 1)},

    {"size": 2, "location": (0, 0, 0)},

    {"size": 2, "location": (0, 0, -1)}

]


# 球体の半径

sphere_radius = 0.1


# 正方形を作成する関数

def create_square(size, location):

    bpy.ops.mesh.primitive_plane_add(size=size, location=location)


# 球体を作成する関数

def create_sphere(radius, location, name):

    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=location)

    bpy.context.active_object.name = name


# 正方形と球体を作成

for i, square_data in enumerate(squares):

    create_square(square_data["size"], square_data["location"])

    create_sphere(sphere_radius, square_data["location"], f"Center_{i}")

    

    # 左側に球体を作成

    left_location = (square_data["location"][0] - 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, left_location, f"Left_{i}")


    # 右側に球体を作成

    right_location = (square_data["location"][0] + 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, right_location, f"Right_{i}")




import bpy


# 正方形のサイズと中心位置のリスト

squares = [

    {"size": 2, "location": (0, 0, 5)},

    {"size": 2, "location": (0, 0, 1)},

    {"size": 2, "location": (0, 0, 0)},

    {"size": 2, "location": (0, 0, -1)}

]


# 球体の半径

sphere_radius = 0.1


# 正方形を作成する関数

def create_square(size, location):

    bpy.ops.mesh.primitive_plane_add(size=size, location=location)


# 球体を作成する関数

def create_sphere(radius, location, name):

    bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=location)

    bpy.context.active_object.name = name


# 正方形と球体を作成

for i, square_data in enumerate(squares):

    create_square(square_data["size"], square_data["location"])

    create_sphere(sphere_radius, square_data["location"], f"Center_{i}")

    

    # 左側に球体を作成

    left_location = (square_data["location"][0] - 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, left_location, f"Left_{i}")


    # 右側に球体を作成

    right_location = (square_data["location"][0] + 1, square_data["location"][1], square_data["location"][2])

    create_sphere(sphere_radius, right_location, f"Right_{i}")



20230722 sat  追加の ZX平面の 円周

 









CtrlAltキーを押しながらマウスをスクロールすると、視点を横に移動できます。

https://blender-cg.net/mausu-sitenn/






https://blender-cg.net/transform-direction/





blender python で


1辺 2長さの 正方形を作る

正方形の中心は 000

正方形を Z=0 の xy平面に作る





"C:\aaa 2023 dondon\aaa2023いつもの\blender_hozon\Photos-001\94531767-BEA6-40A9-AC2B-BE356C0DD52F-67323-00001437AA34EA91.jpg"



この写真を 貼れるよにする








手動で 画像入れて 反映した


import bpy


# 1辺の長さを定義します

side_length = 2.0


# 正方形を作成します

bpy.ops.mesh.primitive_plane_add(size=side_length, location=(0, 0, 0))


# カメラを選択します

bpy.ops.object.select_all(action='DESELECT')

bpy.context.view_layer.objects.active = None

bpy.context.scene.camera = None


# 画像ファイルのパスを指定します

image_path = r"C:\aaa 2023 dondon\aaa2023いつもの\blender_hozon\Photos-001\94531767-BEA6-40A9-AC2B-BE356C0DD52F-67323-00001437AA34EA91.jpg"


# テクスチャを読み込みます

image_texture = bpy.data.images.load(image_path)


# マテリアルを作成します

material = bpy.data.materials.new(name="PhotoMaterial")

bpy.context.object.data.materials.append(material)


# マテリアルにテクスチャを追加します

material.use_nodes = True

material.node_tree.nodes.clear()

texture_node = material.node_tree.nodes.new(type='ShaderNodeTexImage')

texture_node.image = image_texture

diffuse_shader_node = material.node_tree.nodes["Principled BSDF"]

material.node_tree.links.new(texture_node.outputs["Color"], diffuse_shader_node.inputs["Base Color"])






import bpy


# 1辺の長さを定義します

side_length = 2.0


# 正方形を作成します

bpy.ops.mesh.primitive_plane_add(size=side_length, location=(0, 0, -5))

bpy.ops.mesh.primitive_plane_add(size=side_length, location=(0, 0, -1))



import bpy


# 正方形の1辺の長さ

side_length = 2.0


# 正方形の中心座標

center = (0.0, 0.0, 0.0)


# メッシュを作成

mesh = bpy.data.meshes.new(name="Square")


# 頂点を作成

vertices = [

    (center[0] - side_length / 2, center[1] - side_length / 2, center[2]),

    (center[0] + side_length / 2, center[1] - side_length / 2, center[2]),

    (center[0] + side_length / 2, center[1] + side_length / 2, center[2]),

    (center[0] - side_length / 2, center[1] + side_length / 2, center[2])

]


# 面を作成

faces = [(0, 1, 2, 3)]


# メッシュに頂点と面を追加

mesh.from_pydata(vertices, [], faces)

mesh.update()


# テクスチャの作成と設定

img_path ="C:\aaa 2023 dondon\aaa2023いつもの\blender_hozon\Photos-001\94531767-BEA6-40A9-AC2B-BE356C0DD52F-67323-00001437AA34EA91.jpg" # 使用したい写真のパスを指定してください

texture = bpy.data.textures.new(name="Texture", type='IMAGE')

texture.image = bpy.data.images.load(img_path)


# テクスチャをマテリアルに追加

material = bpy.data.materials.new(name="Material")

material.use_nodes = True

bsdf = material.node_tree.nodes["Principled BSDF"]

tex_image = material.node_tree.nodes.new('ShaderNodeTexImage')

tex_image.image = texture.image

material.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])


# オブジェクトを作成

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


# メッシュにマテリアルを割り当てる

obj.data.materials.append(material)


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

scene = bpy.context.scene

scene.collection.objects.link(obj)


# オブジェクトを選択

scene.objects.active = obj

obj.select_set(True)



このコードでは、写真をテクスチャとして読み込み、Blenderのマテリアルに関連付けています。テクスチャは写真を正方形オブジェクトに貼り付けるために使用されます。実際の写真ファイルのパスをimg_path変数に設定して、スクリプトを実行してください。これにより、作成した正方形に写真が貼り付けられます。



"C:\aaa 2023 dondon\aaa2023いつもの\blender_hozon\Photos-001\94531767-BEA6-40A9-AC2B-BE356C0DD52F-67323-00001437AA34EA91.jpg"



Pythonの文字列でバックスラッシュ \ はエスケープ文字として扱われます。これは、特定の文字と組み合わせて特殊な文字を表すためのものです。したがって、img_path変数に指定されたパスのバックスラッシュはエスケープされてしまっており、ファイルの実際のパスが正しく解釈されません。

バックスラッシュを使用したままパスを指定する代わりに、パス文字列の前に r を付けることで生の文字列(Raw string)として扱うことができます。これにより、バックスラッシュがエスケープされずにそのままの形で扱われるようになります。

修正したコードは以下のようになります:



import bpy


# 正方形の1辺の長さ

side_length = 2.0


# 正方形の中心座標

center = (0.0, 0.0, 0.0)


# メッシュを作成

mesh = bpy.data.meshes.new(name="Square")


# 頂点を作成

vertices = [

    (center[0] - side_length / 2, center[1] - side_length / 2, center[2]),

    (center[0] + side_length / 2, center[1] - side_length / 2, center[2]),

    (center[0] + side_length / 2, center[1] + side_length / 2, center[2]),

    (center[0] - side_length / 2, center[1] + side_length / 2, center[2])

]


# 面を作成

faces = [(0, 1, 2, 3)]


# メッシュに頂点と面を追加

mesh.from_pydata(vertices, [], faces)

mesh.update()


# テクスチャの作成と設定

img_path = r"C:\aaa 2023 dondon\aaa2023いつもの\blender_hozon\Photos-001\94531767-BEA6-40A9-AC2B-BE356C0DD52F-67323-00001437AA34EA91.jpg"  # 使用したい写真のパスを指定してください

texture = bpy.data.textures.new(name="Texture", type='IMAGE')

texture.image = bpy.data.images.load(img_path)


# テクスチャをマテリアルに追加

material = bpy.data.materials.new(name="Material")

material.use_nodes = True

bsdf = material.node_tree.nodes["Principled BSDF"]

tex_image = material.node_tree.nodes.new('ShaderNodeTexImage')

tex_image.image = texture.image

material.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])


# オブジェクトを作成

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


# メッシュにマテリアルを割り当てる

obj.data.materials.append(material)


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

scene = bpy.context.scene

scene.collection.objects.link(obj)


# オブジェクトを選択

scene.objects.active = obj

obj.select_set(True)










あああ