MRが楽しい

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

Blenderで利用可能なpythonスクリプトを作る その2(オブジェクトの作成、レイヤ移動)

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

メッシュオブジェクトの作成

シーンに立方体オブジェクトを作成します。
・make_cube_mesh.py

# bpyインポート
import bpy
# math インポート
import math

# メッシュオブジェクトの作成
# 引数
# 戻り値
def make_cube_mesh():
  # Cubeオブジェクトを作成する
  bpy.ops.mesh.primitive_cube_add(\
    # 配置場所の指定
    location=( 0, 0, 0 ),\
    # 回転の指定
    rotation=( math.pi/3, 0, 0 ),\
  )
  # 作成したオブジェクトの参照を取得する
  ob = bpy.context.scene.objects.active
  # 名前を変更する
  ob.name='MakeCube'
  # スケールを変更する
  ob.scale=( 1, 1, 1 )
  # 選択状態を解除する
  ob.select=False
  return

# 関数の実行例
make_cube_mesh()

f:id:bluebirdofoz:20180423000734j:plain

指定オブジェクトのレイヤ変更

名前を指定してオブジェクトを任意のレイヤに移動します。
・move_object_layers.py

# bpyインポート
import bpy

# 指定オブジェクトのレイヤ変更
# 引数   arg_objectname:指定オブジェクト名
#        arg_movelayer :移動レイヤ(0~)
# 戻り値
def move_object_layers(arg_objectname='Default',arg_movelayer=0):
  # 指定オブジェクトを取得する
  ob = bpy.data.objects[arg_objectname]
  # レイヤを変更する
  if arg_movelayer == 0:
    ob.layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 1:
    ob.layers=(False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 2:
    ob.layers=(False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 3:
    ob.layers=(False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 4:
    ob.layers=(False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 5:
    ob.layers=(False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 6:
    ob.layers=(False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 7:
    ob.layers=(False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 8:
    ob.layers=(False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 9:
    ob.layers=(False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 10:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 11:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False)
  elif arg_movelayer == 12:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False)
  elif arg_movelayer == 13:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False)
  elif arg_movelayer == 14:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False)
  elif arg_movelayer == 15:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False)
  elif arg_movelayer == 16:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False)
  elif arg_movelayer == 17:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False)
  elif arg_movelayer == 18:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False)
  elif arg_movelayer == 19:
    ob.layers=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True)
  else:
    ob.layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)
  return

# 関数の実行例
move_object_layers('Cube',2)

f:id:bluebirdofoz:20180423000747j:plain