2014年11月26日水曜日

ユニティちゃんディレクター杯開催

しばらくUnityから離れていたらいつの間にか、

ユニティちゃんディレクター杯

が、開催中らしい。

あのCandy Rock Starステージがまるっとプロジェクトファイル公開されている。
これは良い、うんうん。

しかもUnity PRO版が開催期間中無料利用可。


ちょっといじってみたので以下少し雑感など。


追記:
ディレクター杯に投稿した作品はこちらから見れます。
【画質向上版 】ユニティちゃん3人で踊ってもらった

混雑で画質が落ちる場合は、こちらの低解像度/軽量版もあります。
【ユニティちゃんディレクター杯 】ユニティちゃん3人で踊ってもらった


■Unity PRO版

開催期間中のみではあるがメアドさえあれば「ユニティちゃんディレクター杯」の公式ページでライセンスキーがもらえる。
面倒なガチ登録はないのでほんとに即使えるようになります。

Candy Rock StarプロジェクトファイルはPRO版の機能を使いまくってるようで、PRO版で動かさないと効果半減なので注意(`・ω・´)b

■PRO版の威力

やっぱりPRO版すごいですね。無料版とは違う感。
(エンジニア的にはプロファイル機能とかも興味ですが)

Candy Rock Starでは床面鏡面反射、被写界深度表現、プロジェクション投影(?)、パーティクルのキラキラ(?)などサクサク動いてます。これは萌える(`・ω・´)☆
※ぱっと見紙ふぶきパーティクル源2系統 MAX8000+Unityちゃんの手から放出分で結構な量がでてると思いますがサクサクですね。

■Candy Rock Star

説明が少ないのでちょっとわかりにくい感はあります。

Candy Rock StarのGitHubのWikiなどに少し説明有り。
(最初リップシンクがうまく動かせず。こちらの説明でなんとかなった)

Unityちゃんのボーン構造は従来と同じものなので、顔や口のモーフアニメのObjectはBlenderで死ぬほど弄ってたのですぐわかる感じ。

特徴的なのはシーン上のUnityちゃん他機材モデルも動的生成している点。


Unityちゃんを複数出す

これは簡単にできます。
シーンMainを開いて、Hierarchy の Stage Director を選択。
Inspector の Prefabs On Timeline で動的生成を指定する作りになっているようなので、ここの Size を2→3に増やす。
増えた Element に Candy Rock Star を指定。
これだけでUnityちゃんが1体増やせます。


リップシンク

Unityちゃんを増やす要領で Element に LipSyncController を追加すればできそうですが、これだけではうまくいきません。

Unityちゃんモデルのクチのオブジェクト名 MTH_DEF をFind検索する作りなので同名Objectが存在することになってしまいうまく動作しない。

この MTH_DEF オブジェクトを特定しているスクリプト LipSyncController を修正対応すればできました。

今回はAsset上にUnityちゃんモデルを数種コピーし異なるモデル名としました。
スクリプト LipSyncController 内にモデル名を指定するPublic変数を追加、その子オブジェクト階層から MTH_DEF を見つけることでリップシンク先を特定。

ただこの方法だとUnityちゃんを10体出すとAsset上にも10体必要になるので、そういう場合は動的生成されている MTH_DEF をすべて見つけてスクリプトLipSyncControllerで制御するようにすればできると思います。
※もっと簡単な方法もありそうな気はしますが・・・。

とりあえずな技術的な雑感メモ(?)

アバターの身振りアニメーションとリップシンクは完全に別制御。
基本は曲の進行なので、リップシンクも時間軸を基準に動作。
身振りアニメもFBXに曲長さ分が収まってるようなので、外部ツールなノンリニア編集的な設計思想と思えばピンとくる・・・のか。
※そう考えていくとBlenderなどのノンリニア編集機能で時間基準で全て作りこんで最終的にUnityに落とす方が効率的に思えてきてUnity上でメインに作業するモチベが下がるので外部ツール編集云々はあまり考えないことにします(笑)

例えばAndroid等の低性能機で高負荷動作させると曲再生はスムーズに進みつつも、モデルのフレーム再生がついてこれない状況が場合によっては発生します(Candy Rock Starでも実際Android機では起こせます)。

ようはMP3、FBXアニメ、リップシンクがヨーイドンで再生開始し、きちんと再生していけば同期しているようにみえる。
しかし再生中に相互に同期する手段が難しい(ほぼムリ?)ので、何かしらの要因で再生が滞るとそこからズレが累積していく。ここらは一応覚えておくと何かの際に悩まず済むかもしれない(諦め/割り切りに即辿り着けるのでw。

Candy Rock StarをAndroidで動かす

とりあえず無料版Unityで動かしてみました。ほんと「動いただけ」ですけど。

元のプロジェクトの状態のままでは、
  • Android機でアプリ起動に分単位を要した。
    →アプリのipkファイルも60MB超えてますので・・・;
  • カクカクです
    →秒間nコマというより、1コマに何秒の世界がキミを待っているm9(・∀・)

ほぼ絶望的な状況ともいえますが、実は結構アッサリなんとかなります(動かすだけなら

Visualizerがとにかく重い原因です(人力的プロファイリングによる特定)。
なので Stage Director の Misc Prefabs あたりでVisualizer を切ったりなどで、とにかくVisualizerを切りまくります。それだけで急に激軽くなります。

無料版UnityだとPRO版の重い機能も自動的にOmitされるのでそこらは労せずカットできるという、超合理的な手抜きチューンも併用(笑。
AndroidのOpenGL2.0ESでは動かない効果が多いらしいのでどうせいらないと思われます。

これだけでME-173X程度の性能なら普通に30fps前後はでますのでAndroid4.x世代機ならおおむね動作可能域かと思われます。


あとはアプリの起動時間はいかんともしがたいので、テクスのサイズを切り詰めます。
  • テクスチャを全部切り詰める
    AndroidにターゲットをSwitchして個々のテクスチャ毎に Texture Typeを Advanced にしてサイズとフォーマットを軽量化。
    Unityちゃんモデルのテクスは原画2048、PC用で1024ぽいですが、これを512か256まで落とします。フォーマットもDXTとかETC2など適当に低サイズになるように変更。
    ※この時RGBとRGBAがあるので注意。
    他のステージのテクスチャもその要領で削り込む。

  • 切り詰めるコツ
    昨今のAndroid機はHD解像度が多いですが画面の物理サイズは小さいので人間が視認しにくそうなところはガツンと削ります。大きいものから先に削ると効果的。
    例えばステージ後ろ上部のタイトル部分などはもう256以下でもいいくらいに。Lightテクスとか256ですがこんなのはもう64とか32以下でもイイデス。Unityちゃんの髪とかもかなり落としてもごまかせます。

これでだいたい ipkサイズが50MBくらいにはまずは減らせます。
アプリ起動時間が15秒以下くらいになった感じ。テクスが小さくなった分読込&圧縮展開負荷が減った効果が大きいのかも?。

ちなみに再生fps的にはテクスのサイズを小さくしても効果薄です。この点はサイズよりもドローコール数の削減の方が影響が大きいかもしれない。

パーティクルの同時発生数も削っていくと若干軽くなります。

■さてと・・・

ちょっとだけモチベが上がってきたのでディレクター杯用に何か作ってみようかな・・・などとラブライブを流し見しつつ思ってみたり、みなかったり。
※アイマスは見はじめるといつのまにか作業が止まっていたので(笑

うちみたいなのが作るしょぼいのでも気軽に応募できそうな雰囲気が良い感じ。
(MMDとかアイマス方面は怖くてムリデス。ガクブル)


某記事でしょこたんのituneリストにゴレンジャーがあったのを見て「5人か」と思い立つ(謎
テクスチャ調整二人目で疲れたのでとりあえず3人。

モデル改造は日数的にきついし。「ディレクター杯」なので、ディレクションを主軸に(逃

このCandy Rock Starのモデルでダンスは良く動いてます。

ほんと作者の方すごいです、モチベ上がりますね。

ダンスもバンダイナムコ作らしいので、これまたよくできてます。


早くいろいろなディレクター杯応募作を見てみたいですね~。
(というか、自分も早く何か作れよ・・・なのですが;

0 件のコメント:

コメントを投稿