2.2K Views
May 30, 18
スライド概要
講演者:松本 浩幸(株式会社フライトユニット)
:スターン・ジョナサン(株式会社フライトユニット)
こんな人におすすめ
・3Dキャラクターの「揺れもの」に苦労しているアーティスト、これからシステムを作ろうとしているプログラマー
・スマホゲームやVTuberでとにかく色々と揺らしたい人
・SpringBoneの機能では物足りないけど、ガチな物理ダイナミクスは重い、セットアップが辛いと感じる人
受講者が得られる知見
・「UnitychanSpringBone」の機能紹介
・スカートなどの「揺れもの」の簡単なセットアップ方法の習得
・「UnitychanSpringBone」の利用事例紹介(予定)
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
2018/5/7-9 スマホ・VTuber向け揺れモノシステムを 「ユニティちゃんライセンス」で無料公開 松本浩幸(安堂ひろゆき) 株式会社フライトユニット / 代表・マネージャー
松本浩幸(安堂ひろゆき) 株式会社フライトユニット / 代表・マネージャー 3Dキャラクター制作専門の会社フライトユニット代表 ゴッドイーターシリーズ、テイルズシリーズ アトリエシリーズ、アルトネリコシリーズ オトカドール、シャイニングフォースイクサ・レゾナンス他多 数 3Dキャラクター制作には、クライアントとの折衝と 社内での方向付けやマネジメントとして従事しています 「ユニティちゃんを創った男たち」にも登場してます @drunkenAndo [email protected]
UnityChanSpringBone 2.0
“ 3Dキャラの 「揺れもの」で苦労していませんか? ”
「揺れもの」には悩まされ続けて来た フライトユニットは色んなゲームで、多くのメーカーと共に3Dキャ ラクター作りをして来ました。 プロジェクト毎にエンジンは違い、汎用エンジンと呼ばれるものは PhyreEngineが最初で、当時は揺れものシステムは無し。他は各 メーカー、各プロジェクト毎の独自エンジンなので、揺れものシステ ムもまちまちでした。
「揺れもの」には悩まされ続けて来た 「揺れものシステム」が無い場合 DCCツール上で揺らして焼き込んだが、 とにかく膨大な工数が掛かった 「揺れものシステム」が有る場合 各プロジェクト毎に何もかも違うので ノウハウを積み重ねることが難しかった
「Verlet積分」(ベルレ積分)との出会い 10年程前、ジョナサンがUE3で並んだサボテンをひたすら車のよ うなもので轢き続けながら、ラグドールのプログラムを書いていたの を見て、 「物理行けるんじゃね?」 と思ったのが切っ掛けで、揺れモノについて研究し始めました。
「Verlet積分」(ベルレ積分)との出会い 西川善司氏のロストプラネットのベルレ積分による揺れものの記事を見て、 「元の形に戻ろうとしつつ揺らせる」 「これだ!」とジョナサンに研究し始めて貰いました。 フライトユニットの作る3Dキャラクターの衣装はとにかく複雑な物が多くて、揺 れものを手付けする工数がモーションを制作する工数より多い上に、ガチな物理 では形を保てないし、当時は処理速度が厳しかった。
苦労のポイント プログラマー主導で組んで行ったが、揺れモノのプログラムやパラメータだけでなく、骨 の入れ方や本数、ポリゴンメッシュの割り方、ウェイト等も大きく影響するので、各セクショ ン毎に理解度を高めながら「いい感じに揺れる」を実現して行くのが難しかった。 日常シーンでは綺麗にフワフワ動いてほしいが、ダンスやバトルでは激しく動くので、暴 れないように抑えたい等、「何が正しいかの判断」も難しい。 各セクションの要求に応じて、欲しい機能はどんどん増えていくが、増やし過ぎると使いこ なすのが難しくなって行く。
Unityでの本格的な開発に • スマホ向け3Dキャラクターの基礎開発を幾つか受託して、揺れものシステムが課題と なった • クロスや、ガチの物理系は重いし、パラメータが膨大で大変 • アセットストアに幾つか使えそうなものはあるが「標準化」されていないので、そのまま採 用するには不安があった • 標準化されているユニティちゃんのSpringBoneを拡張する形で開発が始まった
4つ以上のタイトルに採用 • 開発規模が大きくなってくると「習得している」人も多く必要になる • もっと良い方法があるのでは?という悩みは常につきまとう • 結局、自分達自身がまた亜流を作って良いのか?という矛盾は抱えていた
“ そして ” 「 UnityChanSpringBone2 .0」へ!
“ 「標準化」 して皆で一緒に苦労したい! ”
「標準化」して、皆で一緒に苦労したい! 様々な苦労を抱えた結果、自分達だけで悩むには限界があると思い、開発中の揺れもの システムをUnityJapanに相談して見て頂き、「ユニティちゃんライセンス」の一部としてリ リースして頂く運びとなりました。 「ユニティちゃんライセンス」としてリリースすれば、沢山の人に使ってもらって要望を頂 いたり、こうすればもっと良くなるのでは?といった知見を共有出来るのではないかと考えて います。
ジョナサン・スターン 株式会社フライトユニット / プログラマー 主にキャラクター周りのツールやシェーダーの 開発を担当。 [email protected]
初代UnityちゃんのSpringBone Candy Rock Starで披露された揺れものシステム 長所 • 動きが綺麗 • 使い方がシンプル 惜しいところ • 当たり判定は球体しかない • 骨の動ける範囲を制限できない • 地面の判定がない • モデルを更新する際の再セットアップが大変
今回の目標 • できるだけ初代SpringBoneの綺麗な動きとシンプルさを維持 • 足りなかった要素を追加 • せめてモバイルだけでも、 コンシューマーレベルで使えるシステムを実現 ・ 処理負荷を抑える ・ 極力暴れないようにする (できたら嬉しいな…)
新要素 • 当たり判定の種類を追加 ・カプセルと板を追加 ・地面(足元に板) • 角度制限 (骨の動ける範囲)
セットアップの自動化 • 前は手で骨を階層順に マネージャーに登録する必要あった 今は自動で探して登録するように • データ読み込みと保存 テキストファイルを書き出し、後で読み込む
専用UI • パラメータを見やすくしました • Scene、Inspectorで骨の動ける範囲を表示 • 便利機能のツールウィンドウ
当たり判定の注意点 • 想定よりコライダー(当たり判定)を 大きめに作ることを推奨 • 板は少し癖があります ・ 板の端に当たると挙動がおかしく なることがあります ・ もともと長い髪の毛が後ろから体を 貫通しないことを主に想定
角度制限 • 骨の動ける範囲を指定 • スカート等の場合、 コリジョンだけでは避けて垂れるだけです • 脚にコンストレインして動ける範囲を狭まくすると より思うように避けてくれます
使用例:髪の毛 • ロングヘアは頭じゃなくて首の骨に コンストレインするといい 場合があります ・ 髪が長くなればなるほど 頭の動きによって揺れが 目立ちます ・ 頭ではなく首に コンストレインすることで緩和
ケープや肩にかかっているもの • スカート同様に、肩ではなく上腕に 追従するようにコンストレインすると いい結果が出ることがあります • 揺れものセットアップと 元の骨入れとのバランスが必要 • 形状や長さによりもっと検証が必要になります
どれほど重い? • 6体のキャラ、 1体につきSpringBone100個 iPad mini 2でも30FPSは夢じゃない • 全体の骨数次第 (多いとそもそもスキニングが重い) もちろんシェーダー、 他のシステムとの兼ね合い • 今後の課題: マルチスレッド化を検討?
うまくいかなかったこと • いくらシンプルにしたつもりでも、アーティストへの説明が難しい ・ 特に脚などのコンストレイント周りは、SpringBoneそのものではなく SpringBoneの「基本姿勢」となるnullなので説明しにくい • 隣の骨の間にコリジョンつけたかったけど 実験ではひどく暴れていました ・ いつか再挑戦したい • 同じく布が横にあまり伸びないようにしたかったけど これも暴れていました ・ プログラマーとしての未熟さを呪うばかり…
最後に • 是非触ってみて 足りないところがあれば 是非拡張したりソースを改造したりしてみていただきたいです
Thank you! ご静聴ありがとうございました!