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にしたい
- トゥーンのラインを除去してレンダリングしたい
- アンチエイリアスのレベル(無し、プレビュー、最終出力)の指定
- 開始終了フレームの指定
- 解像度の指定
- カメラの指定
- シーンの状態(マミさんだけとか、水着だけとか)
- エフェクトの有無(トゥーンラインの有無など)
- ジョブのプライオリティ(レンダリングする順番)
- maxのバージョン指定
- 出力先とファイル名の指定
- 出力画像フォーマットの指定
■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ファイルとその中の特定のコンポジットを指定可能
- 出力パスの指定
- 出力品質の設定
- 上書き・差分書き込みの選択が可能
- タスクの分割数の指定
■高速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
- 透過をマスク・透明度のどちらにするかの選択
- レイヤーの合成方法(乗算・オーバーレイなど)
ご丁寧な返信、ありがとうございます。とても参考になります!
> 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のバイナリだったからかも知れませんが。修正作業だけなのに、仕様書読み込むだけですさまじく時間を潰されました……。
プログラマとしては情けない限りではあるんですけどね。