ビューティーパスの再構築

# ビューティーパスの再構築
レンダリング結果を素材毎に分けて出力し、コンポジットで再構成
目的はコンポジット時のルックデブ




## 素材の出力
- 3dsMaxを使用、レンダラーはV-Ray、ガンマ2.2環境でレンダリング

### レンダリング結果
![3dsMax_RenderingResult.png](https://qiita-image-store.s3.amazonaws.com/0/129316/dde6e333-60b4-4464-33c8-413be21726e3.png)

### 出力した要素
![RenderElements.png](https://qiita-image-store.s3.amazonaws.com/0/129316/d11d5c72-71dd-61fd-bb09-dd0976256aa4.png)

exrで保存しコンポジットに使用 ↓
https://drive.google.com/file/d/0B4qzimceTdfdWUlrVThYdWNYczA/view?usp=sharing





## リニアワークフローでの再構築
### AE設定
![AF_Preference_Linear_01.png](https://qiita-image-store.s3.amazonaws.com/0/129316/eff777d5-b77c-3c80-2bfe-093149e22aaf.png)
### 結果
![B2B_Beauty_Linear.png](https://qiita-image-store.s3.amazonaws.com/0/129316/88336af4-21ff-76b9-16ba-94414c0a54ac.png)


- AEですべての要素を加算
- 3dsMaxとの出力結果と比較し、正しく再構成できている






## 非リニアワークフローでの再構築 1

### AE設定
![AF_Preference_NoLinear_01.png](https://qiita-image-store.s3.amazonaws.com/0/129316/e0daaada-7a27-f83d-29b4-9257cf94d8c4.png)


### 1.そのまま合成
![B2B_Beauty_NoLinear_png.png](https://qiita-image-store.s3.amazonaws.com/0/129316/d15c9bb9-027f-21be-bc02-0ab4fb81289b.png)


- ガンマ2.2の素材を全て加算
- 輝度がオーバーフロー

### 2.デガンマし合成
![B2B_Beauty_NoLinear_exr.png](https://qiita-image-store.s3.amazonaws.com/0/129316/9da390e0-a73e-3ed4-f1aa-d2afcbef047d.png)


- exrで出力、openExrで抽出し加算(HDRコンパンダでデガンマと同一結果と考える)
- デガンマしたままなので、再度ガンマ2.2にする必要がある

### 3.デガンマし、再度ガンマ2.2に戻す
![B2B_Beauty_NoLinear_exr_Ganma.png](https://qiita-image-store.s3.amazonaws.com/0/129316/b25600b1-d626-110b-6923-a888bd05a85a.png)

- 2.の合成結果を、AE上でレベル補正等でガンマ2.2に補正
- 3dsMaxとの出力結果と比較し、正しく再構成できている





## 非リニアワークフローでの再構築 2

### AE設定
![AF_Preference_NoLinear_02_1.0Blend.png](https://qiita-image-store.s3.amazonaws.com/0/129316/42f4eba2-38af-4eb2-5f99-288787abc9c3.png)
作業スペースはリニア化せず、合成をリニア化

### 1.そのまま合成
![B2B_Beauty_NoLinear_1.0Blend.png](https://qiita-image-store.s3.amazonaws.com/0/129316/04d4ea84-7c18-5ac8-3a3d-ab1eae8670f6.png)

- AEですべての要素を加算
- 3dsMaxとの出力結果と比較し、正しく再構成できている



---





## 検証時に得た知見
リニアワークフロー、カラーチャンネルのビット数はひとまず分けて考える


### カラーチャンネルのビット数検証
- 32bitだと、色情報が小数点で管理される
    - 黒0.0 白1.0
    - 範囲外を超えた値も保持できるのがメリット
    - 処理が重くなるのがデメリット

#### レンダリング結果
![bit_hikaku.gif](https://qiita-image-store.s3.amazonaws.com/0/129316/b3c42fb8-9eea-5b10-5cf7-622fac441484.gif)

- 32bitだと、白飛びしている部分の情報も保持している
    - 左右の照明の輝度の違い、地面の白飛びしている部分の情報も失われていない

#### レンダーエレメント
![depth_hikaku.gif](https://qiita-image-store.s3.amazonaws.com/0/129316/ce8fc654-0cbf-6fa0-aa17-923a1655bd8e.gif)

- レンダリング出力だけでなく、レンダーエレメントも同様である
    - 32bitだとマイナスの値(Far)も持てているのが確認できる
- 深度情報や速度情報など、レンジの広い値を扱うのに非常に有力

### リニアワークフロー
- リニアワークフローと非リニアワークフローではレベル補正等の結果が異なる
    - デガンマ → ガンマ戻し は同一の環境で行わないと結果が狂う

### リニアワークフロー + 32bit
![boken.gif](https://qiita-image-store.s3.amazonaws.com/0/129316/37b5ba23-b03c-8875-b426-e8c3a1fad30b.gif)

- リニアワークフローの特性として、ブラー時に明るい部分が広がるような結果になる
- 高輝度の情報を保持できる32bitの特性と組み合わせると、現実的な表現が得られる

---

## 参考にした記事(敬称略)

### リニアワークフローの基礎知識
- コンポジゴク
    - [分かる！リニアワークフローのコンポジット](http://compojigoku.blog.fc2.com/blog-entry-26.html)
- AREA
    - [リニアワークフローについて](http://area.autodesk.jp/column/tutorial/designviz_essence/1_about_linearworkflow_1/)
- Cygames Engineers' Blog
    - [物理ベースレンダリング -リニアワークフロー編 ](http://tech.cygames.co.jp/archives/2296/)

### AfterEffects
- hiroshisaito.net
    - [AfterEffectsでのリニア合成のお話(1)](http://hiroshisaito.net/blog/2011/05/after-effects-1.html)
- DF TALK
    - [AfterEffects: 16bitモードでexrの範囲外の値を取ってくる方法](https://dftalk.jp/?p=10207)