【Blender×Python】オブジェクトの回転情報を取得する方法について徹底解説

Blender

「bpy」とは、PythonからBlenderの機能を呼び出すことができるBlender Python APIのことです。Blenderはオープンソースの3Dアニメーションソフトウェアであり、「bpy」を使うことでBlenderの様々な機能をPythonスクリプトから呼び出して利用することができます。本記事では、「bpy」を用いたオブジェクトの回転情報を取得する方法を紹介します。

# rotation_modeプロパティによるオブジェクトの回転情報(モード)の取得
"Object".rotation_mode

# rotation_eulerプロパティによるオブジェクトの回転情報(euler)の取得
"Object".rotation_euler

# rotation_axis_angleプロパティによるオブジェクトの回転情報(axis angle)の取得
"Object".rotation_axis_angle

# rotation_quaternionプロパティによるオブジェクトの回転情報(quaternion)の取得
"Object".rotation_quaternion

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Blender上で、どの様にPythonを使うの?
・Blender上のPythonで、どの様にオブジェクトの回転情報を取得するの?

また、「bpy」を使用する上で基礎的な情報は下記の記事で紹介しております。
他の「bpy」のクラスや関数について気になる方はこちらの記事をご覧ください。

rotation_modeプロパティ/rotation_eulerプロパティ/rotation_axis_angleプロパティ/rotation_quaternionプロパティによるオブジェクトの回転情報の取得

“Object”.rotation_modeプロパティの基本構文

"Object".rotation_mode
→ Object.rotation_mode: str

“Object”.rotation_eulerプロパティの基本構文

"Object".rotation_euler
→ Object.rotation_euler: Euler

“Object”.rotation_axis_angleプロパティの基本構文

"Object".rotation_axis_angle
→ Object.rotation_axis_angle: bpy_prop_array

“Object”.rotation_quaternionプロパティの基本構文

"Object".rotation_quaternion
→ Object.rotation_quaternion: Quaternion

“Object”.rotation_modeプロパティ/”Object”.rotation_eulerプロパティ/”Object”.rotation_axis_angleプロパティ/”Object”.rotation_quaternionプロパティの使い方

import bpy

CubeObject = bpy.data.objects["Cube"]
CubeRotationMode = CubeObject.rotation_mode

print(f"Cube Rotation Mode: {CubeRotationMode} {type(CubeRotationMode)}")

if CubeRotationMode=="XYZ":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="XZY":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="YXZ":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="YZX":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="ZXY":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="ZYX":
    CubeRotation = CubeObject.rotation_euler
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

elif CubeRotationMode=="AXIS_ANGLE":
    CubeRotation = CubeObject.rotation_axis_angle
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")
    CubeRotationList = [value for value in CubeRotation]
    print(f"Collection Rotation List:\n{CubeRotationList}")

elif CubeRotationMode=="QUATERNION":
    CubeRotation = CubeObject.rotation_quaternion
    print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")
Cube Rotation Mode: AXIS_ANGLE <class 'str'>
Cube Rotation Mode: QUATERNION <class 'str'>
Cube Rotation Mode: XYZ <class 'str'>
Cube Rotation Mode: XZY <class 'str'>
Cube Rotation Mode: YXZ <class 'str'>
Cube Rotation Mode: YZX <class 'str'>
Cube Rotation Mode: ZXY <class 'str'>
Cube Rotation Mode: ZYX <class 'str'>
Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='XYZ'> <class 'Euler'>

Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='XZY'> <class 'Euler'>

Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='YXZ'> <class 'Euler'>

Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='YZX'> <class 'Euler'>

Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='ZXY'> <class 'Euler'>

Cube Rotation:
<Euler (x=0.0000, y=0.0000, z=0.0000), order='ZYX'> <class 'Euler'>

Cube Rotation:
<bpy_float[4], Object.rotation_axis_angle> <class 'bpy_prop_array'>
Collection Rotation List:
[0.0, 0.0, 1.0, -0.0]

Cube Rotation:
<Quaternion (w=1.0000, x=0.0000, y=0.0000, z=-0.0000)> <class 'Quaternion'>

まとめ

「bpy」(Blender Python API)は、Pythonを使ったBlenderの開発に非常に役立ちます。この記事では、オブジェクトの回転情報を取得する方法を紹介しました。ぜひ活用してみてください。

関連検索ワード

How to get rotation of object data?

関連キーワード

blender, python, get, rotation, object, 取得, 回転, オブジェクト