unmoralの制作を支えたツールたち

# はじめに
[ショートムービー「unmoral」](https://unmoral.cgmovie.art/)を2019年1月23日に公開します！
この記事ではunmoralの制作で使用した（検討した）サービスやツールを紹介します。

合わせてショートムービー「unmoral」の宣伝もさせてください。
[ショートムービー「unmoral」公式サイト](https://unmoral.cgmovie.art/)
[レンダーシーンを構築するツール「msJobPitcher」をリリースしました。](https://qiita.com/paty-6991/private/3c779d21264e9f2ae65f)

# プリプロ/PM関連
## milanote
[milanote](https://app.milanote.com/)はブレーンストーミングをする際に情報をまとめたり、情報を整理するのに役立ちます。
オンライン上で複数人による同時編集にも対応しており、整理した情報はpdfなどで出力することができます。
![milanote.png](https://qiita-image-store.s3.amazonaws.com/0/255056/484e864e-0b97-c57d-a705-3fe67dd24f3b.png)

## Googleスプレッドシート
Googleスプレッドシートを用いて各カットのタイムコード及び担当と進捗を管理していました。
![timecode.png](https://qiita-image-store.s3.amazonaws.com/0/255056/703927e3-f3a9-2425-6658-977ef8b22ed0.png)
![all.png](https://qiita-image-store.s3.amazonaws.com/0/255056/855fb5ed-8b02-3370-1db2-cfcf2dde7d7f.png)
[Incoming Webhook](https://ms-06.slack.com/apps/A0F7XDUAZ--incoming-webhook-?next_id=0)を使ってslackへ各セクションの進捗を毎日送信しています。

```js:post.gs
function main() {
  
  var sheet = SpreadsheetApp.openById('your sheet ID');
  var anim = sheet.getSheetByName('all').getRange(21,9).getValue();
  var hair = sheet.getSheetByName('all').getRange(21,10).getValue();
  var effects = sheet.getSheetByName('all').getRange(21,11).getValue();
  var render = sheet.getSheetByName('all').getRange(21,12).getValue();
  var compo = sheet.getSheetByName('all').getRange(21,13).getValue();
  
  anim = Math.round(anim * 100);
  hair = Math.round(hair * 100);
  effects = Math.round(render * 100);
  render = Math.round(render * 100);
  compo = Math.round(compo * 100);
    
  var sentence = '本日までの進捗は\nanim : ' + anim + '%\nhair : ' + hair + '%\neffects : ' + effects + '%\nrender : ' + render + '%\ncompo : ' + compo + '%\nでした。'  
  
  var payload  = {
    'text':sentence,
  };
  
  var options = {
    'method'      : 'post'                 ,
    'contentType' : 'application/json'     ,
    'payload'     : JSON.stringify(payload),
  };
  var url = 'webhook url';
  UrlFetchApp.fetch(url, options);
}

```
![webhook.png](https://qiita-image-store.s3.amazonaws.com/0/255056/31741f20-350a-25b9-5268-f9ce0e03518a.png)

# プロダクション関連
## maya
メインのDCCツールはmayaを使用しました。
mayaでの便利ツールもいくつか紹介します。

### Studio Library
[Studio Library](https://www.studiolibrary.com/)はアニメーションやポーズを管理するツールです。
サーバにルートディレクトリを設定することで簡単にアニメーションの共有が可能です。
キー情報のみがmbファイルとしてアップロードされるのでアニメーションを出荷する際にキャラクターごと渡す必要がなくなりました。

### mGear
[mGear](http://www.mgear-framework.com/)はオープンソースのリギングフレームワークです。リギング作業は大きくスケルトン作成, コントローラ作成, スキニングに分けられますが、このうちのスケルトン作成とコントローラ作成を簡略化することが可能で、リギング作業を短縮するとともにピッカーが用意されているため、アニメーション作業を効率よく進められます。

### msJobPitcher
今回、「unmoral」の制作においてレンダーシーンを構築するツールを開発し、リリースしました。
ツールは[GitHub](https://github.com/patriot6991/msJobPitcher/releases)で公開しています。
msJobPitcherについては別記事に詳しくまとめましたので、合わせてみて頂けると幸いです。
[レンダーシーンを構築するツール「msJobPitcher」をリリースしました。](https://github.com/paty-0004/msJobPitcher/releases)

## DAZ Studio
[DAZ Studio](https://www.daz3d.com/)は人体キャラクターをモーフィングによって、簡単に制作することができます。スキニングされたキャラクターをフェイシャル付き（ブレンドシェイプ）で出力することができます。
mayaとの連携に[DAZ to Maya](https://www.daz3d.com/daz-to-maya)というプラグインが公式で用意されているので比較的スムーズにデータ移行が行えます。

## Autodesk Character Generator
[Autodesk Character Generator](https://charactergenerator.autodesk.com/)はスライダー操作のみでキャラクター制作することが出来ます。HumanIKがセットアップされた状態で出力が可能なので、モブキャラクターの量産に使用しました。

# ポスプロ関連
## Arnold Denoiser
[Arnold Denoiser](https://docs.arnoldrenderer.com/display/A5AFMUG/Arnold+Denoiser)はexrファイルからノイズを除去してくれます。大量のレンダーイメージを処理しなければならないので、バッチファイルを使用してデノイズを行いました。
連番イメージの先頭ファイルをD&Dすることでデノイズが出来ます。

```denoise.bat
echo %1
cd %~p1
"path\noice.exe" ^
-i "%1" ^
-o "%~p1/noice_%~nx1" -f 360 -ef 0 ^
```
![mitsukitan.png](https://qiita-image-store.s3.amazonaws.com/0/255056/31aaf8f1-f2a6-befb-cc73-fcb0775f5797.png)

## Google Earth Studio
[Google Earth Studio](https://www.google.com/intl/ja/earth/studio/)はGoogle Earth上でレンダリングを行えるアニメーションツールです。非常に高精細なイメージが得られるため現在、背景のフォトバッシュなどに活用できないか検証中です。

# おわりに
様々なツールが毎日のようにリリースされており、情報収集を欠かさず行うことでよりよい制作フローが組めると思います。
今後CG映像制作に取り組む人の手助けになれば幸いです。