2023年3月19日日曜日

aaa






ユーザー様が送ってくださった要求は、球体AをX軸方向に移動させるときに、球体BをY軸方向に移動させるものだと思います。しかし、この要求では、球体AとBの移動速度や移動範囲が明確ではありません。また、Blenderのバージョンは3.4.1ではなく3.0.0だと思います。

Blenderでオブジェクトを特定の軸方向に移動させるには,`obj.location`や`obj.matrix_world.translation`を使うことができます¹。また,オブジェクトの位置をキーフレームとして登録することで,アニメーションを作成することができます²。

例えば,以下のコードでは,球体AをX軸方向に-30から30まで移動させています。そして,球体Aが原点(0, 0, 0)を通過したら,球体BをY軸方向に0から-30まで移動させています。

```python
import bpy

# 球体Aを作成する
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, enter_editmode=False, location=(-30, 0, 0))
objA = bpy.context.active_object

# 球体Aにマテリアルを設定する
matA = bpy.data.materials.new(name="SphereMatA")
matA.use_nodes = True
nodes = matA.node_tree.nodes
principled_bsdf = nodes.get("Principled BSDF")
principled_bsdf.inputs[0].default_value = (1, 0, 0, 1)
principled_bsdf.inputs[7].default_value = 0.5
objA.data.materials.append(matA)

# 球体Bを作成する
bpy.ops.mesh.primitive_uv_sphere_add(radius=1, enter_editmode=False, location=(0, 0, 0))
objB = bpy.context.active_object

# 球体Bにマテリアルを設定する
matB = bpy.data.materials.new(name="SphereMatB")
matB.use_nodes = True
nodes = matB.node_tree.nodes
principled_bsdf = nodes.get("Principled BSDF")
principled_bsdf.inputs[0].default_value = (0, 1, 1, 1)
principled_bsdf.inputs[7].default_value = 0.5
objB.data.materials.append(matB)

# 球体AとBの位置変数を初期化する
pos_A_x = -30 # 球体AのX座標(-30から30まで)
pos_B_y = 0 # 球体BのY座標(-30から0まで)

# 移動速度変数(フレームごとに増減される値)を設定する
speed_A_x = +2 # 球体AのX軸方向の速度(+2メートル/フレーム)
speed_B_y = -2 # 球体BのY軸方向の速度(-2メートル/フレーム)

# アニメーション用のフレーム数変数(40秒間)を設定する
frames = int(40 * bpy.context.scene.render.fps)

# フレームごとにオブジェクトの位置を更新してキーフレーム登録するループ処理
for i in range(frames):
    # 現在のフレーム番号を設定する
    bpy.context.scene.frame_set(i)
    
    # 球体Aが原点(0, 0 , 0)より左側か右側か
































bbb

連番 007 未来光円錐 過去光円錐 円周中心からの球体放出

aaa 参考 2023年3月26日日曜日 製作 002b 未来光円錐の方向 線路レールで https://ia2023sha.blogspot.com/2023/03/002b.html import bpy import math zion_co...