MRが楽しい

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

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

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

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

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

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

また回転を指定ではなく加算したい場合は mathutils.Euler.rotate 関数を利用することで可能です。
docs.blender.org

サンプルスクリプト

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

# bpyインポート
import bpy
# 型インポート
from mathutils import Euler
# 角度計算のため
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 に mathutils.Euler.rotate で加算する
# (https://docs.blender.org/api/current/bpy.types.Object.html?highlight=rotation_euler#bpy.types.Object.rotation_euler)
# (https://docs.blender.org/api/current/mathutils.html?highlight=rotate#mathutils.Euler.rotate)
bpy.data.objects.get("Cube").rotation_euler.rotate(Euler(convert_rotation_eulerradian(30.0, 45.0, 60.0)))



前回記事

本記事は以下の記事のスクリプトを基に変更を行いました。
bluebirdofoz.hatenablog.com