コレクションだけを作って
”railcars"
"red points"
"pink points"
blender python
カメラを配置して
カメラの向きは xyz=000
位置は 円周上
円周は 半径1 中心000
等間隔に16台カメラ配置して
コレクションを作って入れて
名前は 円周上の角度で
import bpy
import math
import mathutils
# カメラの数
num_cameras = 16
# 円周の半径
radius = 5.0
# 被写体の位置
target_location = mathutils.Vector((0, 0, 0))
# コレクションを作成
collection_name = "CameraCollection"
if collection_name not in bpy.data.collections:
bpy.data.collections.new(collection_name)
bpy.context.scene.collection.children.link(bpy.data.collections[collection_name])
# 円周上にカメラを等間隔に配置
for i in range(num_cameras):
angle = 2 * math.pi * i / num_cameras
x = radius * math.cos(angle)
y = radius * math.sin(angle)
z = 0.0 # カメラの高さを調整する場合は適宜変更してください
# カメラを作成
bpy.ops.object.camera_add(location=(x, y, z))
camera = bpy.context.object
# 被写体の位置への方向ベクトルを計算
direction = (target_location - camera.location).normalized()
# カメラの向きを設定(180度回転)
camera.rotation_euler = direction.to_track_quat('Z', 'Y').to_euler()
camera.rotation_euler[2] += math.radians(180)
# カメラの名前を角度に設定
camera.name = f"Camera_{i:02d}_{math.degrees(angle):.2f}deg"
カメラを 3秒ごとに 切替えて
正方形を作る
1辺 12
中心
000
-12、0、0
+12.0.0
import bpy
import math
# 正方形の1辺の長さ
side_length = 12.0
# 3つの正方形の位置(指定地に配置する座標)
positions = [
(0, 0, 0),
(-12, 0, 0),
(12, 0, 0)
]
# 3つの色を用意(指定の色)
colors = [(0.0, 0.0, 0.4, 1.0), # 赤
(0.0, 0.0, 0.6, 1.0), # 緑
(0.0, 0.0, 0.8, 1.0)] # 青
# 3つの正方形を作成し、位置と色を設定
for i, (position, color) in enumerate(zip(positions, colors)):
# 新しいメッシュを作成
mesh = bpy.data.meshes.new(f"SquareMesh_{i}")
obj = bpy.data.objects.new(f"Square_{i}", mesh)
# シーンに追加
scene = bpy.context.scene
scene.collection.objects.link(obj)
# メッシュの頂点を設定
vertices = [
(side_length / 2, side_length / 2, 0),
(-side_length / 2, side_length / 2, 0),
(-side_length / 2, -side_length / 2, 0),
(side_length / 2, -side_length / 2, 0)
]
mesh.from_pydata(vertices, [], 0, 1, 2, 3)
# オブジェクトの位置を設定
obj.location = position
# マテリアルを作成しオブジェクトに割り当てる
mat = bpy.data.materials.new(name=f"Material_{i}")
mat.use_nodes = False # ノードを使用しない
mat.diffuse_color = color
obj.data.materials.append(mat)
import bpy
import math
# 正方形の1辺の長さ
side_length = 12.0
# 3つの正方形の位置(指定地に配置する座標)
positions = [
(0, 0, 0),
(-6, 0, 0),
(6, 0, 0)
]
# 3つの正方形を作成し、位置を設定
for i, position in enumerate(positions):
# 新しいメッシュを作成
mesh = bpy.data.meshes.new(f"SquareMesh_{i}")
obj = bpy.data.objects.new(f"Square_{i}", mesh)
# シーンに追加
scene = bpy.context.scene
scene.collection.objects.link(obj)
# メッシュの頂点を設定
vertices = [
(side_length / 2, side_length / 2, 0),
(-side_length / 2, side_length / 2, 0),
(-side_length / 2, -side_length / 2, 0),
(side_length / 2, -side_length / 2, 0)
]
mesh.from_pydata(vertices, [], [[0, 1, 2, 3]])
# オブジェクトをアクティブにする
bpy.context.view_layer.objects.active = obj
# メッシュをアクティブにしてオブジェクトモードに切り替え
bpy.ops.object.mode_set(mode="OBJECT")
# オブジェクトの位置を設定
obj.location = position
import bpy import math # 正方形の1辺の長さ side_length = 12.0 # 3つの正方形の位置(指定地に配置する座標) positions = [ (0, 0, 0), (-6, 0, 0), (6, 0, 0) ] # 3つの正方形を作成し、位置を設定 for i, position in enumerate(positions): # 新しいメッシュを作成 mesh = bpy.data.meshes.new(f"SquareMesh_{i}") obj = bpy.data.objects.new(f"Square_{i}", mesh) # シーンに追加 scene = bpy.context.scene scene.collection.objects.link(obj) # メッシュの頂点を設定 vertices = [ (side_length / 2, side_length / 2, 0), (-side_length / 2, side_length / 2, 0), (-side_length / 2, -side_length / 2, 0), (side_length / 2, -side_length / 2, 0) ] mesh.from_pydata(vertices, [], [[0, 1, 2, 3]]) # オブジェクトをアクティブにする bpy.context.view_layer.objects.active = obj # メッシュをアクティブにしてオブジェクトモードに切り替え bpy.ops.object.mode_set(mode="OBJECT") # オブジェクトの位置を設定 obj.location = position
オブジェクトに色を付けるには、オブジェクトのマテリアルを設定する必要があります。指定された位置によって色を変化させるために、3つの色を用意し、それに応じて正方形にマテリアルを割り当てます。
以下のスクリプトは、1辺が12の正方形を3つ作成し、指定した位置に配置し、左からxが小さい方から薄青、青、濃い青の色を割り当てます。
import bpy
import math
# 正方形の1辺の長さ
side_length = 12.0
# 3つの正方形の位置(指定地に配置する座標)
positions = [
(0, 0, 0),
(-12, 0, 0),
(12, 0, 0)
]
# 3つの色を用意(薄青、青、濃い青)
colors = [(0.5, 0.5, 1.0, 1.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.5, 1.0)]
# 3つの正方形を作成し、位置と色を設定
for i, (position, color) in enumerate(zip(positions, colors)):
# 新しいメッシュを作成
mesh = bpy.data.meshes.new(f"SquareMesh_{i}")
obj = bpy.data.objects.new(f"Square_{i}", mesh)
# シーンに追加
scene = bpy.context.scene
scene.collection.objects.link(obj)
# メッシュの頂点を設定
vertices = [
(side_length / 2, side_length / 2, 0),
(-side_length / 2, side_length / 2, 0),
(-side_length / 2, -side_length / 2, 0),
(side_length / 2, -side_length / 2, 0)
]
mesh.from_pydata(vertices, [], [[0, 1, 2, 3]])
# オブジェクトをアクティブにする
bpy.context.view_layer.objects.active = obj
# メッシュをアクティブにしてオブジェクトモードに切り替え
bpy.ops.object.mode_set(mode="OBJECT")
# オブジェクトの位置を設定
obj.location = position
# マテリアルを作成しオブジェクトに割り当てる
mat = bpy.data.materials.new(name=f"Material_{i}")
mat.use_nodes = False # ノードを使用しない
mat.diffuse_color = color
obj.data.materials.append(mat)
このスクリプトを実行すると、1辺が12の正方形が3つ作成され、指定した位置に配置されます。左からxが小さい方から薄青、青、濃い青の色が割り当てられます。スクリプトをBlenderのスクリプトエディターにコピーし、実行してください。
あ
了解しました。指定した位置に3つの正方形を配置するスクリプトを修正します。
import bpy
import math
# 正方形の1辺の長さ
side_length = 12.0
# 3つの正方形の位置(指定地に配置する座標)
positions = [
(0, 0, 0),
(-12, 0, 0),
(12, 0, 0)
]
# 3つの色を用意(薄青、青、濃い青)
colors = [(0.5, 0.5, 1.0, 1.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.5, 1.0)]
# 3つの正方形を作成し、位置と色を設定
for i, (position, color) in enumerate(zip(positions, colors)):
# 新しいメッシュを作成
mesh = bpy.data.meshes.new(f"SquareMesh_{i}")
obj = bpy.data.objects.new(f"Square_{i}", mesh)
# シーンに追加
scene = bpy.context.scene
scene.collection.objects.link(obj)
# メッシュの頂点を設定
vertices = [
(side_length / 2, side_length / 2, 0),
(-side_length / 2, side_length / 2, 0),
(-side_length / 2, -side_length / 2, 0),
(side_length / 2, -side_length / 2, 0)
]
mesh.from_pydata(vertices, [], [[0, 1, 2, 3]])
# オブジェクトをアクティブにする
bpy.context.view_layer.objects.active = obj
# メッシュをアクティブにしてオブジェクトモードに切り替え
bpy.ops.object.mode_set(mode="OBJECT")
# オブジェクトの位置を設定
obj.location = position
# マテリアルを作成しオブジェクトに割り当てる
mat = bpy.data.materials.new(name=f"Material_{i}")
mat.use_nodes = False # ノードを使用しない
mat.diffuse_color = color
obj.data.materials.append(mat)
この修正済みのスクリプトを実行すると、辺長さが12の正方形が3つ作成され、指定した位置に配置されます。左からxが小さい方から薄青、青、濃い青の色が割り当てられます。スクリプトをBlenderのスクリプトエディターにコピーし、実行してください。
ああ