2023年3月12日日曜日

20230313 mon 球体 動かし動画

aaa


39gmail zionadchat39
日本語で質問しますので、以下形式で回答してください。 【質問の英訳】 【英訳に対する英語の回答】 【英語の回答の日本語訳】 blender 3.4.1 python スクリプト 書いて 冒頭に import math 挿入 内容は  て


0,0,0から0,10,0へ8秒で移動する球体、半径0.5を繰り返すアニメーションを作成してください。

 

この成功しているので学習してもらって 作った


import bpy
import math

# 半径0.1の球体を作成し、初期位置を設定する
radius = 0.2
location = (10, 0, 0)
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=location)

# アニメーションのフレーム設定を行う
start_frame = 1  # アニメーションの最初のフレーム
end_frame = 400  # アニメーションの最後のフレーム
bpy.context.scene.frame_start = start_frame  # アニメーションの開始フレームを設定
bpy.context.scene.frame_end = end_frame  # アニメーションの終了フレームを設定

# キーフレームを設定する
obj = bpy.context.object  # オブジェクトを選択
obj.location = (10, 0, 0)  # 開始位置を設定
obj.keyframe_insert(data_path="location", frame=start_frame)  # 開始フレームでキーフレームを設定
obj.location = (-10, 0, 0)  # 終了位置を設定
obj.keyframe_insert(data_path="location", frame=end_frame)  # 終了フレームでキーフレームを設定


# アニメーション再生
bpy.ops.screen.animation_play()  # アニメーションを再生





import bpy

# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(0, 0, 0))

# オブジェクトを取得
sphere = bpy.context.object

# 移動アニメーションを作成
anim_data = sphere.animation_data_create()
anim_data.action = bpy.data.actions.new(name="sphere_anim")

# 移動のキーフレームを設定
for i in range(2):
    loc = [0, 10, 0] if i == 0 else [0, 0, 0]
    sphere.location = loc
    sphere.keyframe_insert(data_path="location", frame=i*240+1)

# 繰り返すアニメーションを作成
anim_data.action.frame_range = (1, 480)
anim_data.action.repeat = True
anim_data.action.extrapolation = 'LINEAR'









import bpy # 球体を作成 bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(0, 0, 0)) # オブジェクトを取得 sphere = bpy.context.object # 移動アニメーションを作成 anim_data = sphere.animation_data_create() anim_data.action = bpy.data.actions.new(name="sphere_anim") # 移動のキーフレームを設定 for i in range(2): loc = [0, 10, 0] if i == 0 else [0, 0, 0] sphere.location = loc sphere.keyframe_insert(data_path="location", frame=i*240+1) # 繰り返すアニメーションを作成 anim_data.action.frame_range = (1, 480) anim_data.action.repeat = True anim_data.action.extrapolation = 'LINEAR'





申し訳ありません、前回の回答で0.3球体の動きが逆方向になっていることについて修正するコードを追加し忘れていました。以下が修正済みのコードです。


この修正コードでは、0.3の球体の位置を修正するために、loc2の値を修正しています。修正前のコードでは、if i == 0の条件分岐で0.3球体が移動する位置が0になっていたため、正しく動いていませんでした。修正後のコードでは、if i == 1の条件分岐で0.3球体が移動する位置を(-10,0,0)に設定しています。





逆方向に動く

import  math
import bpy

# 1つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(0, 0, 0))
sphere1 = bpy.context.object

# 2つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere2 = bpy.context.object

# 移動アニメーションを作成
anim_data1 = sphere1.animation_data_create()
anim_data2 = sphere2.animation_data_create()
anim_data1.action = bpy.data.actions.new(name="sphere_anim1")
anim_data2.action = bpy.data.actions.new(name="sphere_anim2")

# 移動のキーフレームを設定
for i in range(2):
    loc1 = [0, 10, 0] if i == 0 else [0, 0, 0]
    loc2 = [0, 0, 0] if i == 1 else [-10, 0, 0] # 修正箇所
    sphere1.location = loc1
    sphere2.location = loc2
    sphere1.keyframe_insert(data_path="location", frame=i*240+1)
    sphere2.keyframe_insert(data_path="location", frame=i*240+1)

# 繰り返すアニメーションを作成
anim_data1.action.frame_range = (1, 480)
anim_data2.action.frame_range = (1, 480)
anim_data1.action.repeat = True
anim_data2.action.repeat = True
anim_data1.action.extrapolation = 'LINEAR'
anim_data2.action.extrapolation = 'LINEAR'









このコードは、Blenderで2つの球体を作成し、1つ目の球体を (0,0,0) から (0,10,0) に移動させ、2つ目の球体を (0,0,0) から (-10,0,0) に移動させるアニメーションを作成しています。また、アニメーションを繰り返し再生するように設定されています。

修正箇所は、2つ目の球体の移動方向です。現在のコードでは、2つ目の球体を (0,0,0) から (0,0,0) に移動しています。これを (-10,0,0) に移動するように修正しています。また、mathモジュールは使用されていません。














bbb

 loc1 = [0, 0, 0] if i == 0 else [-10, 0, 0]
    loc2 = [0, 0, 0] if i == 0 else [10, 0, 0]
    loc3 = [0, 0, 0] if i == 0 else [0, 10, 0]



出発位置を (0, 0, 0) に設定して、3つの球体を同じ位置から出発させ、それぞれ異なる到着位置に向かって移動するアニメーションを作成


import bpy

# 1つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere1 = bpy.context.object

# 2つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere2 = bpy.context.object

# 3つ目の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=0.3, location=(0, 0, 0))
sphere3 = bpy.context.object

# 移動アニメーションを作成
anim_data1 = sphere1.animation_data_create()
anim_data2 = sphere2.animation_data_create()
anim_data3 = sphere3.animation_data_create()

anim_data1.action = bpy.data.actions.new(name="sphere_anim1")
anim_data2.action = bpy.data.actions.new(name="sphere_anim2")
anim_data3.action = bpy.data.actions.new(name="sphere_anim3")

# 移動のキーフレームを設定
for i in range(2):
    loc1 = [0, 0, 0] if i == 0 else [-10, 0, 0]
    loc2 = [0, 0, 0] if i == 0 else [10, 0, 0]
    loc3 = [0, 0, 0] if i == 0 else [0, 10, 0]
    sphere1.location = loc1
    sphere2.location = loc2
    sphere3.location = loc3
    sphere1.keyframe_insert(data_path="location", frame=i*240+1)
    sphere2.keyframe_insert(data_path="location", frame=i*240+1)
    sphere3.keyframe_insert(data_path="location", frame=i*240+1)

# 繰り返すアニメーションを作成
anim_data1.action.frame_range = (1, 480)
anim_data2.action.frame_range = (1, 480)
anim_data3.action.frame_range = (1, 480)

anim_data1.action.repeat = True
anim_data2.action.repeat = True
anim_data3.action.repeat = True

anim_data1.action.extrapolation = 'LINEAR'
anim_data2.action.extrapolation = 'LINEAR'
anim_data3.action.extrapolation = 'LINEAR'







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

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