bpy(Blender Python API)を用いてテキストベースでBlenderを操作する際に他のファイル中に記載した関数を、Blender上で実行するファイルに取り込んで呼び出すのに少し苦戦したので、調査したことの備忘録

bpyを用いて記載したモデリング作業に共通して使用する操作のための関数を読み出す際や、他のプロジェクトで作成したモデルを流用する際に必要となります。




モデリング例


以下の手順を一通り含むGitリポジトリを用意しました!
  1. モデリング
  2. モディファイア設定(Mirror / Subdivision / Array など)
  3. モディファイア適用(形状確定系:Mirror / Subdivision など)
  4. モデル結合・最適化(前処理)
  5. UV展開
  6. マテリアル設定
  7. テクスチャ作成・ベイク
  8. アーマチュア設定(ボーン/リギング)
  9. アニメーション設定(ボーン/シェイプキー/トランスフォーム)
  10. glTF / glb エクスポート

▼ こちらを合わせて参照推奨

▼作成可能なモデルの例



ファイルをimportして使用


ここで例として用いるディレクトリ構造は次です。

ディレクトリ構造 :
root_path
├── Blender_API_Modeling
    ├── Assets
    │   └── mdl
    │       └── main.py             // 実行ファイル
    ├── Mylib
    │   ├── modeling_common_lib.py  // import対象ファイル(関数)

main.py :
Blender上で「Run Script」で実行するファイル

modeling_common_lib.py :
3D モデリング作業に共通して用いるための関数を集めたファイル

main.pyから、他ディレクトリにあるファイルをimportするために次のように記載します。

Python :
# Root_Path
root_path = "../../../"

# スクリプト名
script_text = bpy.context.space_data.text

# スクリプトのディレクトリを取得
script_dir = os.path.dirname(bpy.path.abspath(script_text.filepath))

# モジュールの親ディレクトリへのパスを取得
module_path = os.path.abspath(os.path.join(script_dir, root_path))
if module_path not in sys.path:
    sys.path.append(module_path)

# Root_PathからのPath指定
from Blender_API_Modeling.Mylib.modeling_common_lib import function_name

2行目 :
main.pyからroot_pathの位置を相対パスで指定します。
これについては、実行するファイルがある場所によって変わるので、ファイルごとに書き換える必要があります。

16行目 :
importしたい位置のディレクトリを「from」以降で指定し「import」以降でimportする関数名を記載します。


一般的なライブラリのimport


bpyを使うために必要な「bpy」のimportなどの方法

Python :
import bpy
import os
import sys

とくにひねりなし

以上

このエントリーをはてなブックマークに追加
コメントを閉じる

コメント

コメントフォーム
記事の評価
  • リセット
  • リセット