背景
漢には, Windows で C++ で pxrUSD 使わねばならぬときもある... C++ でコアの機能(UsdGeomMesh とか)が使えればよい. usdImaging とか Hydra とか Python binding はとりあえずはいらない.
pxrUSD の Windows ビルドめんどくさすぎじゃ...
Prebuilt あるけど,
Python 付き + VS2015(v141) でビルドされているため, C/C++ で pxrUSD の API だけ使いときにいろいろ問題ある(VS2019~ だと v142 なので, boot-python.lib 関連がなくてリンクできないなど)
環境
- VS2019 or VS20222
- (mini)conda
- Windows 10 or 11
手順
の python のビルドスクリプトを使います.
優秀な若人さまにおかれましては, 機械学習で Python 環境は conda で作っているかと思いますので, 今回 conda 使います.
conda インストールして, conda init
しておくと PATH
など環境変数設定してくれますのでやっておくとよいでしょう.
Python は 2020/11 時点では 3.8 以上がよいと思いますが, 今後 USD を Python 付きでビルドするかもを想定し, 一応互換性考えて 3.7 環境を作っておきます.
(また古い USD のバージョンだと Python 3.8+ 対応していない)
> conda create -n usd-22 python=3.7
VS の開発環境に入り(or vcvarsalllbat をよぶ https://stackoverflow.com/questions/43372235/vcvarsall-bat-for-visual-studio-2017), conda で activate しておきます.
あとはいろいろ disable してビルドするだけです!
今回は --build-monolithic
つけてみました.
python USD\build_scripts\build_usd.py --no-python --build-monolithic --no-openvdb --no-materialx --no-ptex --no-embree --no-prman --no-hdf5 --no-alembic --no-draco --no-docs --no-imaging --no-openimageio --no-opencolorio USD-dist-22_11
その他, お好みで調整して. App が Debug ビルドする場合, CRT のデバッグ機能などと合わせるために pxrUSD も --debug
つけてビルドする必要があると思います.
usd file format plugin folder
.dll を App フォルダにコピって使っているばあい, USD ファイルを Open しようとしても cannot determine format error というエラーがおきるときがあります.
これは pxrUSD が .usda, .usdc でも file format 情報を plugin JSON <dist>/lib/usd
にあるファイル群から読み取る必要があるためです!(monolithic build とか dll ビルドのときでも同じ). めんどくさいネ...
PXR_PLUGINPATH_NAME
で環境変数を設定するか, C++ で PluginRegistory で登録してあげる必要があります.
(Linux だと .so ファイルは通常動かさないので, plugin info ファイルを .so からの相対パスでうまく見つけてくれる模様)
`
Monolithic build
USD を monolithic にビルドしている場合, リンクするライブラリ名は usd_ms.lib
になります.
使うときの注意
TBB が, Debug ビルド時に TBB_USE_ASSERT
などマクロ定義してあげる必要があるときがあるかもしれません.
Seg fault 問題
ただ, なんかビルド構成によるのか, pxrUSD API 内で exception が起きてしまうときがあります...
どうも Debug build かどうかだったり Unicode/MBCS charset 問題のもよう...