MRが楽しい

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

Blenderで利用可能なpythonスクリプトを作る その16(オブジェクトの複製、インポート)

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

オブジェクトの複製

指定のオブジェクトを複製します。
引数指定で複製オブジェクトの名前を設定できます。
・duplicate_object.py

# bpyインポート
import bpy

# オブジェクトを複製する
# 引数   arg_objectname:指定オブジェクト名
#        arg_dupame:変更オブジェクト名
# 戻り値
def duplicate_object_rename(arg_objectname='Default', arg_dupname=''):
   # 他のオブジェクトに操作を適用しないよう全てのオブジェクトを走査する
   for ob in bpy.context.scene.objects:
     # 非選択状態に設定する
     ob.select=False
   # 指定オブジェクトを取得する
   selectob=bpy.context.scene.objects[arg_objectname]
   # 指定オブジェクトをアクティブに変更する
   #bpy.context.scene.objects.active = selectob
   # 指定オブジェクトを選択状態にする
   selectob.select=True
   # オブジェクトを複製する
   bpy.ops.object.duplicate_move(
     OBJECT_OT_duplicate=None, TRANSFORM_OT_translate=None)
   # 指定オブジェクトの選択状態を解除する
   selectob.select=False
   # 複製オブジェクト名が指定されている場合は名前変更
   if len(arg_dupname) > 0:
     # 複製オブジェクトの名前を取得する
     duplicated_objectname=arg_objectname + ".001"
     # 複製オブジェクトを取得する
     duplicatedob=bpy.data.objects[duplicated_objectname]
     # 複製オブジェクトの名前を変更する
     duplicatedob.name=arg_dupname
   return


# 関数の実行例
duplicate_object_rename(arg_objectname='Cube', arg_dupname='Duplicate')

f:id:bluebirdofoz:20190616215544j:plain

FBXファイルのインポート

指定ディレクトリのFBXファイルをデフォルト設定の指定でインポートします。
・fbx_import.py

# bpyインポート
import bpy

# FBXモデルをインポートする(デフォルト設定)
# 引数   arg_filepath:ファイルパス
# 戻り値
def import_file_fbx(arg_filepath='C:\\Models\\sample.fbx'):
  # FBXインポート
  # bpy.ops.import_scene.fbx()
  bpy.ops.import_scene.fbx(
    filepath=arg_filepath,
    use_manual_orientation=False,
    global_scale=1.0,
    bake_space_transform=False,
    use_custom_normals=True,
    use_image_search=True,
    use_alpha_decals=False,
    decal_offset=0.0,
    use_anim=True,
    anim_offset=1.0,
    use_custom_props=True,
    use_custom_props_enum_as_string=True,
    ignore_leaf_bones=False,
    force_connect_children=False,
    automatic_bone_orientation=False,
    primary_bone_axis='Y',
    secondary_bone_axis='X',
    use_prepost_rot=True
  )
  return


# 関数の実行例
import_file_fbx('C:\\Models\\sample.fbx')

f:id:bluebirdofoz:20190616215555j:plain