コンテンツにスキップ

USD を使ってみる

SIGGRAPH2019 で USD まわりが大変熱いことがわかったので
色々検証しつつ、まとめた記事をアップしていこうと思います。

まずは、USD をダウンロードしてセットアップするあたりをやっていきます。

ビルドする

まずは USD をビルドします。
以前は USD をビルドして使用をするには非常に手間がありましたが、現在はビルドスクリプトも
用意されていて、比較的簡単にビルドをすることができます。

必用なものをインストールする

まず、ビルドに必要な VisualStudio とソースコードを取得するための Git、Python をダウンロードしてインストールします。

Python は、インストールしたら

Python37 直下と Scripts を環境変数の PATH に追加します。
さらに USDView を使用する場合必要になる  PySide2 と PyOpenGL をインストールしておきます。

1
pip install PyOpenGL PyOpenGL_accelerate PySide2

下準備はこれで完了です。

リポジトリをクローンする

インストールが終わったら、USD の Github からリポジトリをクローンします。

コマンドプロンプトで、ダウンロード先のディレクトリに移動し

1
git clone https://github.com/PixarAnimationStudios/USD.git

クローンします。

クローンしたら、VisualStudio の Developer Command Prompt を開きます。

開いたら、リポジトリをクローンしたフォルダに移動して、ビルドを実行します。

1
python build_scripts\build_usd.py <ビルド成果物の出力先>

Path を通す

ダウンロードが終わったら、必要な PATH を通します。
必要なのは 2 つ

変数名 PATH
PYTHONPATH /lib/python
PATH /bin
/lib

Info

lib 下に PATH が通っていない場合は、
pyd ファイルをインポート使用とするときに Error になるので注意。

この 2 つを通したら準備は完了です

サンプルデータを開いてみる

準備ができたら、サンプル USD をダウンロードして、ビューワで開いてみます。

http://graphics.pixar.com/usd/downloads.html

サンプルデータは PIXAR の公式サイトにあるので、その KitchenSet をダウンロードします。

ダウンロードしたら、解凍したあとコマンドプロンプトを開き

1
usdview Kitchen_set.usd

usdview で Kitchen_set.usd をひらいてみます。

USDView を使用すると、usd ファイルのシーングラフや Layer、プロパティなどを確認
することができます。
また、Python コンソールも付属しているので
色々テストするにはこの usdview を使用するのがわかりやすい(らしい)です。

python から usd ファイルを作ってみる

準備ができたら、公式のチュートリアルを実行してみます。
https://graphics.pixar.com/usd/docs/Hello-World---Creating-Your-First-USD-Stage.html

1
2
3
4
5
from pxr import Usd, UsdGeom
stage = Usd.Stage.CreateNew('HelloWorld.usda')
xformPrim = UsdGeom.Xform.Define(stage, '/hello')
spherePrim = UsdGeom.Sphere.Define(stage, '/hello/world')
stage.GetRootLayer().Save()

実行すると、指定のフォルダに HelloWorld.usda ファイルが出力されます。

1
2
3
4
5
6
7
8
#usda 1.0

def Xform "hello"
{
    def Sphere "world"
    {
    }
}

中身はシンプルな(空の)USD ファイル。

usdeview で開くと、シンプルな Sphere が表示されました。

とりあえずこれで USD を触れる環境ができました。
プチはまりポイントとしては、lib フォルダに PATH を入れていなかったせいで
DLL 見つからないエラーがでたのと
Synology の NAS 上のフォルダを保存先に指定するとパーミッションエラーで
書き込めなかった所。

準備は出来たので、USD の基本的な構造を調べながら
使い方をまとめていこうと思います。