🔎
pyassimpで3Dメッシュデータを読む
自己紹介
ゲーム制作系テクニカルアーティスト
モチベーション
アセットで購入した3Dモデルデータを一括走査するツールの作成。
走査対象はobj,fbx辺りが想定される。
PySide6使いたかったし、データ読むだけだったので、わざわざFBX SDKのためにpythonのバージョンを落としたくなかった。
環境
- anaconda3
- python 3.11.7
- pyassimp 5.2.5
pip install pyassimp
- assimp 5.3.1(pyassimpだけで実行したらこっちも必要と言われたので)
conda install conda-forge::assimp
コード
欲しい情報
- メッシュ名
- メッシュに紐づくマテリアル名
- メッシュそれぞれのtri数
import pyassimp
fbx_file_path = r"C:\test.fbx"
with pyassimp.load(fbx_file_path) as scene:
#meshはアサインされたマテリアル毎に分割されている
meshes = scene.meshes
for mesh in meshes:
#メッシュ名
meshname = mesh.name
#マテリアル
mat_index = mesh.materialindex
mat = scene.materials[mat_index]
#マテリアル名
matname = mat.properties.get(('name', 0))
#tri数
trinum = len(mesh.faces)
#出力
print('Mesh name : {meshname}, Material name : {matname}, tri num : {trinum}')
以上。
↓上記情報を用いてできたツール。
Discussion