0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Mac] Blender上のPythonで特定のファイルを再帰的にインポート(オプション指定あり)

Posted at

備忘録 :snake:

前提

  • mac OS Big Sur 11.2.3
  • Blender2.93.0

あるディレクトリ内の全ての.objファイルをインポートしたい

import os
import bpy

# 該当ディレクトリの絶対パス
search_dir = bpy.path.abspath('/Path/to/the/Dir')
ext_list = ["obj"] # ⇦ 他の拡張子をインポートしたい場合,ここを変更

# 該当ファイルをリストアップ
obj_list = []
for root, dirs, files in os.walk(search_dir):
    for ext in ext_list:
        obj_list.extend([os.path.join(root, file) for file in files if ext in file])

# ひとつずつインポート.OBJファイルの場合
for item in obj_list:
    bpy.ops.import_scene.obj(filepath = item)

インポートのオプションを変更したい

GUIでモデルをインポートする場合と同様に,オプションを指定してインポートすることも可能です.下はOBJファイルをインポートする場合に指定可能な引数です.
インポートしたいモデルの拡張子によって関数及び引数は異なるため,[Import Scene Operators - Blender Python API] (https://docs.blender.org/api/current/bpy.ops.import_scene.html)等を参考に調べましょう.

OBJファイルの場合のデフォルトの引数
bpy.ops.import_scene.obj(filepath='', filter_glob='*.obj;*.mtl', use_edges=True, use_smooth_groups=True, use_split_objects=True, use_split_groups=False, use_groups_as_vgroups=False, use_image_search=True, split_mode='ON', global_clamp_size=0.0, axis_forward='-Z', axis_up='Y')

↓はY軸を前方向に,Z軸を上にするべく引数を変更した場合です.

bpy.ops.import_scene.obj(filepath = item, axis_forward='Y', axis_up='Z')

エラーが出たとき

Pythonスクリプトが失敗。システムコンソールのメッセージをチェックしてください

というエラーが出ることがあります.
Mac PCでLaunchpad等のボタン操作でBlenderを起動した場合,エラーメッセージを確認することができません.
ターミナル上から下のようにBlenderを起動するとコンソールが別ウィンドウで立ち上がり,エラーメッセージを見ることができます.

# 一例
open /Applications/Blender.app/Contents/MacOS/Blender

この記事は以下を参考に作成しました.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?