夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blender Pythonであるオブジェクトに対して別のオブジェクトの向きを向ける

本日はBlender枠です。

今回はBlender Pythonを使用してあるオブジェクトの向きをもう一つのオブジェクトに向ける実装を行っていきます。

〇環境

・Windows11

Blender 4.1

〇最初に選択したオブジェクトに2つ目に選択したオブジェクトを向ける

今回は次のようなコードを実装しました。

import bpy
import mathutils

# 選択されたすべてのオブジェクトを取得
selected_objects = bpy.context.selected_objects

# アクティブなオブジェクトを取得
active_object = bpy.context.active_object

if len(selected_objects) >= 2:
    # 最初に選択したオブジェクトと最後に選択したオブジェクトを取得
    obj1 = [obj for obj in selected_objects if obj != active_object][0]
    obj2 = bpy.context.active_object

    # 最初のオブジェクトの方向に二つ目のオブジェクトを向けます
    direction = obj1.location - obj2.location
    rot_quat = direction.to_track_quat('Z', 'Y')

    obj2.rotation_euler = rot_quat.to_euler()
else:
    print("2つ以上のオブジェクトを選択してください。")

このコードを実行すると2つめに選択したオブジェクトが最初に選択をしたオブジェクトを向くようになります。

当然ですが逆も可能です。

このコードでは選択されているオブジェクト数が2の場合のみ実行されます。if len(selected_objects) >= 2:

obj1,obj2として最初に取得されたオブジェクト、最後に選択されたオブジェクトを取得できます。

こののち座標計算でオブジェクトの向きを変更しています。

本日は以上です。