Maya 2016 Ext2　レンダリング設定雑感

#これはなに？

先日リリースされた**Maya 2016 Extension2**で
レンダーレイヤー周りがごっそり変わりました。
それについてのさわりの雑感です。

<img width="785" alt="スクリーンショット 2016-05-07 17.49.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/7dffc8ff-59c3-91c8-14ad-a765caeefe17.png">

#レンダー設定とレンダリング設定

これまでのレンダー設定は

```
RenderGlobalsWindow
```

新たについたレンダリング設定は

```
RenderSetupWindow
```

UI名が実に紛らわしいですが、まったくの別物です。（開いてみると当然UI的にも似ていません）
**レンダーレイヤー　→　レンダリング設定**。これです。
*（……なぜ日本語UIを準備した人は、レンダーセットアップではなくレンダリング設定などと微妙な感じにしたんでしょうね(^^;;;;;　）*

<img width="393" alt="スクリーンショット 2016-05-07 17.48.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/6336f763-d93e-758e-aac5-5e48055fe2a4.png">

当エントリでは、前者（レンダーグローバルの方）は扱いません。

#プラグイン

Pythonプラグイン化されています。

```python
pm.pluginInfo('renderSetup.py',q=True,path=True)

# 結果: u'/Applications/Autodesk/maya2016.5/Maya.app/Contents/MacOS/plug-ins/renderSetup.py' # 
```

<img width="765" alt="スクリーンショット 2016-05-07 16.59.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/dd05f9fc-2cb3-322b-cfaf-56822afcac03.png">

.pyの中身見てみると、本体は`maya.app.renderSetup.model.initialize`なのかな。

#作法　レンダーレイヤーとコレクション

レンダーレイヤーを作成し、さらにその中に**コレクション**を設定しないと、各種設定ができません。
右側のプロパティエディタで各種設定ができますが、レンダーレイヤーについては名前しか設定するものがありません。
コレクションの中に入れて、設定して……というのはデモ動画で見ていた通りですが、
コレクションを作るのが必須、前提というフローだったんですね。

コレクションにフィルタをかけられます
<img width="325" alt="スクリーンショット 2016-05-07 17.21.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/ffdedaed-61b3-917c-1fc5-9dc82eb990c8.png">

「カスタム」にすると、エクスプレッションでフィルタリングできます。
<img width="678" alt="スクリーンショット 2016-05-07 17.21.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/746fcd8a-b285-0e46-fb03-1dbbaae73c2f.png">

フィルタの次の欄が「追加」
<img width="326" alt="スクリーンショット 2016-05-07 17.21.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/c323befe-75d9-b9b8-85d5-f3e038b37dbf.png">

これもエクスプレッションであれこれできます。
<img width="710" alt="スクリーンショット 2016-05-07 17.21.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/0daf6033-e969-22ec-04da-1cca239f27ce.png">


いまのところ、「コレクションの複製」はありません。

##シーン

レンダーレイヤー欄の上の欄は「シーン」と書かれていますが、これが**マスターレイヤー**なようです。
「バッチレンダリング時にレンダリングする（しない）」チェックもあります。
<img width="415" alt="スクリーンショット 2016-05-07 17.24.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/2ba370ac-b516-ebb2-edf7-cff2b6066418.png">

- 「レンダー設定」をダブルクリックすると、レンダー設定ウィンドウが開きます。
- 「ライト」をダブルクリックすると、ライトエディタが開きます。これもext2で搭載されたものですね。



#書き出し＝json

レンダーレイヤー、コレクションの設定をjsonで書き出せます。
書き出し先は、プロジェクトのどこかではなく「Preferences/Autodesk/maya/Templates」にしようとします。
（こういうのってプロジェクト付きなことが多い気がするので、Maya自体の設定テンプレートみたいに持たれても今ひとつ嬉しくない気がするんですが……どうなんでしょうね）

<img width="867" alt="スクリーンショット 2016-05-07 17.33.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/da9e6d47-5ea5-803a-ea22-c33c2de0475a.png">
↑これは読み込むところ

jsonの中身は、前半がレンダラーの設定（defaultRenderGlobals関連）、後半がレンダーレイヤー / コレクションの設定という感じでした。今回はほとんどなにもしない状態での書き出しだったのでdefaultRenderGlobalsの内容でほとんどが占められましたが、オーバーライドとかが立て込んでくると後半がモリモリになっていくんでしょうね。

```json:renderSetupTemplate_sample.json
{
  "sceneSettings": {
    "mayaSoftware": {
      "userData": {}, 
      "defaultNodes": {
        "defaultRenderGlobals.blurSharpness": 1.0, 
        "defaultRenderGlobals.enableDefaultLight": true, 
        "defaultResolution.deviceAspectRatio": 1.7777776718139648, 
        "defaultRenderGlobals.blurLength": 1.0, 
        "defaultRenderGlobals.hyperShadeBinList": "", 
        （中略）
        "defaultRenderGlobals.useFileCache": true, 
        "defaultRenderGlobals.frozen": false, 
        "defaultRenderGlobals.preRenderMel": "", 
        "defaultRenderGlobals.motionBlurType": 1, 
        "defaultResolution.isHistoricallyInteresting": 2
      }, 
      "defaultRendererNodes": {}
    }
  }, 
  "renderSetup": {
    "renderLayers": [
      {
        "renderSetupLayer": {
          "collections": [
            {
              "collection": {
                "typeFilter": 0, 
                "name": "collection1", 
                "selfEnabled": true, 
                "pattern": "", 
                "children": [], 
                "staticSelection": "|pSphere1", 
                "customFilterValue": "", 
                "includeHierarchy": true, 
                "isolateSelected": false
              }
            }
          ], 
          "name": "renderSetupLayer1", 
          "isVisible": false
        }
      }
    ], 
    "name": "renderSetup"
  }
}
```

ちなみに、レンダーレイヤー作成ボタンの右の「テンプレート読み込み」ボタンが動かない気がするんですが気のせいですかね？
ちゃんとTemplatesに保存しているんですが。

<img width="237" alt="スクリーンショット 2016-05-07 17.59.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/0d03ea4c-12de-8fcb-f1a1-419e291c2bba.png">
↑息してないひと？

#ログが出ません

だいたいの操作で、スクリプトエディタへの出力がありません。
コレクションのフィルタ切り替えや、コレクションへのオブジェクトの追加、オーバーライドなど、どういうコマンドで動いているかつかめません（EchoAllにしても。大量のinterToUIは得られます）。
そのうち返ってくるようになったりするんでしょうか。

でもPythonからのアクセスは整理されているように見えます(未着手)

>レンダリング設定　Python API
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-FFC3298A-9803-4EAF-B472-D13247319EB0.htm

#リファレンスでの挙動

ここが一番気になるところではあるんですが、未着手です。

#ノード構成

20160522追記
<img width="1679" alt="スクリーンショット 2016-05-22 21.56.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/1fec7277-ecf6-3bc8-54ca-ed75eae26f05.png">

「レンダリング設定」で作ったレンダーレイヤーは「renderSetupLayer」ノードになるようです。
その後ろにrenderLayerノードやcollectionノードがつながります。
この二つがワンセットで、レンダリング設定でレンダーレイヤーを作って名前をつけますが、それで一緒にできるrenderLayerノードは、名前の先頭に「rs_」がつきます。
（従来からある）レンダー設定パネルのレンダーレイヤープルダウンで出てくるのはrenderLayerノードの方です。
（renderLayerは、renderSetupLayerノードの「Legacy Render Layer」に接続されてます。）

renderSetupLayerノードはrenderSetupノードにつながり、
renderLayerノードはdefaultRenderingListノードにつながります。

renderSetupノードには「First Render Layer」「Last Render Layer」があり、各renderSetupLayerノードにも「next」と「previous」があります。

collectionノードにはselectorアトリビュートがあり、そこにはbasicSelectorノードがつながります。
このほかオーバーライドなどを設定していったら、collectionノード以外にもそれ用のノードが繋がっていくことでしょう。

#まとめ

プリファレンスをみると、従来のレンダーレイヤーへ戻す方法も用意してあります。
既存のシーン以外では使うこともあるまい……と思いたいですね。
<img width="328" alt="スクリーンショット 2016-05-07 17.39.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/7a7b420a-3755-d422-34d3-32bc441cfa75.png">
「優先レンダリング設定システム」＞「旧式のレンダーレイヤ」

そんな感じで、
あらゆる意味で今後に期待です。

<img width="260" alt="スクリーンショット 2016-05-07 18.14.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/102581/9edaaa45-1938-a182-ebc2-e2a123b493db.png">
おまけ。レイヤーエディタも、「ディスプレイ」と「アニメーション」だけになってます。

#参考

ext2　レンダリングの新機能
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-9AB65955-9390-42F6-B293-EAF1A0AD0C3B.htm

レンダリング設定 [Extension]
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-646154F9-E4D2-4A3E-A0D9-B2F062960A4E.htm

レンダリング設定　ベストプラクティス
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-4CF324AB-0398-498C-A539-2094BB640B7C.htm

レンダリング設定　Python API
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-FFC3298A-9803-4EAF-B472-D13247319EB0.htm

旧式のレンダーレイヤー
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-DA375B62-63C7-4049-88F9-159C8A55FB4C.htm

付録：
付録 A: 旧式のレンダー レイヤ プリセットによる作業
付録 B: 旧式のレンダー パスによる作業
http://help.autodesk.com/cloudhelp/2016/JPN/Maya/files/GUID-199D599E-0141-4E5A-A988-0BEA103D2AF0.htm