SIMPLYGON ( シンプリゴン ) を使ってリダクションをしてみる

# はじめに
3Dコンテンツ最適化ツール - SIMPLYGON について調査したので、以下内容についてまとめたいと思います。

- SIMPLYGON とは
- インストール手順
- 基本操作について

# SIMPLYGON とは
SIMPLYGON とは、3Dゲームで使用するコンテンツを最適化するためのツールです。2017年に Microsoft が Simplygon 開発企業を買収したので、現在は Microsoft のサービスとして提供されています。

> <img width="600" alt="SIMPLYGON - TOP" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/00278509-483f-4ac1-863a-a50460713c39.png">
>
> [SIMPLYGON 公式サイト](https://www.simplygon.com/)

## 機能
機能は、以下の通りです。

- ポリゴン数削減
- 再メッシュ
- マテリアル ベイキング
- オブジェクト集約
- ビルボード クラウド
- フリップブック インポスター
- 可視化性カリング
- バッチ処理


> <img width="600" alt="Functions" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/1f445666-fd0b-49a4-954c-46f342ad6d2b.png">




## 価格
価格は、以下の図の通りです。

<img width="500" alt="Price" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/950cac4e-2a93-427a-b659-f3dd3dd10237.png">

# インストール手順
SIMPLYGON SDK は公式サイトにて提供されています。

## 検証環境
本記事の検証環境は、以下の通りです。

- Unity : 2020.3.8f1
- USD : <font color="red"> 2.0.0-exp.1</font>
- Simplygon SDK :  9.1.27400.0

※ 最新版の Simplygon は USD パッケージ 2.x 系を使用するため、USD パッケージ ( Preview ) は、2.x 系をインストールするようにしてください。( USD 3.x 系ではエラーが発生し、Simplygon が正常に動作しない可能性があります。 )

## 手順 ( 詳細 )

1.　__[ダウンロード]__  ページへ移動し、SDK インストーラーをダウンロードします。

<img width="600" alt="Downloads" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/62baed31-9179-4318-a197-8e77af98d536.png">

2.　ダウンロードした __SimplygonSDK.exe__ を開き、Install ボタンを押します。

<img width="500" alt="image.png (51.6 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/b7281b45-6c00-4f96-8a0a-90ab0a20b4e4.png">

3.　インストールするライセンス __( Free )__ を選択し、Next ボタンを押します。

<img width="500" alt="image.png (60.0 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/e2571768-7276-4a33-a4b6-0a92618f8213.png">

4.　利用規約を読んだ上で、同意ボタンにチェックを入れ、Next ボタンを押します。

<img width="500" alt="image.png (205.8 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/0631ff5d-a86c-4be4-84eb-25194d69830d.png">

5.　無事インストールが終わると、キー が発行されます。

<img width="500" alt="image.png (51.0 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/d4a4c238-cb6b-4e47-a29a-aa3c0aa71e62.png">

サービス向上のためパフォーマンス、使用状況のテレメトリー送信有無について確認があるので、ご自身でチェックを入れるかどうか、判断を行ってください。

以上で、Simplygon インストール作業は完了となります。

<img width="500" alt="image.png (73.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/fc4efc88-75fe-466e-b409-096f9b7c9460.png">

# 基本操作について
1.　Unity を立ち上げます

<img width="800" alt="image.png (264.9 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/06a129be-145b-4ff7-b1ad-a58c9ee13d7c.png">

2.　USD パッケージをインストールします。

※ Simplygon では USD パッケージ 2.x 系が必要となります。
      3.x 系以降が表示されている場合は、2.x 系を選択するようにしてください。

<img width="800" alt="image.png (154.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/624a93a5-1de1-4de0-b2d1-24fccb1bfddb.png">

<img width="800" alt="image.png (238.0 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/00ea26d6-f92d-4fc1-a110-98dcd51fc791.png">

3.　Simplygon > Unity > bin 配下の  __Simplygon.Unity.EditorPlugin.dll__ を Asset 配下にドラッグ＆ドロップします。

<img width="800" alt="image.png (196.6 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/8fd8e60c-9d02-4544-b8c0-a54a45fed515.png">

4.　ポリゴン数を減らしたいオブジェクトを選択します。

<img width="800" alt="image.png (1.2 MB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/f6555cf3-35c8-47aa-ade2-e679cd57b4c1.png">

5.　グローバルメニュー Window > Simplygon を選択します。

<img width="800" alt="image.png (485.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/45272d81-9f78-4e6e-8ca6-6323860c254d.png">

LOD Component > Template を選択します。

<img width="500" alt="image.png (41.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/d1031471-2214-4012-b610-f5021b4edf34.png">

Template > Basic を選択します。

<img width="500" alt="image.png (42.2 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/a4a83da2-7206-4e68-94f5-9dcf914bc911.png">

Basic > Reduction を選択します。

<img width="500" alt="image.png (76.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/47587984-0425-4bda-a69d-753ac42d190f.png">

ReductionSettings を確認します。

Reduction Target Triangle Raito では、処理前のデータから削減するポリゴン数の割合 (%) を指定します。以下のように、0.5 と設定した場合、処理前のデータのポリゴン数を50%に減らす、リダクション処理が行われます。

<img width="600" alt="image.png (93.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/5f1b210d-770b-4714-832d-6967ec5ab40d.png">

Simplygon タブの下にある黄色いアイコンをクリックすると、
リダクション処理が開始します。

<img width="800" alt="image.png (1.1 MB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/ed9f5e1a-9165-43aa-8a3f-f1f4473f8281.png">

## リダクション前後の比較
__Scene ビュー  >  Shading Mode : Shaded__

<img width="600" alt="image.png (448.4 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/1a96e74d-351a-4b28-8d1b-4e2fb4756495.png">

ポリゴン数が減り、若干クッション周りのテカりが気になりますが、
これは削減するポリゴン数を調整することで解消されます。

__Scene ビュー  >  Shading Mode : Wireframe__

<img width="600" alt="image.png (217.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2021/06/29/10862/dc4c9dcc-0d74-4fcf-bf9b-073a24c56679.png">

ワイヤーフレームで見ると、全体的にソファー全体の線が薄く、少なくなっていることが見て取れます。MRTK Optimize Window でも確認しましたが、しっかりとポリゴン数が減っていることが確認できました。

# まとめ
手軽にポリゴン数を削減できるので、Azure Remote Rendering 使うまでのシチュエーションではないけれど、既存CGオブジェクトでどこまで表現が可能か？また、ある程度最適化してシーン内のオブジェクト数を増やしたい場合等に活用できるのではないかと思います。その他にも細かなチューニングパイプライン等も用意されているので、3DCG のモデラーではない方でも、ある程度CGコンテンツを最適化することができるのではないでしょうか。

# 参考資料
- [Simplygon  | 公式サイト](https://www.simplygon.com/)
- [Getting started with Simplygon in Unity](https://www.youtube.com/watch?v=gy7eHl0cpg4&list=PLeVvjR1NNtV_QeR34GTJSDS5_QErCcfGn&index=1) ( YouTube )
- [Simplygon チュートリアル](https://www.youtube.com/playlist?list=PLeVvjR1NNtV_QeR34GTJSDS5_QErCcfGn) ( YouTube )