ZYNCネットワークレンダリングを利用する

# はじめに
[ZYNC](https://www.zyncrender.com) とは、Google が提供しているレンダーファームのサービスです。

![zync-logo.png](https://qiita-image-store.s3.amazonaws.com/0/74764/89eb90fa-acc4-eaad-9576-3baa41ad7321.png)

## レンダリング時間の問題

3DCGのレンダリングは非常に時間のかかる処理です。特に Maya 2017 から搭載された Arnold レンダラーは、高品位である代わりに、レンダリングに大量のCPUリソースを消費する設計です。レンダリングの設定や解像度によっては、手元のマシンで一晩かけてレンダリングしても、一秒程度の映像しかレンダリングできない場合があります。

# ZYNC の導入

レンダリング時間の問題を解決するために、レンダリングソリューションである ZYNC を導入します。ZYNCネットワークレンダリングを利用すれば、利用するCPUの種類や個数を調整できるため、レンダリング時間を短縮することができます。

## ZYNC のメリット

ZYNC を使用してみて感じたメリットを挙げます。

- マシンやソフトウェアの調達が不要
- Google のアカウントを利用できる
- 300ドル分の無料体験枠がある
- 料金が明確

### マシンやソフトウェアの調達が不要

レンダーファームを自前で構築するには、マシンの購入はもちろんのこと、Maya や Arnold などのソフトウェアライセンスが必要になりますが、ZYNC を利用すればそれらは全て不要になります。

### Google のアカウントを利用できる

ZYNCサービスは Google アカウントで一元管理されており、決済情報も Google アカウントに紐付けられます。 既に Google のユーザであれば導入は簡単です。

### 300ドル分の無料体験枠がある

ZYNC サービスを新規で利用する際に、300ドル分の無料体験枠を利用できます。

### 料金が明確

ZYNC の料金は利用するマシンの種類と時間で決まります。詳細はZYNCの [料金表](https://www.zyncrender.com/#pricing) を参照してください。
表に **Preemptible** という項目がありますが、GCPの[マニュアル](https://cloud.google.com/compute/docs/instances/preemptible?hl=ja) に説明があります。要は、料金が安い代わりに他の人のタスクで優先的に使わせてもらう場合があるので、レンダリングの完了時間が前後することがある、ということです。自分は特に時間を気にすることがなければ Preemptible を使用しています。

# ZYNCの導入方法

ZYNCの導入手順は[マニュアル](https://sites.google.com/site/zyncpublic/doc/install)に詳細に書かれていますので、ここでは大まかな流れを説明します。

以下の順序で ZYNC の利用環境を構築していきます。

1. ZYNC サイトへのログイン 
2. ZYNC クライアントの起動
3. プラグインのインストール

## 導入を検討する前に

ZYNCの導入を検討する前に、利用可能な環境を確認しておくことを推奨します。ZYNC で利用可能なソフトウェアの一覧は [FAQ](https://sites.google.com/site/zyncpublic/doc/faq#TOC-Q.-What-application-renderer-plugin-versions-do-you-support-) で参照できます。

今回の検証で使用した環境は以下の通りです。

- Autodesk Maya 2017 Update 5
- Arnold5.0.1.0 (MtoA 2.0.1)

## ZYNCサイトへのログイン

[公式サイト](https://www.zyncrender.com)から登録を開始します。ここで Google アカウントへのサインインを要求されます。 
Google アカウントにサインインすると、 自身の ZYNC サイト名を登録します。今後、**ZYNC Web コンソール** を立ち上げるときに利用するURLになります。

![Screen_Shot_2017-09-24_at_17_59_44.png](https://qiita-image-store.s3.amazonaws.com/0/74764/c3301161-a8e0-1914-45d0-62c577739bb8.png)

## ZYNC Web コンソールの確認

先ほど登録した URL に移動すると、黒いコンソール画面が現れます。これはレンダリングの状態を管理する画面です。もしレンダリングを途中で止めたい場合にこの画面で操作を行います。
下の赤い表示は、まだ何らかの理由でセットアップが完了しておらず、ZYNCが利用できないことを意味しています。

 ![Screen_Shot_2017-09-24_at_18_25_54.png](https://qiita-image-store.s3.amazonaws.com/0/74764/554f7649-f7c0-320d-20f3-f0eaa5779c9d.png)

ほとんどの場合、赤い表示がされているときは、以下の二つが原因になります。

- 決済情報を登録していない
- ZYNC クライアントが起動していない

## 決済情報の登録

GCP のサイトにアクセスして、[マニュアル](https://sites.google.com/site/zyncpublic/doc/cloud-project-setup)の手順を元に登録を行います。マニュアルに記載されているとおり、決済情報を登録しないと、無料枠であっても利用することができないので注意が必要です。

## ZYNC クライアントの起動

ZYNC クライアントについては、[ダウンロードサイト](https://www.zyncrender.com/downloads/)からインストーラを入手します。
インストール後、ZYNCクライアントを起動します。

![Screen_Shot_2017-09-24_at_12_41_04.png](https://qiita-image-store.s3.amazonaws.com/0/74764/6e7afd39-e239-7813-8475-a56cda33c281.png)

ここでも Google のアカウントでログインします。**Site URL** には、先ほど登録した自身の ZYNC サイトのURLを入力します。

## Maya プラグインのインストール

ZYNC クライアント起動後、Maya のプラグインをインストールします。インストール方法は[マニュアル](https://sites.google.com/site/zyncpublic/doc/install#TOC-3a-.-The-Plugins-tab-in-the-Zync-Client-App-Simple-recommended-for-most-users-)を参考にしてください。無事インストールできれば、 Maya のシェルフに **Zync** が追加されます。 

![maya_shelf.png](https://qiita-image-store.s3.amazonaws.com/0/74764/a1fbd36d-d971-630c-8eb2-f54f2d5af9c7.png)

## レンダリング開始

Maya を開き、レンダリングするシーンを開きます。次に Maya のシェルフから ZYNC を選択します。Zync Submit ウィンドウが表示されます。

![Screen_Shot_2017-09-24_at_18_42_41.png](https://qiita-image-store.s3.amazonaws.com/0/74764/16bb6b4b-dc42-91a6-00c7-acf31a85ad9b.png)


主に以下のパラメータを設定できます。

- マシンの数と種類
- プロジェクト名
- プロジェクトフォルダ
- 出力フォルダ
- レンダラの種類
- レンダリングするフレーム数

### マシンの数と種類

レンダリングにかかる時間は、基本的にマシンの数と種類で決まります。例えば 8core マシンで 10フレームレンダリングするのに1時間かかるとして、2時間で100フレームレンダリングしたければマシンを5台使う、という感じで決めていきます。

![Screen Shot 2017-09-24 at 22.42.52.png](https://qiita-image-store.s3.amazonaws.com/0/74764/25bba655-6974-7970-50ce-af4cb1573ac0.png)

時間に余裕があれば、Preemptible を選択すれば、比較的安い値段でレンダリングできます。

### プロジェクト名

同じプロジェクトを使い回すで問題ないです。

### プロジェクトフォルダ

シーンを含んでいる Maya のワークスペースを指定します。レンダリングを開始すると、ワークスペース内のデータがレンダリング用のサーバにアップロードされます。

### 出力フォルダ

レンダリングが完了したファイルをダウンロードするフォルダです。

### レンダラの種類

今回は Arnold を指定します。

### レンダリングするフレーム数

**Frame Range** でレンダリングしたいフレーム範囲の指定、**Frame Step** は何フレームおきにレンダリングするかの指定、**Chunk Size** は特に重要で、レンダリングマシン1台に何フレーム割り当てるかの指定になります。

![Screen Shot 2017-09-24 at 22.59.44.png](https://qiita-image-store.s3.amazonaws.com/0/74764/e7037694-a3fc-a7af-dfb5-ea03ea268651.png)

レンダリング結果の画像がダウンロード可能になるのは、**マシン1台に割り当てられたフレームが全てレンダリングし終わってから**になります。つまり、Chunk Size を大きくしすぎると、レンダリング結果を確認するのが多くのフレームをレンダリングした後になります。万が一レンダリング設定が間違っていたときに、ムダなレンダリングコストがかかってしまいます。

## Webコンソールの確認

Zync Submit ウィンドウで設定が完了したら、Launch Job ボタンでレンダリングを開始します。レンダリングを開始すると、しばらくして Web コンソールに反映されます。

![Screen_Shot_2017-09-25_at_7_42_33.png](https://qiita-image-store.s3.amazonaws.com/0/74764/46165319-63b4-a215-ed62-a68b3a097e9f.png)

### レンダリングの進捗

レンダリング開始してすぐは status は **starting** になります。その後すぐに **uploading** に変わります。このとき、クライアントからサーバに Maya プロジェクトをアップロードしていますので、編集操作は危険です。ジョブの status が **running** に変更されれば、PCはシャットダウンしても問題ありません。

### iOS アプリケーション

Google が公式で提供している [iOSアプリ](https://itunes.apple.com/jp/app/google-zync/id1141482953?mt=8) を iPhone にインストールしていれば、外出中でもレンダリングの進捗を確認できるので便利です。

![GoogleZyncApp.png](https://qiita-image-store.s3.amazonaws.com/0/74764/a1c6d9ef-cbed-b839-638c-cc32164ac793.png)

### レンダリング結果のダウンロード

レンダリングが完了したら、出力フォルダを確認すると画像ファイルが確認できます。もし画像ファイルが出力されていない場合は、コンソールを操作して再ダウンロードできます。ダウンロードしたいジョブを選択して、**Redownload Tasks** を実行すれば、再ダウンロードが開始されます。

![Screen_Shot_2017-09-25_at_8_09_02.png](https://qiita-image-store.s3.amazonaws.com/0/74764/c31881b5-9e55-e9ae-9c13-b4229047de95.png)

# コストの例

以下の動画の制作にかかったレンダリングコストを算出してみます。なお、解像度は 960x540 で、1811フレームをレンダリングしています。

[![Screen Shot 2017-09-26 at 9.36.19.png](https://qiita-image-store.s3.amazonaws.com/0/74764/a6913b51-efee-be4f-7b77-4988a3370730.png) 8Ball on Vimeo](http://vimeo.com/234418104)


Preemptible の 8core を使用して 1フレーム平均して10分程度かかるとして、利用時間は302時間。 

> $1811 × 10 ÷ 60 ≒ 302$

2017年9月現在、Preemptible の 8core は1時間の利用で 0.98ドル なので、 295.96ドル。

> $302 × 0.98 = 295.96$ 

日本円にして現在のレート（USD から JPY で 108.585）で 32136円になります。

> $295.96 × 108.585 = 32136 $

今回の規模であれば、計算上は無料枠内でレンダリングできる範囲ですが、当然ながら試行錯誤してレンダリングし直したりすることはありますので、予算は1.5倍から2倍はかかると見ておいたほうがよいです。
また、今回は Maya の Arnold での利用なので、他のソフトウェアとレンダラの組み合わせだと価格は異なります。

# おわりに

ZYNC を利用したネットワークレンダリングについて説明しました。
個人ユーザでも、ZYNC を導入することで、レンダリングのための煩わしい作業から解放されるので、他の作業に時間を投入することができます。

## 今後の課題

しかしまだ課題はあります。レンダリングファームを利用したとしても、レンダリングが無限にできるわけではなく、当然のようにコストがかかります。特に Arnold でのレンダリングにかかるコストをどのように減らしていくのか。この問題を今後は検証していきたいと思います。

## 関連記事

- [3DCGに After Effects でボケ表現を加える方法](https://qiita.com/karasusan/items/8caa8e33c1d7d16d6d8f)

- [3DCGに After Effects でモーションブラーを加える方法](https://qiita.com/karasusan/items/85f8f25c1cb61cff9fd1)