Pixar USDをセットアップ(Ubuntu20.04)

#目次
[1.はじめに](#1-はじめに)
[2.インストールの準備](#2-インストールの準備)
[3.本家Gitを読み解く](#3-本家Gitを読み解く)
[4.各コンポーネント追加更新](#4-各コンポーネント追加更新)
[5.USDビルド](#5-USDビルド)
[6.おわりに](#6-おわりに)


# 1. はじめに

<details>
<summary>**USDインストールの経緯**</summary>
<div>

+ Omniverseをインストールいる。
+ NvidiaのサイトによるとUSDで作られたファイルがOmniverseのパーツに使われている。
+ USDはあのPixar謹製で、しかもオープンソース！
+ Windowsでインストールされている方の記事は散見されるがUbuntuではみかけない。
+ そもそも有名な３D CADのプラグインはあるが、会社が買ってくれない…(;´д｀)
  - あ、私は担当ではないので使わないですけど。


</div>
</details>

<details>
<summary>**インストール環境**</summary>
<div>

+ Ubuntu20.04LTS
+ Ryzen5 5000系でメモリ32GB
+ RTX3090（ドライバ515.43.04)
+ CUDA11.7、CUDNN8.4.0.27
+ AnacondaでPython3.6環境
  - Tensorflow2.6.2（あまり影響ないとは思いますが…）


</div>
</details>







# 2. インストールの準備

### 公式GithubとNvidiaのプレビルド版

https://github.com/PixarAnimationStudios/USD

- 本家サイト

https://developer.nvidia.com/usd


* Nvidia USD at NVIDA
    * すぐ使えそうなイメージがありますが、そのままでは使えませんでした・・・・
    * 結局私は本家から順をおいつつ、追加作業で起動までこぎつけました。
    * Windows版もありますね。

### 参照サイト

https://pc-technique.info/2020/10/295/

* インストールのベースとして参考にさせて頂きました。
    * Shirao Shotaroさんありがとうございます。




# 3. 本家Gitを読み解く

###必要なモジュールやコンポーネント類を確認
* Dependencies(依存関係）
    1. C++ compiler
    2. C compiler
    3. CMake
    4. Boost
    5. Intel TBB

:::note info
この5つがインストールされていることを確認します。
※このリストでは3.4の組み合わせで後々ハマります。
Boostが1.7.0未満になる様にします。CMakeが新しい分には問題なかったです。
:::

:::note warn
注意（2022.6.24追記）
開発環境を2つ持っていてきがついたのですが、Boostのバージョンが違うので
バージョン管理にご注意ください。
１．USD：1.7.0未満
２．ROS2：1.7.2

:::


* CMakeとBoostの関係はこちらを参考にしました。

https://diary-039.com/entry/2020/06/30/183452


* Imaging and USD Imaging（作成関係）
    1. OpenSubdiv（必須）
    　2. OpenEXR
    　3. CMake
    　4. OpenImageIO
    　5. OSL (OpenShadingLanguage)
    　6. Ptex
-一段下げたものは公式でオプション表示されていますね。

* usdview 
    1. PySide or PySide2
    2. PyOpenGL

:::note info
1. Python3環境では Pyside2しか入らなかったです。基本PySide2でいいかと。(pipでインストールしました)
2.のPyOpenGLは一気にaptだとちゃんと入らないこともがありましたので、次の章で刻んで入れています。
:::
    

# 4. 各コンポーネント追加更新（抜粋）
* 3章の依存関係のコンポーネントは全てインストールしておきます。
    *ビルドが必要なものはビルド優先で進めると良さそうです。 
    *CMakeを普通にインストールかけて怒られたので、こちら参考にしました。

https://qiita.com/HiromiS/items/a05d61a7b8cc6590ebe3

* 3章のImaging関係は必須物以外はお好みで…
* usdviewはUSDファイルを開くのに必要なので必須になります。

## OpenGLは注意
* 基本は以下で良さそうな感じですが、最後のスクリプトを使ったビルドでコケたので、
下記のサイトを元にGLFW,GLEWをビルドしました。

```
#基本はこれだけで行けるらしいのですが・・・
pip install PyOpenGL

```

* Qiitaの@pollenjp(UT-virtual)　さんの記事を参考にしつつ、個別にビルドしました。

https://qiita.com/pollenjp/items/aef8f2e4692af1662289


http://glew.sourceforge.net/

https://www.glfw.org/




# 5. USDビルド
* ここまで揃えばあとはGithubの通りにクローンしてビルドですね。
    * /usr/local/配下にはパーティションの関係で蹴られたので、ホーム直下に私はインストールしています。

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

#クローンしたフォルダの一段上で実行
#(公式)python USD/build_scripts/build_usd.py /opt/local/USD

python USD/build_scripts/build_usd.py ”インストール先のフォルダ”

#私は以下のような感じです
# python USD/build_scripts/build_usd.py /home/hoge/USD

```

## ビルド完了（例）

```
  Dependencies                  zlib, boost, TBB, GLEW, OpenSubdiv
STATUS: Installing zlib...
STATUS: Installing boost...
STATUS: Installing TBB...
STATUS: Installing GLEW...
STATUS: Installing OpenSubdiv...
STATUS: Installing USD...

Success! To use USD, please ensure that you have:

#以下、パスを通すように促されるので、~/.bashrcを編集して、パスとPythonPATHを通します。


```
* 20分程度は待ったと思います。



# 6. おわりに

```
#Git hubで試してと言われている丸っぽい図形を出すコマンドライン
usdview USD/extras/usd/tutorials/convertingLayerFormats/Sphere.usda

#今回Pixarのサンプルからダウンロードした少年を表示
usdview USD/extras/usd/examples/UsdSkelExamples/HumanFemale.keepAlive.usd

```

* 少年の表示はこんな感じです。なんか映画に出ていそうな感じです。
![USD少年.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/ead31718-b509-78cc-cf13-f76b03e8c107.jpeg)


*こちらからダウンロードしました。これらのデータが私達でも使えるのは素晴らしいですね！


https://graphics.pixar.com/usd/release/dl_downloads.html