After 『USAエッチ~あままみ3』 技術編
『あままみ3』のリリースまでにいつもより時間がかかったのはAfter『あままみ3』に記した通り、企画上・制作上の要因も多々有りました。
ただ他にも、この一年間は今までの制作で見えてきた問題点・非効率な点を洗い出し、ワークフローの見直し、ツールの開発、新たな機材の導入を積極的に行っており、それらの開発・検証にも結構時間をとられていました。
ということで、この記事では放置していた『USAエッチ』の分も含め、『あままみ3』の技術周りのお話し…作業の効率化の為に行った工夫、新規導入した機材・ソフトウェアの効果等について書き記しておきます。
今まで以上にディープな話も書いてますので、3DCGや映像製作過程に興味が無い方でも「表向きは女の子がエッチしてる動画なのに、制作現場ではなんだかワケわかんない事やってる!」って感じで面白いかも知れない。その手の業界の人だと「エロ同人でそこまでするのかよ!」とか、「それエロに使うのかよ!」って感じで面白いかもしれない。
■セミオート揺れものコントローラ
『USAエッチ』から導入した揺れもの制御システム。
seismicのFLASH作品の性質上、モーションのループ処理が欠かせないので、セカンドアニメーション(髪・服・乳等の揺れ)の制作にはシミュレータを用いず、愛と根性の手付けモーションで制作してきました。
ただ、髪や乳など、根元のボーンの動きが末端に遅延して伝わってく様なアニメーションは毎度必要になってくるので、コレを自動化したいと思っていました。
そこでCATのセットアップレイヤーにExpressionを組み込み、コントローラを動かすだけでおっぱいプルンプル~ンや、ツインテールがふんわり揺れる動きが自動で行えるようにしました。
動画はおっぱいコントローラのみ表示しています。コントローラの動きに応じておっぱいのボーンに移動と回転の値が与えられます。おっぱいボーンは3節有り、末端に行くほどフレーム遅延&減衰した値が入力されます。
髪、ウサ耳、サイコロ、スカート、リボン等にも同様のコントローラが仕込まれており、1つのコントローラで纏まった要素(頭セット、スカートセットなど)のコントロールが出来、非常に効率的。また、コントローラからのスイングモーションとは別個に、各CATボーンにFKで基礎ポーズを付けたり、加算アニメーションも可能なので、かなり柔軟なモーション制御が可能です。『うさだ』の体中てんこ盛りパーツ群は、この仕組みが無いとモーション作成やループ処理が難しい状態でしたね。
ただ、遅延にかかるフレーム(3節の乳なら2フレーム)分、ループモーションに移行する予備フレームを多めにとる必要が有るので、モーションの繋ぎには少々気を使う必要が有りました。
また、最大の問題点は『重い』こと。この仕組みはコントローラオブジェクト自体CATボーンで作っており、そのアニメーションレイヤーの全加算値を常に参照する(Expose Transform Helper)仕組みとなっております。なのでアニメーションレイヤーが増えると非常に重い。『20レイヤー・2000フレーム』なんてアニメーション作ると大変な事になるし、さらに乳揉みのためにおっぱいに手をコンストレインした日には、コントローラを動かして1分近く待たされる場合もあります(max2012→2014で大分軽くなったけど)。そんなときはExpressionをOFFにし、大凡の動きを付けてからONにして対応してます。
お勤め時代、mayaでのゲーム用のモデル+モーション製作に携わったときは、MELでExpression書くの大好きだったのですが…maxはmayaに有るようなシーン全体のExpression統合管理画面が用意されておらず、いまいち使い辛いんで敬遠しておりました(ワイヤパラメータにちょっと式書くくらい)。でも、CATのセットアップレイヤーと組み合わせると色々遊べるので、今後も色々試してみたいと思っております。
【費用対効果:☆☆☆☆★】
ソフトウェアでも機材でもなく、3DCGソフト内でのセットアップ手法探求に過ぎないので、費用対効果というのもナニですが…実際この仕組みが完成に至るまでには結構時間がかかりまして、『USAエッチ』制作の最初の1ヶ月は試行錯誤の繰り返しでした。
こういった複雑なセットアップは実際にモーションを付けてみてはじめて気付く問題点も有るので、製作中の細かい調整も必要になりました。まだまだ自分の制作スタイルの中でのデメリットも有るので、実際に生かされるのはこれから…といったところでしょうか。
■Excelによる3dsmaxレンダリングジョブ発射装置
3DCGで動画をレンダリングする際、最も原始的な手段はローカルマシンでの単独レンダリング。当然1マシンだから時間がかかるし、レンダリングにCPUパワーを喰われるので、他の作業が出来なくなってしまいます。
そんな時は他のマシンに仕事を放り投げよう!現在、主な統合3DCGソフトにはネットワークレンダリングという手段が用意されており、3dsmaxにもBackBurner(以下BB)という心強いネットワークレンダリング管理システムが付属しています。3dsmax上でレンダリングしたいシーンを開き、カメラやフレーム範囲を指定し、BBのマネージャーマシンにジョブを送ります。すると、レンダリングサーバとして登録しておいたマシン達に自動的にレンダリングジョブが送られ、指定したフォルダに連番ファイルが出力されていく…という仕組みですね。
利点はサーバの台数分だけ単純にレンダリング時間が短縮出来る事、そして自分のマシンはジョブを送信したらフリーになるので、その間も作業が進められる事。欠点はレンダリング用のマシンを用意しなければならないので、台数分コストがかかる事。
これだけでも1マシンの時より便利なのですが、例えばこういったニーズが出てきた場合…
- 限られたフレーム区間だけレンダリングしたい
- シーン内の特定のオブジェクトだけレンダリングしたい
- 解像度を下げて高速にレンダリングしたい
- プレビュー用に高速レンダリングしたいのでアンチエイリアスをOFFにしたい
- トゥーンのラインを除去してレンダリングしたい
その都度『3dsmaxを立ち上げ → シーンを開く → 設定を変更 → レンダリングジョブを送信』していたら大変面倒です。そこで3dsmaxのコマンドラインレンダリングと、シーンの状態をプリセットしておくSceneStateという機能を使うと、maxを立ち上げずにシーンの状態を指定してレンダリングジョブを飛ばすことが出来ます。
さらに各種設定をExcelに記述・送信出来る様にしたのがコレ。
以下の様な細かい指定が出来ます。
- アンチエイリアスのレベル(無し、プレビュー、最終出力)の指定
- 開始終了フレームの指定
- 解像度の指定
- カメラの指定
- シーンの状態(マミさんだけとか、水着だけとか)
- エフェクトの有無(トゥーンラインの有無など)
- ジョブのプライオリティ(レンダリングする順番)
- maxのバージョン指定
- 出力先とファイル名の指定
- 出力画像フォーマットの指定
『あままみ2』の製作初期に作り始め、その時点で基礎機能は一通り出来ておりました。その後もmaxバージョン(2012、2014)切り替え機能や、連続したフレームを自動で1つのジョブにまとめる機能など、細かいマイナーチェンジを繰り返して今に至ってます。
元がExcelなので特定の行をコピペ → 一部設定を書換え…なんてのも容易いし、詳細なフレーム区分の記述、膨大なエレメント素材の出力設定、なんでも楽ちんです。
【費用対効果:☆☆☆☆☆】
開発期間は3プロジェクトに跨がっているので延べ1ヶ月くらいにはなってるかもしれませんが、実際問題もうコレ無しでは生きて行けないくらいの使い勝手になってるんで、元は取れまくりなんじゃないでしょうか。最初期バージョンを開発しながらも、あのボリュームをあの期間で完成した『あままみ2』の事を考えると、その効果は立証済みかなと。
こういったレンダリングジョブ管理システムは、レンダーファーム管理システムやディスパッチャーと呼ばれて市販されているのですが、初期投資に諭吉が数十人必要だったり、或いはレンダリングマシン台数に応じてお金が発生するシステムだったりするので、個人で手を出すのは結構勇気が要りますね。
実際その手のソフトを長期試用&検証していないので単純比較は出来ません。もっと凄いかもしれない。でも、元々素性の良いBackBurnerとExcelの柔軟性・運用性の良さ、そして自前であるが故のイージーな使い勝手と、不満が有れば即改善出来る点がなんとも心地良いので、今のところは市販品に手を出す必要性は感じてません。
■ExcelによるAfterEffectsレンダリングジョブ発射装置
3dsmaxのジョブ発射装置の応用編です。まずはコレを作った経緯から。
「さてどんな絵を作ろうか」と、完全に手探り状態だった処女作『CatsAttacks』の制作では、3dsmaxでトゥーンレンダリング画像の他にも様々な画像素材を出力し、AE上であれこれ画像を合成して試行錯誤…最終的にリリース版の様な絵に仕上げました。
プロジェクト終え、AEのレンダリングでメインマシンのCPUパワーが占有されてしまうのが一つの課題になりました。AEでコンポジしながらmax使ってると最悪落ちることも有り、マシン台数が少ない当時は死活問題だったのです。
「maxならネットワークレンダリングで容易く負荷分散出来るし、画像処理の比重をmaxに傾けることが出来れば全体作業も効率が良くなるはず」と考え、『おしおき日報』からはmaxのマテリアル・シェーダを見直し、『CatsAttacks』の最終出力画像に近い絵が一発レンダリングで出せる様に工夫しました。この手法は功を奏し、作業効率は大幅改善。『USAエッチ』まではこの制作スタイルが続き、AEではちょっとしたエフェクトとFLV動画の書き出しのみ…というワークフローが続きました。
しかし、『あままみ3』では凝った質感を作り出そうとしたばかりに、またもAE出力の負荷が気になる様になってきました。これはイカンと改善手段を模索…「そういえばAEも分散レンダリング出来たっけ?」って事で、ヘルプ読みながら『監視フォルダ』機能を使ったネットワークレンダリング機能を試してみたんですが…maxのBackBurnerの仕組みになれてると、まどろっこしいやら面倒臭いやら話にならない。
「んなもんやってられるか~!」とさらに色々調べていたら、なんとAEのレンダリングジョブをコマンドラインでBackBurnerに飛ばせるらしいじゃあ~りませんか。「コマンドラインならまかせろー!」って事で、再びExcelを用いてジョブ発射システムを構築してみました。
- AEファイルとその中の特定のコンポジットを指定可能
- 出力パスの指定
- 出力品質の設定
- 上書き・差分書き込みの選択が可能
- タスクの分割数の指定
まだAEのコマンドが若干イミフなのでmaxジョブ発射装置よりは完成度低いのですが、一応使えるレベルになってます。
『監視レンダリング~収集』機能と違い、AEプロジェクト内でネットワーク用の設定を一切行う必要が無いってのが良いですね。ほら、うっかり『既存ファイルをスキップする』の設定が残ってると何回コンポジしても画像が古いままだったり…するよね?
【費用対効果:☆☆☆☆☆】
Excel・BBなど有りもの使って開発期間は1週間程度か。そもそもAEにはまともなネットワークレンダリング手段が付属していないので、費用対効果でいえばmax用の発射システムより数段高い。さらに今まで寝ていたレンダリングマシンを生かせたとなれば☆5つは必然。
前述の市販レンダーファームシステムはやはり高価ですし、それをケチった分でレンダラー組めますし。
■高速SSDの導入 (Intel SSD 910Series 800GB)
こうしてmaxのレンダリング指令が無いときは眠っていたレンダリングマシン達をAEレンダリングで生かし、その間メインマシンを完全フリーにする事ができました。しかし、如何せんレンダリングスピードが遅い。調べてみたところ、コンポジ素材も出力先も全部1台のNASが担っており、その処理が追いついていないのが原因でした。そりゃAtomシングルコアでメモリ1GBのNASに、6台のマシンが大量の連番画像を読み書きしてたらパンクしますわ。
そこで検証がてら、メインマシンのSSDにAEのレンダリング出力させたところ、速度が劇的に改善。これはいい…けど全部で200GBにもなるプロジェクトを抱えるにはSSDの容量がキツイ…キツイ…えぇ~い!
「一番いいSSDを頼むッ」
ってことでコレです。なにやら「SLCより寿命長い!5年間毎日10回全容量分書き換えても問題ナス!」という触れ込みだったので「ならば元も取れるじゃろう」って事で震える指でポチッ。
んで早速コイツをメインマシンにぶっ刺し、連番ファイルを全部ぶち込んでAEのネットワークレンダリングを試したところ…なんとNASでやりとりしてた時の8倍くらいに速くなったではないか。さらにメインマシンでの『FIX連番→FLV出力』という工程も一瞬の出来事の様に高速化された。というかプレビュー再生するのにキャッシュする必要がないレベル。そらぁこの性能なら…さもありなん。
まぁプロの現場ではローカルSSDか高速ネットワーク上のドライブに連番素材を置いてコンポジするのが普通でしょうけれども、『USAエッチ』までは全然必要性を感じない程度のAEレンダリング時間だった…というのが正直なところです。
【費用対効果:☆☆☆★★】
ハードウェア好きにとって失禁必至デバイスであり、早速もの凄く役に立ったので気分的には☆5つなんだけど費用対効果として考えると今時点ではこんな感じか。だって、実際「コレにして良かった☆5つ!」と思う瞬間が有るとしたら、5年後まで壊れずに問題無く使えたその時でしょ?
■AfterEffectsのコンポジットの組み方で悩む
『USAエッチ』以前は各カット(ピストンやフィニッシュなど)毎に細切れのFLVを用意し、それらを順次再生する方式でした。つまり『エッチシーン数×カット数×着替え数』の膨大なFLVファイルが有りました。
断面表示で動画を2つ駆動した結果、発売直後に「今回やけに重いです」とか「どうでもいいけど全編メガネ付けさせろや」というありがたいご意見を頂きまして、再生負荷軽減と全体容量を抑える(メガネ差分で動画が約2倍になる)ために再生システムの大幅見直しを敢行。そして最新の『単一のFLVファイルをシークしてループ再生させる方式』に変わりました。こいつの設計・試行・実装・リリースまで1ヶ月以内でやったのは大変でしたね。友人に一杯アドバイス貰いました。お陰様で再生速度も容量も改善。ありがとう。
この新たなシステムに変わって初の『いちからの制作』となる『あままみ3』では、一つの障害にブチ当たりました。それはAfterEffectsでのコンポジットの組み方に関するものです。
今までは細切れの各カット毎にコンポジットを用意していたのが、新システムでは一連の動画にする必要が有ります。単純に考えるとコンポジットの数も、連番読み込みの数も大幅に減るので非常に効率が良くなる…ハズでした。
この新システムで扱う動画は、maxのシーンをそのままレンダリングしたものとは少々異なります。max内では『ヘッダ → ループ(ピストン1) → ヘッダ → ループ(ピストン2)』といった風にアニメーションが作られていますが、新システム用動画ではループの部分だけ2回繰り返すようにしてあります。これはFlashでの再生時、ループのガタつきを抑える為の工夫です。
『USAエッチ』でこの方式に切替えたときは、当然素材も全部揃っているし、動画の尺(フレーム数)も完全にFIXしていたので、さして問題は有りませんでした。しかし『あままみ3』で動画が出来上がりはじめた頃に面倒な事が起こりました。例えば『パイズリのループを30→40Fにする』『フィニッシュ後の余韻を増やす』などの尺の増減を行うと、連番ファイルの読み直しや、AEでのレイヤーのイン・アウト位置をカット毎に1個1個細かく調整し直すというダル~い作業が発生するのです。
自分は何でも『用意周到・計画的』に作業をするより、『感覚的・衝動・思いつき』で作業をする人間なので、こういうアドリブでの尺の変更みたいなことはしょっちゅう有ります。なので、ちょっとした尺調整でいちいちルーチンワークが発生するのは勘弁です。なんとか尺調整しても短時間で対応出来る様に出来ないかなぁ…と悩み、もがき、苦しみました。もういっそ3dsmax上でループ部分を2ループにしちゃおうかとも思いましたが、それだとレンダリング時間が増えてしまって美しくないし…。
それで色々調べていたら、AEはJavascriptを使って色々マクロっぽい事が出来るらしいじゃないですか。なのでAEのスクリプト周りの流儀を少々勉強し、例の『レンダージョブ発射Excel』のフレーム指定部分をコピペする事で、自動的にレイヤーを複製・インアウト位置を調整するスクリプトを作りました。
↓
全体の尺が変わったら親コンポジの尺を自動で調整する機能付き。スクリプト自体は非常に簡素なモンなんですが、コイツのお陰で気軽に尺を変更出来る様になり、面倒なルーチンワークからの開放されました。
「こういうのでいいんだよ…こういうので」…何より、AE周りの効率で悩んだとき、スクリプトで解決するという選択肢が自分の中で生まれたことが今回の収穫だったかなと。
【費用対効果:☆☆☆☆☆】
典型的な『特定のワークフローじゃないと意味が無い』系の自家製ツール。制作時間もあまりかからなかった割に重宝してます。
ただ、コンポジットの組み方や、連番出力のフォルダ仕分け方法、『どういうスクリプトが有れば効率的か』という答えに至るまでは、上には書き切れない程の試行錯誤を繰り返しており、結構時間がかかりました。そもそもAEの知識不足ってのも大きいんですけどねぇ。
しかしJavascriptは何にでも使えるので覚えておいて損は無いですね。昔はこんなに長生きする言語だとは思わなかったなぁ…。
■連番ファイルをPSDにしてみる(PSDmanager)
AE周りでもう一つ。今回いつもよりコンポジットで扱うエレメント素材が多く、1つの動画に20種類くらい必要なものも有りました。これらを1つ1つ読み込むのがまた結構大変なんですよね。1つの画像ファイルに様々な情報を仕込めるRLAやOpenEXRなんて手段も有りますが、エフェクトでいちいち抽出してやるのも面倒だし。
そこで今回導入したのがPSDmanager。割と昔からあるmax用プラグインで、レンダリング結果をPSDとして出力するというのが主な機能で、レンダーエレメント、max内の特定のレイヤー、特定のマテリアルIDなどを個別にPSD内のレイヤーとして書き出す事が出来ます。さらに…
- 各レイヤーの表示のON・OFF
- 透過をマスク・透明度のどちらにするかの選択
- レイヤーの合成方法(乗算・オーバーレイなど)
など個別に指定する事が出来ます。Adobeのフォーマットという事も有り、AE側もPSDファイルの読み込みには柔軟な対応が為されており、全てのレイヤーを内包したコンポジットとして読み込んだり、各レイヤーを独立して読み込む事も出来ます。
勿論、静止画作業においても素材がレイヤー分けされているととても便利。またPSDファイル自体、実はTGAやTIFFよりも圧縮率が高く、ディスク容量が節約できるというのも密かな美点です。
難点として、このプラグインはEffect(効果)プラグインとして働くので、レンダリング時にはどうしてもmax側のレンダリング出力イメージファイルも一緒に吐き出されてしまう事が挙げられます。自分は軽量なjpgを出力させ、後でbatを使って根こそぎ削除してます。他にも、シーンを開いた直後は、プレビューレンダ(F9)時にPSD出力の確認ダイアログが出るのがちょっとウザいかな。
【費用対効果:☆☆☆☆★】
最新の3dsmaxではSceneSetsという機能が有り、max内で指定したレイヤースタックをそのままAEに直接読み込む事が出来るので、標準機能だけでもAEに効率良く連番を読み込む事は可能です。この機能、max2012のサービスパックからだったのですが、CATのバグのせいで導入出来なかったので、最近までその存在すら知りませんでした(泣
ただ、現状でSceneSetsとコマンドラインレンダリングをうまくリンクさせられていないのも有り、ソッチにワークフローを移行するにはまた色んなテコ入れが必要になるでしょうから、PSDmanager自体は導入して良かったと思っております。なんと言ってもお手頃価格ですし。
■レンダラー台数推移
上記の通り、レンダラーマシンは有れば有る程動画の出力時間が短縮出来るので、今までも新作で売り上げが得られる度に少しずつ増やしておりました。同人活動開始時から今に至るまでの設備強化の歴史はこんな感じです。どんどん部屋がserial experiments lainみたいになっていきます。
SandyBridgeが出てからというもの、安くてクロックアップ耐性が高いマルチコアCPUが手に入る様になったのは嬉しい限りですね。ただ、Sandy以降のIvyやHaswellは内蔵グラフィック強化や省電力化が主な性能強化ポイントで、CPUのピュアな演算能力を問う3DCGではその恩恵は薄く、同価格帯のCPU性能って3年位ほぼ停滞してる様に感じています。でもまぁ…3年前に作ったマシンが陳腐化せずに役に立ててるという点で、前向きにヨシとしましょう。
そうそう、WindowsXP(10台)まではネットワークの同時接続数制限が10台だったんですよね。「BackBurnerのレンダリングで11台使うとなんで弾かれるの!?」と当時悩まされました。今、windows7ではPro版でも20台くらいいけちゃうんですよね…流石に場所的にも電気代的にも厳しいですが。『あままみ3』の制作ピーク時は電気代20000円行ったし…はわわ…ハロワ。
【費用対効果:☆☆☆☆☆】
えーと何を持ってコスパかよく解らないですが(笑。ネットワークレンダリングに特化したマシンを組むと『1台10万円弱』が現実的なライン。それで損したなぁって事は何も無いので☆5ですかね。今回AEでもネットワークレンダリングがガンガン出来る様になったので、気分的には☆6つ位の勢いです。皆さん、夏場のオーバークロックには気をつけましょう。
■maxのバージョンアップ
自分は3dsmaxは2012からバージョンアップしないだろうと思ってました。「max2012と心中する!」くらいの気持ちで。理由はCAT(CharacterAnimationToolkit)というプラグインがmax2012以降(正確にはHotfix1以降)バグって全く使い物にならなくなったからです。車で例えるなら「整備無料です^^」って言われて整備うけてみたらブレーキとアクセルが逆に付いてるとか、ワイパーがずっと立ちっぱなしとか、オイル漏れっぱなしになって帰ってきた…みたいなもんです。
—-
CATってのはもともと外部プラグインで、Autodeskが買収したもの。買収後の開発を最初のメンバーが続けていたかは定かではないけど、標準装備になった後も新機能が追加されるのは同じキャラクターアニメーションツールとして被っているBipedの方で、CATは買収前からの持病である『LegのMatch IK/FKが変になるバグ』すらずっと修正されないままでした。
—-
「まぁ、流石にこんな酷い状態で放っておくわけ無いよね?」と思い、その後のHotfixやサービスパックが出るたびに当ててみたり、max2013の体験版もすぐに試したけど、一向にバグは無くならず、逆に増えてることも。
挙げ句の果てにmax2013で『maxとMotionBuilderを同時に立ち上げ、motionBuilderで作ったモーションをCATのリグへ直接流し込める新機能』が追加されました。これはもうAutodeskとしては『CATをリグ作るだけのツール』にしたいんだなと…そして「CAT使ってる奴はMotionBuilder(60万)買っとけや…おう、早くしろ!」ってメッセージなのだなと解釈しました。憤慨ですよ。激おこチンチン丸ですよ。
ところがどっこい…今年の春にリリースされたmax2014を気まぐれにインストール(諦めてないやんけツンデレ)してみたところ、まだちょっとしたバグは残ってるものの、だいぶんマシになっているではないか!
そして試しに軽くモーションを付けてみると…なんと統合型3DCGソフトでも最悪と言われる重ったるいカーブエディタがメチャクチャ軽くなっている!しかも、モーションレイヤーを20個積んだCATのポーズコピーも1秒で終わる(2012だと十数秒かかる)!
他にも微妙に使いづらかった布や物理シミュレーション機能(MassFX)が強化されたり…これは悪くない。試しに1シーン作ってみて核心を得たので、導入と相成りました。
まぁ買ったら買ったでAutodeskストアの表記が間違ってたりして(サブスクリプション付いてないのに付いてるって書いる)、オーソライズ完了後に返品する事になり、別のお店で買いなおすハメになったりと…面倒な事が有ったんで、割と普通に最悪の気分を味わいましたけどね。ほんとに自動机帝国になってから良いこと無いネ。
【費用対効果:☆★★★★】
CATとアニメーションカーブの軽量化の為だけに諭吉40人とかはっきり言ってコスパ最悪。今後のHotFixやServicePackにてさらにCATのバグが改善されるならいいんだけど、今までの事を思えばそれは希望的観測と言わざるを得ない。
今後はStateSetsやMassFXなど新機能をガンガン使い込み、「2014にアプデして良かった(;∀;)」と思える位の仕事っぷりを発揮しないとイカンですよね。
■プラグインレンダラー導入(finalRender)
豊富なプラグインレンダラーを使えるのがmaxの強みの一つですが、ぶっちゃけトゥーン系の映像作る分には標準レンダラーとPnecil+で十分。ただ、今回は海・水系の質感表現と高速なレイトレースエンジンの力を借りるため『finalRender』を導入しました。
実はお勤め時代から長くお世話になってるプラグイン。finalRender歴でいうと足かけ10年程か。日本だとVrayが人気で映画やゲームでの導入事例も圧倒的なのですが、どうも昔から何にしても一番人気を避ける天の邪鬼体質なのと、「ドイツのプラグインは世界一ィィィ!」というアレも有ってですね…。
『Vray』との大きな違いとして標準レンダラー用に構築したシーンでもそのままレンダリング可能…という点が挙げられます。MentalRayやVrayの場合、マテリアルやライトの設定をガチでレンダラー仕様に置換してやらないと本領を発揮しないどころかシーンが真っ黒になったりします。対してfinalRenderの場合、レンダラーを切り替えるだけで高速レイトレースやGIの恩恵が得られます。
また、マスクが使用可能なfR-Matte/Shadowマップ、アンチエイリアスが使えるfR Z-Depthなど、maxの標準機能に気の利く機能をプラスしたものが多数追加されるのも嬉しい所。他プラグインとの親和性も高く、Pencil+との相性も良いと言えるでしょう。
今回はメイン機能であるGIは使わず、海洋表現にオーシャンシェーダ使ったり、浮き輪、オイル、シャワーの水の反射にfR-Raytraceマップを使ったり…まぁ正直なところ地味な使い方でしたけどね。
【費用対効果:☆☆☆★★】
なにしろ出来る事が豊富なプラグイン。さらに現状ではメインの機能のGIに手を付けていない状態ですので、今回の事例で言うとコスパの悪い使い方と言わざるを得ない。お勤め時代はバンドルされてるfinalToonを使って幾多のトゥーン動画を作って来たのですが、今は完全上位互換プラグインとも言える『Pencil+』が手元に有るので、これも意味を成さない。
まぁ、持ってても減るもんじゃ無く、応用の幅も広いので今後リアルテイストの絵作りをする未来に期待しておきましょう。
■パーティクルプラグインの導入(thinkingParticle)
毎回悩まされるのがmaxのパーティクルの弱さです。particleFlow(以下PF)なるそこそこ色々な事が出来るものは付属してるのですが、如何せん重い。PFを使って一番大変だった『USAエッチ』では、キャッシュを内包するとシーンが200MB近くになってしまい、開くだけで数分かかる始末でした。なので今回、キャッシュが高性能という触れ込みで、以前から「プログラミング好きな人にはお勧めですよ」と元同僚にお勧めされていたthinkingPrticle(以下tP)の導入に踏み切りました。
興味が有るものの手を拱いていたのは…このプラグイン、結構勉強が必要になるプラグインなんですよね。昔体験版入れてチョット触っただけだとよくわからなかったし…概念が独特なのです。実際PFに慣れていた自分には習得に少々手こずりましたが、最終的には非常に柔軟な機能と、評判通り軽くて使い勝手の良いキャッシュ機能に助けられました。
PFのキャッシュも最新のmaxでは外部出力出来るので若干改善はされてますが、tPの方がまだまだアドバンテージがあると思います。まずタイムスライダーを動かしたときのレスポンスの時点で、読込み速度に圧倒的に差が有ります。
そして、一番気に入ってる点は、キャッシュ外のフレームにタイムスライダーを移動したときの挙動ですね。PFではその時点で計算を始めてしまいます。当然パーティクル発生後半のフレームなのでクソ長い計算で待たされる→ESCを押さざるを得ない。対してtPはキャッシュ外フレームではパーティクルは一切表示されない。こういった割り切りが、地味にストレスフリーな作業に繋がってきます。まぁ、PFのキャッシュ側にも指定したフレームだけ更新出来るという、tPでは出来ない利点が有りますけどね。
ひとまず精液を発射し、着弾してから体の表面をちょっと流れてから止まる…みたいな動きがすんなり実現出来たのは良かったです。まだまだ修行中なので、これからもっと良くなるハズ…ハズ。しかしまぁ…tPを精液に使ってるのは俺だけだろうな。
【費用対効果:☆☆☆☆★】
導入費は決して安くないし、当初は「最低限PFで実現していた動きを、現実的な期間の中で再現出来るかなぁ…」という不安も有りました。実際扱いが簡単な部類のプラグインではないと思いますが、慣れてしまったら最早PFを触る理由は無いなぁ…というのが正直なところ。
そういえば炎属性最強のプラグイン『FumeFX』もバンドルされていたので、今後何かに生かしたいですね。そうだな、パイロンを竿役にしてフェリシアをにゃんにゃん言わせる動画とか…。
■メタボール系プラグインを変更(Frost)
液体を3DCGで表現する際『流れる』『飛び散る』『付着する』『垂れ落ちる』など、動きを構築するのはパーティクルプラグインの仕事ですが、それらを液体の形に実体化するのはメタボール系のプラグインの仕事です。ここでは後者に関して書きます。
今まで粘液系の表現に使ってたのがpWrapperというプラグイン。コレはなかなか良い粘液を表現出来るメタボールプラグインで、『CatsAttacks』の頃からお世話になっておりました。
コレ開発してるのが一人の外人さんなのですが、最近やる気が無くなってきたのか、バグ対応やmaxの最新版への対応をしてくれない。個人的に海外のマイナープラグインを漁るのは好きなんだけど、作者のさじ加減で音信不通になることも有るので割とリスキーです。mayaのMELなんかと違い、maxのプラグインは2~3バージョンに1回は仕様が変わるので、ソース持ってる人がリビルドしないと新バージョンで使用不能に陥ってしまうのです。
そんなこんなで、今回はどうしても別のメタボール系プラグインを探すことになり、以前の会社の先輩にお勧めされていたThinkboxのFrostを導入しました。なかなか良いお値段なのですが、流石に最近max用プラグインでブイブイ言わせてるThinkboxさん製品ですから性能・安定性共にお墨付き。maxのメタボール系プラグインで目下これ以上の選択は無いでしょうね。でもこれで精液作ってるのはやっぱ俺だけだろうな…。
【費用対効果:☆☆☆★★】
ポリゴンメッシュの頂点をメタボール化したり、ParticleFlowと連携させることも出来るので、これ単体導入でも色々やれます。とはいえ、やはりthinkingParticleやRealFlow、ジオメトリキャッシュ系プラグインと併用することで真価を発揮するプラグインだと思います。
非常に信頼性の高いプラグインですが、pWrapperが値段5分の1ので独自のキャッシュ機能まで付いてる事を考えると、コスパという観点では☆3かな。
■ジオメトリキャッシュを試す(superMesher)
maxには標準でポイントキャッシュという機能が有ります。これはトポロジが一定のポリゴンメッシュに対し、頂点アニメーションを読み書きする機能ですね。便利なのですが、コレをさらに拡張した機能『ジオメトリキャッシュ』という奴が最近熱いです。
ジオメトリキャッシュは指定したオブジェクトの形状をフレーム毎にキャッシュしてしまおうというものです。ポイントキャッシュと違い、頂点数が変わってしまってもOK。例えばパーティクルで作った雨の様に『絶え間なく発生しては消える』ものもキャッシュ出来ます。
『オブジェクト形状×フレーム数』という膨大なデータが書き出されるのでドライブの容量を馬鹿食いするし、何度もキャッシュ更新するとドライブの寿命を著しく縮める事になります。しかし、色々な使い方が出来るので十分なメリットがあります。
『あままみ3』では、例えば精液をぶっかけるコリジョンオブジェクト(マミさんの体や髪)をジオメトリキャッシュ化しました。これはthinkingParticleの計算効率アップ目的です。スキンオブジェクトをそのままコリジョンにすると計算が重いんですが、一端ジオメトリキャッシュにしてやると計算速度がかなり改善されます。なので効率良くブッカケの勢いや粘度などの試行錯誤が出来ました。髪や体などの別々のオブジェクトを1にまとめてキャッシュ出来るというのも、thinkingParticle側でのコリジョン指定が楽なので良かったです。
あとは、Frostで作った精液自体をキャッシュしたシーンも有りました。これはレンダリング速度アップ&エラー対策ですね。3DCGでは作業画面では大丈夫なのにレンダリングすると変になる…みたいな事が珍しくないのですが、thinkingParticle+Frostでもこれが多少見受けられたので、まるっとジオメトリキャッシュ化して対処しました。
3dsmaxには現状でジオメトリキャッシュ機能が標準装備されていないので、プラグインで実現することになります。主な選択肢としてデジフロさんのフリープラグインalembicや、有料プラグインのsuperMesher、thinkBox xmeshなんかあります。今回はsuperMesherを使いました。フレーム間サブサンプリングなんかもやってくれるのでなかなか便利。ただmax2014への対応が遅れてるので2013版を無理矢理ねじ込んで使いました。次はxmeshを導入して「精液にコレ使ってるのは世界でも俺だけ」って言いたい気もします。
【費用対効果:☆☆☆☆☆】
今回導入したSuperMesherに関して言えば非常に機能が豊富で、ステップアップ先とも言えるxMeshが4倍以上の値段と考えるとコスパも抜群と言えます。
開発コンセプトや用途が違うalembicとは単純比較が出来ませんが、モーションブラーやthinkingParticleのエミッターやコリジョンとして使う場合はサブフレームの出力が不可欠なので、今回はやはりSuperMesherが最良の選択だったかなと。
ただ、現時点でもリリースから暫く立つmax2014への対応が為されていないので、今後のアップデートには一抹の不安を拭えないというのも事実。最悪のケースになった場合、Frostの時みたいにxMeshの導入が必須になるでしょうね。ワクワクしちゃいますね。
■QuadroFX K5000
3DCGを志した学生時代の頃は、最先端のSGIマシンは高嶺の花どころかスーパーカーやマンション1室分程の値段だったので、完全に憧れるだけ無駄な存在でした。しかしWildCatやOxygen等のWindwosマシン用のOpenGLアクセラレータボードは数十万位で、まだ『見られる夢』の範疇でした。学生には手が届かない…ってのは同じですけどね。当時の手持ちマシン…PentiumII400MHzマシンでは数千ポリゴンのシーンですら視点回転モタついてましたからね…「WildCatが有ればこんなのグリグリ動かせるんだろうな~」と甘い妄想を繰り返したものです。
懐かしい話はさておき…。同人活動開始直後に組んだマシンに載せたグラフィックボードはGeForceGTX460でした。当時のゲーム用のミドルレンジの奴ですね。かたやCPUの方はCore i7 980X Extreme Editionというバリバリ最強の奴を選びました。これは当時はネットワークレンダリングに使えるサブマシンが非力な1台のみだったので、『CPUを最新の6コアのにして、作業しながらバックグラウンドでレンダリングさせるぜ!』という魂胆でした。
さて、お金をケチって選んだGTX460ですが、使ってみたら全く不足を感じませんでした。3dsmaxは以前からDirect3Dでのビューポート表示が可能で『ゲーム用のグラボでもCGが出来る!』という利点が有るんですが、別にOpenGLでもパフォーマンス的に特に問題無し。というか、3dsmaxでDirect3D表示使うと、頂点弄って落ちる、UVドラッグして落ちる…みたいな事がたま~に有るので、あまりお勧め出来ません。
と言うわけで2年ほどGTX460で頑張っていたのですが、昨年末…若き日の夢を実現しようとハイエンドOpenGLカード『QuadroFX K5000』を導入しました。
QuadroはGeforceと違って代替わりが2~3年周期なんですが、この時期は丁度久々のフルモデルチェンジのタイミングでした。聞けば昨今のmaxのシミュレータ系プラグインやAEのエフェクトはCUDAで高速化するらしいし、単純な作業時の描画速度アップ以外にも恩恵有りそうだな…と。
あと、昨年分からやっとこ青色申告を始めたのですが、青色にすると減価償却が必要となる消耗品の値段が10万未満→30万未満に緩和されるんで「なら税金対策がてら買ってみるのも有りかな…」とも。
で、導入してみたのですが…ぶっちゃけmaxの実作業中はあまり恩恵感じ無いですね。今までもビューポートが重くならない様に工夫してシーン構築していたから…というのも有りますけど。↓こういうGPU使用率メーターとか表示してワクワクしながら眺めていても、普段の作業だとGPU使用率が10%超える作業が無いです。
AEのエフェクトでもCUDAで支援・加速されるものは結構限られてますし、コーデックもMPEG2は劇的に速くなるのかもしれないけどFLVは書き出しは早くならないし。流体のGlu3DGPUも試したけど、安定性がアレ過ぎてそもそも使いものにならんかったし。RealFlowなら流石に効果有るのかな?…うぅむ。
不意にポリゴンの分割数上げて作業するときとかフレームレート落ちないので、普段使いでオーバースペックでもやはり転ばぬ先の杖としての恩恵・安定感・信頼感は大きいです。しかし、20万円あったらレンダラーも2台組めるので費用対効果考えると…難しいですね。あくまでseismic的なワークフローの中での判断です。参考までに。
【費用対効果:☆☆★★★】
Quadro云々と言うより、GeforceGTX460が余りにもコスパが良かったと考えるべき。あと、思えば作業マシンのマザーボードがPCI-Express3.0に対応していないってのも有って、まだこのグラボの真の力はまだ発揮されてないんですよね。HaswellのXeonやcorei7EEが出そろったら新作業マシンを組んで真価を発揮させたい…。でも今現在の費用対効果は厳しく見て☆2。
———————
後半はちょっと散財日記みたいになってますけど。主な機材投資がペイントソフトと液タブくらいな2DCGと比べると、3DCGはお金をかければかけるほど表現手段の拡大・作業の効率化が出来てしまう恐ろしい世界。まぁ、無いなら無いなりのやり方や妥協案も有るんですけど…個人レベルでやるならバランスが重要だと思います。
そもそも自分は『CG馬鹿+ハードウェア&PC自作大好きっ子』なので、こういったソフトウェア・ハードウェアに投資する事自体が趣味や娯楽の一環とも言えますし、もし制作環境に不満が無くても「うは、これ使ってみたい!」って感じで買ってただろうな…と思われます。CGやってると昔から憧れのプラグインや機材って有るしね。
今回上に書いてないもの…バックアップ機器とか、PC冷却用に導入したエアコンとか…本当はまだまだ色々有りまして、「さすがに機材費回収出来ねぇだろうなぁ…」と思ってましたが…お陰様でなんとかなりそうです。いやはや、ありがとうございます。暫くは今の武装で戦っていけると思います。
自作ツールやセットアップのテクに関しては、大きい会社のR&D部門製内部ツールなんかと比較すると、全くのオママゴトだと思います。ただ、自分の制作スタイルに合わせた利便性の追求や、単騎での制作ならではの小回りの良さを生かす試みというのも有るんで、今後もその辺を追求したいです。
なんと言いますか…リリースしてきた作品だけでなく、ツールやワークフローの追求、ブログの記事執筆、全てが自分にとっての『創作活動』であり、楽しい一時です。それらが良い感じに噛み合い『良い作品』をリリース出来るのが理想ですね。今回の開発期間で得た様々なノウハウは、次回作の品質アップ、制作スピードアップに大きく寄与するものと思います。自分でもまだまだ作りたいものが山ほどあるので、それを1つ1つ形にしていこうと思います。
それではまた~(´-`)ノ
ご丁寧な返信、ありがとうございます。とても参考になります!
> 3Dを志す方が検索でうちのブログにたどり着いてしまう事もあるんですね。
検索ワードは「粘液」「メタボール」です(笑
3Dなエロゲーも増えてきましたが、どのゲームも精液の表現には苦労していますし、今現在最新技術で表現をするとしたら、どうなるんだろう?
メタボール以外に流体、特に粘度のある流体の表現方法出て来たりしたんだろうか?
とふと技術的な所が気になって検索してみたのです。
> さて、「Blenderがナシ」…というのは?
Blenderを使い始めてから、
「そういえば、Mayaとかの有料ツールの評判ってどうなんだろ?」
と思って色々調べた所、ネット上では
「仕事で使うなら最終的にはAutodesk製品に頼る事になる、Blenderも進化してるけどそれで全部要求を満足出来るかと言えばそうでもない」
みたいな記事をどこかで見たのです。
個人的にも、3Dではないですが、2Dでお金がないからGIMP、でも結局細かな部分で不満が出てAdobeのサブスクリプションを契約、という事があって、最終的には無料ツールは有料ツールには勝てないのかな、という思いがありまして……。
> Autodesk御三家に近い仕様になってて、出来る事も多いので評判が良いとは聞きます。
上記に反して「今はBlenderでOK」という記事もよく見かけます、確かに。ひとまずは、Blenderで頑張ってみようかと思います。
ただ、Unityと組み合わせると、細かな所で異常が出たりするんですよね……。
> ただ、自分はそれこそ15年来触ってないので良いツールなのか、3dsmaxと比べてどうなのか…さっぱり解りません
そうですか……そりゃそうですよね。すいません、変な事を聞いてしまって。
自分に置き換えてよくよく考えてみたら、僕はプログラミングはVisual Studioでしていますが、全く使っていないEclipseとかの他ツールについて「どう?」って聞かれても確かに答えにくいです(笑
> モデリングしかやらないならMetasequoiaでいいよねって僕でもなります。
私もMetasequoiaも少し考えたんですけども、もし深くまで手を出す事になったら機能が不足しそうだなぁ、と思ってBlenderになりました。
仰られる通り、学習コストがものすごいと思いますので、Metasequoiaを覚えたあとで、いざ
「やっぱりもっと深みに手を出したい!」
ってなった時、追加で学習コストがかかる事を考えると、どうも……。確か、Metasequoiaってアニメーション絡みの機能はあるにはあるけど高度ではない、ととある資料にあったので。
> 自分が作ってる作品のようなものは別に3dsmaxじゃなくても(それこそBlenderでも)作れるはずです。
Blenderでもあままみみたいな高度なのもいけますか! うーん、やる気わいてきますね。
> 頭とPCをUSB接続して脳内で想像しただけでモーションが付けられるとか、そういうのが出た時でしょうね(笑。
脳内接続は僕も憧れますけど(笑
それでもモーションはもう手間がすさまじいので、最近モーションキャプチャのためにKinect買っちゃいました。
https://www.youtube.com/watch?v=tLQy8wBRcd4
仕事のスケジュール上まだ試してないですが、これでモーションの手間が省けたら嬉しいですねぇ。今出てる最新のものは、精度も上がってるようですし。
もしモーションキャプチャでエロゲー作ろうとしたら、製作風景がかなり悲しい絵面になりそうですけど……(笑
長文の返信すいません。
今は浮気せずにBlender頑張って覚えてみます!
>長文の返信すいません。
いえいえとんでもないです。3D関連のアドバイスって、相手の方がどれ程の知識や経験を積んでるか解らないと適切にするのが難しいんですよね。なるほどそういう方でしたか。
まぁ、統合型3DCGソフト(モデリング・リギング・スキニング・モーション・レンダリングが全部出来る)てのは最早20年前くらいにSoftimageあたりでフォーマットが確立された感があるので、ある意味1つ習熟すれば他のに移行するのはそれほど難しくはないものだと思います。ただ、ソフトボディの物理シミュレーションが強いMaya~とかPencil+があるmax~とかこの機能を使いたいからコレを使うみたいなのは、作品の方向性が定まると出てくると思います。unityへのエクスポートなんかもそうでしょね。プログラミングに覚えが有る方なら出力プラグインを作ってしまうとかね(笑。
なるほど……。
やはりそれぞれの特徴はあるという事ですね。
Autodesk製品がよくわからなかったのは私の勉強不足という面も強い様に思いますし、Blender→不足を感じたらAutodeskみたいな流れが良さそうですね。
方向性が定まった気がします。ありがとうございます!
> プログラミングに覚えが有る方なら出力プラグインを作ってしまうとかね(笑。
昔オープンソースのExcelファイル出力ライブラリのバグフィクスしましたが、もう正直そういった特定形式の出力プログラムは出来ればもう組みたくないです(笑
まあ、混沌としている事で名高い旧Officeのバイナリだったからかも知れませんが。修正作業だけなのに、仕様書読み込むだけですさまじく時間を潰されました……。
プログラマとしては情けない限りではあるんですけどね。