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

Blender

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

# rotation_modeプロパティによるオブジェクトの回転情報(モード)の変更
# ROTATION_MODE: 'XYZ','XZY','YXZ','YZX','ZXY','ZYX','AXIS_ANGLE','QUATERNION'
"Object".rotation_mode = ROTATION_MODE

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

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

# rotation_quaternionプロパティによるオブジェクトの回転情報(quaternion)の変更
"Object".rotation_quaternion = "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
import mathutils
import math

NewRotationXYZ = mathutils.Euler((math.radians(90.0), math.radians(0.0), math.radians(0.0)), 'XYZ')

CubeObject = bpy.data.objects["Cube"]
CubeObject.rotation_mode  = NewRotationXYZ.order
CubeObject.rotation_euler = NewRotationXYZ
CubeRotation = CubeObject.rotation_euler

print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

NewRotationAxisAngle = [math.radians(90.0), 1.0, 0.0, 0.0]

CubeObject = bpy.data.objects["Cube"]
CubeObject.rotation_axis_angle = NewRotationAxisAngle
CubeRotation = CubeObject.rotation_axis_angle

print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")

NewRotationQuaternion = mathutils.Quaternion((0.707107, 0.707107, 0.0, 0.0))

CubeObject = bpy.data.objects["Cube"]
CubeObject.rotation_quaternion = NewRotationQuaternion
CubeRotation = CubeObject.rotation_quaternion

print(f"Cube Rotation:\n{CubeRotation} {type(CubeRotation)}")
Cube Rotation:
<Euler (x=1.5708, y=0.0000, z=0.0000), order='XYZ'> <class 'Euler'>
Cube Rotation:
<bpy_float[4], Object.rotation_axis_angle> <class 'bpy_prop_array'>
Cube Rotation:
<Quaternion (w=0.7071, x=0.7071, y=0.0000, z=0.0000)> <class 'Quaternion'>

まとめ

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

関連検索ワード

How to set rotation of object data?

関連キーワード

blender, python, set, rotation, object, 変更, 回転, オブジェクト