<h3>概要</h3>
映像制作(主に2D/CGアニメーション)のためのパイプライン及び作業補助のための周辺ツール作成・運用
<h3>担当</h3>
パイプラインの設計・開発及び運用
<h3>使用言語・ライブラリ</h3>
python, mel, JavaScript, Qt (PySide2)
<h3>課題</h3>
<ul>
現在の映像制作は、モデリング・アニメーション・エフェクト・ライティングなどの工程の分業が進んでおり、セクション内でのデータの管理、セクション間でのデータの受け渡しを簡単に行えるパイプラインを敷くことが重要になっている。社内に既存のパイプラインは存在するが、改良・変更を施していき、デザイナーが本質的な作業に集中できるように変化していく必要がある。
<h3>取り組み</h3>
<ul>
<li>
既存の Pipeline の保守・改良を行った。使用言語は主に Python で、GUI が必要な場合は Qt (PySide2)を用いた。一例として以下のようなことを行った。
<br>
<ul>
<li>
セクションをまたぐ出荷作業の高速化。Maya のシーンファイルをテキストとして読んで編集する機能が存在したが、一括読み込み一括書き出しで、バッファも適切に使用していないため IOに時間がかかっていた。読み込みをバイナリモードに変更・ライトバッファを余裕を持たせて設定・逐次読み込みの変更を施すことで、およそ10倍速にすることができた。
</li>
<br>
<li>
アニメーションデータ出荷作業の高速・安定化。アセットのアニメーションを出力するときに、従来はシーンのすべてのデータを読み込んでいたため、重いシーンの場合開くだけで数時間かかり、場合によってはメモリが足りずに処理落ちしてしまうことがあった。処理をレンダーファーム上で並列化して、単体の処理では必要なデータだけを読み込むようにすることで、数日かかっていた処理を1時間程度で終わらせるられるようになり、処理落ちもしなくなった。
</li>
<br>
<li>
Maya の作業シーンの軽量化。大きなシーンになると、開くだけで数十分、オペレーションを挟むと数分止まってしまうものが多かった。そのため、Maya の GPU キャッシュや Alembic キャッシュ・ASS などのキャッシュと実データとの入れ替え機能を作ることで、作業シーンを軽くする取り組みを進めた。
</li>
<br>
<li>
共用 Python モジュールの整備。レンダーファームへのジョブの投入、前セクションから出荷されたデータの場所の検索など、DCCツール(Maya, Houdini, Nuke など)間で共通のロジックが必要になることが多いため、それらの Python モジュールを整備した。従来はツールごとにハードコードされていたものを整備することで、コーディング時間の削減・保守の手間の削減に寄与した。
</li>
</ul>
</li>
<br>
<li>
映像制作管理データベースであるShotGrid(旧Shotgun)を導入する際に、その Python API の調査及びパイプラインへの組み込みを行った。また、社内に立てた Centos のサーバー上で特定のデータベースの変更に対してアクションを hook する機能を整えた(hookの機能自体は提供されている)。この機能はCentos の Service として動かしており、サーバーの再起動時にも自動で起動するようにした。また、サーバーが落ちている際のデータベースの変化に対して、hook を起動するべきものを取捨選択するようにし、誤作動を防ぐようにした。
</li>
<br>
<li>
Photoshop のブラシ・プリセットの切り替えを簡易にするために Adobe CEP の機能を使って JacaScript で専用の切り替えツールを作成した。
</li>
</ul>
<h3>効果</h3>
データ処理の高速化はデザイナーの作業のストレスを軽減し、高評価をいただいた。また、Photoshop のブラシ・プリセット切り替えツールも非常に好評を博しており、社内の作業で常時使われている。ShotgGrid に関しても、hook による自動化が可能であるという認識を社内で共有することができ、それを前提として一連のデータ変更が行われるようになっているため、ShotGrid の有効な活用に寄与していると思う。