[Blender] Pythonメモ。トランスフォーム

Pythonスクリプトのメモ。
位置、回転、スケール。

●Cubeという名前のオブジェクトを、Z方向に1移動する。
import bpy #←これを読み込まないとスクリプトでオブジェクトを操作出来ない。
bpy.data.objects['Cube'].location.z +=1
●選択したひとつのオブジェクトを、Z方向に1移動する。
import bpy
bpy.context.selected_objects[0].location.z += 1
●選択したひとつのオブジェクトを、オブジェクトの中心Z方向を軸にして15度回転させる。
import bpy
import math #←mathを読み込まないとpi(円周率)が使えない。

hako = bpy.context.selected_objects[0]
atai = 2 * math.pi / 360 * 15 #←15度をラジアンに変換
hako.rotation_euler.z += atai

※角度を指定する際、値は度数法ではなく、孤度法。
なので、度数法のつもりで15と入力すると、15ラジアン入力した事になり、
859.35度回転してしまう(57.29×15)

・円を360度で示すのが度数法。
・半径が1の円で、長さ1の弧が作る角度を1ラジアンとするのが孤度法。

  ■■■■■■■■■■■■ 1度は何ラジアンか? ■■■■■■■■■■■■
  円周の長さは直径×円周率。
  円周の長さは孤度法だと2πになる。角度は2πラジアン。

  360度=2πラジアンなので、
  2πラジアンを360分割すれば、度数法の1度になる。

  これはπラジアンを180分割するのと同じ。
  3.14159/180=0.0174532777777778
  1度を孤度法にすると、約0.0174533ラジアン。

  ■■■■■■■■■■■■ 1ラジアンは度数法だと何度か? ■■■■■■■■■■■■
  比率で計算する。
  2πラジアン:360度
  πラジアン:180度
  どんな数も、同じ数字で割れば1になる。
  π÷π:180÷π
  ↓
  1:180÷π
  180÷3.1415=57.29582790879777
  1ラジアンは、約57.29度

●選択したオブジェクトのX位置とY位置を、-1~1の範囲で、ランダムに変える。
import bpy
import random #←randomを読み込まないと乱数が使えない。

hako = bpy.context.selected_objects
for i in hako:
    i.rotation_euler.x += random.uniform(-1,1)
    i.rotation_euler.y += random.uniform(-1,1)
●選択したオブジェクトを、X、Y方向に、-30~30度の範囲で、ランダムに回転させる。
import bpy
import math
import random 

hako = bpy.context.selected_objects
for i in hako:
    atai = 2 * math.pi / 360 * 30 #←30度をラジアンに変換
    i.rotation_euler.x += random.uniform(-atai,atai)
    i.rotation_euler.y += random.uniform(-atai,atai)
●選択したオブジェクトのスケールを2倍にする。
import bpy
hako = bpy.context.selected_objects[0]
hako.scale *= 2
●選択したオブジェクトのスケールを軸ごとに変える。X軸を1、Y軸を1、Z軸を3にする。
import bpy
hako = bpy.context.selected_objects[0]
hako.scale = (1,1,3)

●参考サイト
情報処理 I - 第15回:Python による Blender の制御 和歌山大学
ラジアン(弧度法)の意味と「度」への変換方法 sci-pursuit.com

コメントを残す

メールアドレスが公開されることはありません。


8 − = 四


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>