MRが楽しい

MRやVRについて学習したことを書き残す

Blender3.0で利用可能なpythonスクリプトを作る その130(オイラー角(degrees)で回転を指定する)

本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。

オブジェクトの回転をオイラー角(degrees)で回転を指定する


オブジェクトの回転のオイラー角は rotation_euler 変数で指定可能ですが、ラジアン(弧度)での指定なので度数法の角度を用いたい場合は変換を行う必要があります。
docs.blender.org

度数法の角度からラジアン(弧度)への変換は math.radians で可能です。
docs.python.org

サンプルスクリプト

変換関数を利用して度数法の角度を使ったオイラー角でオブジェクトの回転を指定します。
・Script_convert_rotation_eulerradian.py

# bpyインポート
import bpy
# 角度計算のため
import math

# オイラー角(degree)をオイラー角(radian)に変換して返す
def convert_rotation_eulerradian(arg_x:float, arg_y:float, arg_z:float) -> list:
    """オイラー角(degree)をオイラー角(radian)に変換して返す

    Keyword Arguments:
        arg_x {float} -- オイラー角(degree) X角度
        arg_y {float} -- オイラー角(degree) Y角度
        arg_z {float} -- オイラー角(degree) Z角度

    Returns:
        list -- 回転(オイラー角(radian))
    """

    # オイラー角を radian に変換する
    x, y, z = (math.radians(arg_x), math.radians(arg_y), math.radians(arg_z))
    
    return (x, y, z)

# 関数の実行例
# 回転を degree から radian に変換して rotation_euler に設定する
# (https://docs.blender.org/api/current/bpy.types.Object.html?highlight=rotation_euler#bpy.types.Object.rotation_euler)
bpy.data.objects.get("Cube").rotation_euler = convert_rotation_eulerradian(30.0, 45.0, 60.0)