本日は 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