「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, 取得, 回転, オブジェクト