Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Making of 
ユニティちゃんステージデモ 
in ComicMarket 86 
Unity Technologies Japan合同会社! 
コミュニティエバンジェリスト! 
小林 信行" 
ゲーム未来学研究会01" 
「Oculus...
本日のテーマ 
• コミケ86で公開しました 
『ユニティちゃんステージデモ』 
制作にあたってのポストモーテムを、 
主にキャラクター制御の観点から行い 
ます! 
• デモの組み込み自体は約2日間で終了 
しましたが、その高速組込を可能にし...
本日のお品書き 
Ⅰ. C86『unity-chan!』ポストモーテム 
MotionBuilderを使った Ⅱ. モーションキャプチャデータの調整 
Ⅲ. Unity上でのセットアップ 
Ⅳ. 完成プロジェクトのひも解き方
Ⅰ. C86『unity-chan!』ポストモーテム
コミケ86『unity-chan!』風景 8/15-17
デモ制作の大まかな流れ 
ǭȣȩС˺ 
ಏ୺С˺ ȢȸǷȧȳС˺ ȢȸǷȧȳᛦૢ 
ȀǤȊȟǯǹᚨܭ 
/GECPKOኵᡂ Ȫǽȸǹ 
ǹȆȸǸǨȕǧǯȈ 
˺঺ 
ኽӳ 
ǭȣȩdzȳȈȭȸȫဇ 
dzȳȝȸȍȳȈ˺঺ 
ǹȆȸǸС˺ᲢǫȡȩȝǤ...
何故、高速組込が可能だったのか? 
• Mecanim/Humanoidの柔軟性 
⇒本番モデル(CandyRockStar)が完成する前から、ユニティちゃんVer1.2で、 
モーションキャプチャデータの調整の他、音合わせを含む必要なキャラク...
Ⅱ.MモoーtiシonョBuンilキdeャrをプ使チっャたデ ータの調整
モーションキャプチャとは? 
• アクターのモーションを直接アニ 
メーションデータとして取り込む 
システムのこと。! 
• 主な方式として、光学方式、磁気 
センサー方式、映像解析方式など 
がある。
モーションキャプチャ収録風景
モーションキャプチャ収録時のポイント 
• 収録データの冒頭で必ずアクターさんに5秒ほど 
Tスタンスをとってもらう 
• ダンスの場合、収録時の音楽スタートのフレーム 
を記録しておく 
• FPSはMotionBuilder上で最終調整がで...
7PKV[ɥƷȢȇȫƴ/QECRȇȸǿǛ්ƠᡂljƩƚ 
ƳǒŴȢȸǷȧȳȇȸǿƕ($:҄ƞǕƯƍǕƹŴ 
/GECPKO*WOCPQKFƷ೅แೞᏡƩƚư 
җЎƳǜƩǑƬᲛ 
ƜƜƔǒƸŴǯǪȪȆǣǢȃȗƷƨNJƷᛦૢ 
ȎǦȏǦƷƓᛅƴƳǔǑƬ...
キャプチャデータの調整例 
手が胸に突っ込んでいるのを調整ポーズのずれの調整し、より人間らしくする
キャプチャデータの調整例 
元のダンサーとの体格の違いによる、手足の先の方向ずれ(肘膝のフリップ)の調整 
(C86ダンスの場合にはなかった)
キャプチャデータの調整ワークフロー 
/QECRȇȸǿ 
/QECRȇȸǿƷ 
ǭȣȩǯǿȩǤǺ 
ȦȋȆǣƪnjǜ 
8GTȢȇȫ 
ȢȇȫƷ 
ǭȣȩǯǿȩǤǺ 
/QECRȇȸǿǛȦȋȆǣƪnjǜ 
Ȣȇȫƴ්ƠᡂLj 
ȪǿȸDzȃȈȑȩȡǿ ...
キャラクタライズとは? 
• 『キャラクタライズ』とは、 
MotionBuilder/Maya上で、 
HumanIK用コントロールリグを 
設定することを言います。! 
• モデルおよびモーションをそれぞ 
れキャラクタライズをすることで、...
スケルトンとリグとメッシュ 
ユニティちゃんVer1.2のスケルトン階層 
ユニティちゃんVer1.2のメッシュ階層 
キャラクタライズの結果、作成されたコントロールリグ階層 
対応 
バインド 
キャラクタライズ
Mocapデータの流し込み 
こちらに 
変更する
スケマティックで見てみると 
ユニティちゃんVer1.2のスケルトン階層 
ユニティちゃんVer1.2のメッシュ階層 
ユニティちゃんVer1.2のコントロールリグ階層 
Mocapデータのスケルトン階層 
Mocapデータのコントロールリグ階...
リターゲットパラメタの調整 
主にReachでモデルの各関節の位置をMocap 
データ側の関節の位置になるべく近づける。 
L/R Elbow Reach、L/R Hand Reach T、 
L/R Hand Reach R、Chest R...
リターゲットパラメタの調整
コントロールリグへのMocapデータのプロット 
Character Controlsメニューより 
Bake(Plot) to Control Rig実行 
⇒Sourceが、ユニティちゃんモデルのコントロールリグ側に変わる。 
この結果、M...
スケマティックで見てみると 
ユニティちゃんVer1.2のスケルトン階層 
ユニティちゃんVer1.2のメッシュ階層 
ユニティちゃんVer1.2のコントロールリグ階層 
Mocapデータのスケルトン階層 
Mocapデータのコントロールリグ階...
アニメーションレイヤーを使った調整 
アニメーションレイヤー 
タイムライン 
必ずSnap  Play on Framesにする 
現在編集中のレイヤー 
元のアニメーションのレイヤー 
修正キーを打つレイヤーは 
Additiveにしておく
アニメーションレイヤーを使った調整 
随時クリップを送りながら、腕が身体に突っ 
込んでいるような不具合部分を修正する。 
手の置き位置などの修正は、修正したい箇所 
を挟むようにまずフルボディで2つキーを打っ 
ておき、その後で修正したいコン...
アニメーションレイヤーを使った調整 
• 初期位置(Tスタンス)での手や頭の角度などの最終調整。オリジナルアニメーション 
にアニメーションレイヤーを追加し、レイヤー上でモーションを微調整する。 
• 大きめの修正はIKで、細かい修正はローテー...
ユニティちゃんスケルトンへアニメーションをベイク 
• コントロールリグでのモー 
ションの修正が終わったら、 
モデルのスケルトンへモー 
ションをベイクする • Character Controlsメ 
ニューよりBake(Plot) 
t...
Mocapデータを調整する「意味」 
• 本番に近いモデルに割り当てることで、動きを再確 
認する 
• よりキャラにあった動きやポーズに修正する 
• コントロールリグに30fpsでリプロットすることで、 
結果Mocapデータが、いわゆるヌ...
ダンスアニメーションFBXの組込用仕様 
0 1 60 61 7221 
ウォームアップダンスモーション本編(30fps) 
Tスタンス 
音楽IN 
ダイナミクスが落ち着くまでの予備時間 
このフレームは、MecanimのAnimation設...
Storyツールによるカット調整 
Storyツールのタブ 
新たにシーンに読み込んだ 
アニメーションデータを持た 
ないキャラクタライズ済みの 
ユニティちゃんモデル 
新たにシーンに読み込んだアニメーションデータを含む 
FBXファイルを...
Storyツールによるカット調整 
• MBで新規シーンを開き、Storyパネルに編集をしたいアニメーションの含まれているFBXを 
DDする • さらに割り当てるキャラクターモデルをアニメーションなしでシーンにマージし、Storyパネ 
ル上...
残る作業 = Mocapでは出来ない作業 
• ダイナミクス(揺れ物)設定 
• 手の表現(エクスプレッション) 
• 表情変化の指定 
• 楽曲とシンクロする口パク合わせ 
全部Unity上でやってしまう!
Ⅲ. Unity上でのセットアップ
ダイナミクスの設定 
• ユニティちゃんVer.1.2に付属する、 
SpringManager.cs、SpringCollider.cs、 
SpringBone.csを使う。基本設定は付属ドキュメントを 
参照。 • 今回のセッティングでは...
Mecanim:アニメーションレイヤーを使った 手のエクスプレッションの追加 
• 手のエクスプレッション(表情)は、Mocap 
で撮るのは大変なので、こちらは3dsMax上 
で手付けをしています(ntnyさん) • Tスタンスで手のエクス...
Mecanim:アニメーションイベントを使った 顔のエクスプレッションの追加 
• ユニティちゃんVer.1.2に収録されている、FaceUpdate.csに含 
まれている表情切り替え用イベントコール 
OnCallChangeFace()メ...
Mecanim:アニメーションイベントを使った 音楽再生のタイミング合わせ 
• こちらも同様にCandyRockStarモデルにアタッチされている 
MusicStarter.csのOnCallMusicPlay()メソッドをMecanimの...
楽曲とシンクロした口パク 
• シーン内にLipSyncControllerというゲームオブジェクト 
があり、それにアタッチされているLipSyncController.cs 
が担当します。 • この手の演出は、楽曲と口パクをシンクロさせる...
Advanced:IKによるLookAtシステム
Advanced:IKによるLookAtシステム 
• C86後に実装された機能です。Mecanim/Humanoidの  
Animator.SetLookAtWeight()と連動して、視線追従に基 
づく眼球ジョイントのローテーション変化...
Unityでの実装/DCCツールでの 
作業仕分けのポイント 
• Unityで実装したほうが楽なデータは、Unity上で 
やってしまう! 
• 特に使い回しが多そうなデータは、DCCツール上 
で組み込んでしまうよりは、Unity上で合成し...
Ⅳ.完成プロジェクトのひも解き方
Unityではシーン内のゲームオブジェクトに様々な コンポーネントをアタッチすることで、機能を実現します 
ひとつのCandyRockStarゲームオブジェクトに 
たくさんのコンポーネントがアタッチされている。 
これらの各コンポーネントが、...
ポイントは各コンポーネント間の参照関係を 
どうやって知るか? 
• 詳しくはこちらの資料を参照。 
http://www.slideshare.net/nyaakobayashi/how-toinspectcompletescenes1306...
クラスとコンポーネントを ガレージキットで例えてみよう! 
原型シリコンゴム型キャスト注入製品 
上が超簡単に説明した、ガレージキットの製作の流れ 
画像は、Wonder Festival オフィシャルサイト『ガレージキットとは』より 
htt...
Class / type / Instantiate / Componentの関係 
原型シリコンゴム型キャスト注入製品 
クラスインスタンス化オブジェクト 
GameObjectにアタッチすることで 
実体(インスタンス)化できるクラス 
⇒...
ポストとメモリのカンケイ?? 
?
ポストとメモリのカンケイ?? 
ポスト • ポストには目的に応じて様々なタイプがある 
• 各々のポストには、住所がひも付けられている 
• ポストを使いたい場合、まずポストを設置し、 
郵便局に住所登録をしておく必要がある 
• ポストに何か...
コンポーネント参照のための手順 
ポストの住所を指定して、郵便物等を送る/受け取る/利用する 
⇒「コンポーネントを参照する」 
コンポーネント 
(GameObjectにアタッチされて 
実体化したクラス) 
ポストの用途やサイズ等(タイプ)...
他にも、「カプセル化」「多態性」「継承」 
「オーバーライド関数」「ドットシンタックス」 
「名前空間」「スコープ」とか、 
いろいろあるけど、それはまたどこかで(^_^;) 
7PKV[Ʒ%dzȸȇǣȳǰưŴȓǮȊȸƕᡕƍǍƢƍ 
ƷƸŴž7P...
QA
Upcoming SlideShare
Loading in …5
×

Making of ユニティちゃんステージデモ in ComicMarket 86

39,442 views

Published on

2014/10/04に開催された、ゲーム未来学研究会01「Oculusを最前列で遊ぶ冴えたやり方」セミナー資料。
コミックマーケット86で公開されたユニティちゃんステージデモのメイキングについて。
ユニティちゃんステージデモのリアルタイム映像はこちらからどうぞ
http://unity-chan.com/events/c86/WebPlayer/

Published in: Engineering
  • Be the first to comment

Making of ユニティちゃんステージデモ in ComicMarket 86

  1. 1. Making of ユニティちゃんステージデモ in ComicMarket 86 Unity Technologies Japan合同会社! コミュニティエバンジェリスト! 小林 信行" ゲーム未来学研究会01" 「Oculusを最前列で遊ぶ冴えたやり方」" セミナー資料" 2014/10/04
  2. 2. 本日のテーマ • コミケ86で公開しました 『ユニティちゃんステージデモ』 制作にあたってのポストモーテムを、 主にキャラクター制御の観点から行い ます! • デモの組み込み自体は約2日間で終了 しましたが、その高速組込を可能にし たMecanimでのキャラクター制御や、 その前段階でのデータ整理のやり方等 を説明します! • プロジェクト公開と共に参加型イベン トを予定してます。今日の講演が参考 になることを祈りつつ…(*^_^*)
  3. 3. 本日のお品書き Ⅰ. C86『unity-chan!』ポストモーテム MotionBuilderを使った Ⅱ. モーションキャプチャデータの調整 Ⅲ. Unity上でのセットアップ Ⅳ. 完成プロジェクトのひも解き方
  4. 4. Ⅰ. C86『unity-chan!』ポストモーテム
  5. 5. コミケ86『unity-chan!』風景 8/15-17
  6. 6. デモ制作の大まかな流れ ǭȣȩС˺ ಏ୺С˺ ȢȸǷȧȳС˺ ȢȸǷȧȳᛦૢ ȀǤȊȟǯǹᚨܭ /GECPKOኵᡂ Ȫǽȸǹ ǹȆȸǸǨȕǧǯȈ ˺঺ ኽӳ ǭȣȩdzȳȈȭȸȫဇ dzȳȝȸȍȳȈ˺঺ ǹȆȸǸС˺ᲢǫȡȩȝǤȳȈƷᚨܭNjԃljᲣ 8/14 4:37 ~ 22:43 Ver1.0 Release 8/13 இኳᛦૢ ǹȆȸǸdzȳȈȭȸȫဇ dzȳȝȸȍȳȈ˺঺
  7. 7. 何故、高速組込が可能だったのか? • Mecanim/Humanoidの柔軟性 ⇒本番モデル(CandyRockStar)が完成する前から、ユニティちゃんVer1.2で、 モーションキャプチャデータの調整の他、音合わせを含む必要なキャラクター制御の 組込自体は終了していた! • 二人のエキスパートプログラマの手を極力止めない開発環境 ⇒gitを使った同時開発環境。開発開始前にgitリポジトリを準備、そこにリソース納品。! • リソース担当が、プログラマがどのような「手」で組み上げてくるか 理解した上での、リソースの準備 ⇒複数のDCCツールを使って時間をかけなければければクオリティアップができない部分 と、Unityで楽してクオリティアップができる部分を分けて、リソースを作成 手戻りがほぼない実装を実現できた
  8. 8. Ⅱ.MモoーtiシonョBuンilキdeャrをプ使チっャたデ ータの調整
  9. 9. モーションキャプチャとは? • アクターのモーションを直接アニ メーションデータとして取り込む システムのこと。! • 主な方式として、光学方式、磁気 センサー方式、映像解析方式など がある。
  10. 10. モーションキャプチャ収録風景
  11. 11. モーションキャプチャ収録時のポイント • 収録データの冒頭で必ずアクターさんに5秒ほど Tスタンスをとってもらう • ダンスの場合、収録時の音楽スタートのフレーム を記録しておく • FPSはMotionBuilder上で最終調整ができる。 最低30fpsあれば問題ないが、 可能なら高レートで収録しておく
  12. 12. 7PKV[ɥƷȢȇȫƴ/QECRȇȸǿǛ්ƠᡂljƩƚ ƳǒŴȢȸǷȧȳȇȸǿƕ($:҄ƞǕƯƍǕƹŴ /GECPKO*WOCPQKFƷ೅แೞᏡƩƚư җЎƳǜƩǑƬᲛ ƜƜƔǒƸŴǯǪȪȆǣǢȃȗƷƨNJƷᛦૢ ȎǦȏǦƷƓᛅƴƳǔǑƬᲛ ƋLJǓπ᧏ƞǕƳƍƓᛅƳƷưŴǍǓ૾ǑǓNj ᎋƑ૾Ტ˺ಅƷႸႎᲣƴදႸƠƯƶƬᲛ
  13. 13. キャプチャデータの調整例 手が胸に突っ込んでいるのを調整ポーズのずれの調整し、より人間らしくする
  14. 14. キャプチャデータの調整例 元のダンサーとの体格の違いによる、手足の先の方向ずれ(肘膝のフリップ)の調整 (C86ダンスの場合にはなかった)
  15. 15. キャプチャデータの調整ワークフロー /QECRȇȸǿ /QECRȇȸǿƷ ǭȣȩǯǿȩǤǺ ȦȋȆǣƪnjǜ 8GTȢȇȫ ȢȇȫƷ ǭȣȩǯǿȩǤǺ /QECRȇȸǿǛȦȋȆǣƪnjǜ Ȣȇȫƴ්ƠᡂLj ȪǿȸDzȃȈȑȩȡǿ Ტ4GCEJ2WNNᲣƷᛦૢ ȦȋȆǣƪnjǜdzȳȈȭȸȫȪǰǁ /QECRȇȸǿǛȗȭȃȈ ǢȋȡȸǷȧȳȬǤȤȸǛ ̅Ƭƨᛦૢ ȦȋȆǣƪnjǜǹDZȫȈȳǁ ǢȋȡȸǷȧȳǛșǤǯ 5VQT[ȄȸȫƴǑǔǫȃȈᛦૢ ܦ঺
  16. 16. キャラクタライズとは? • 『キャラクタライズ』とは、 MotionBuilder/Maya上で、 HumanIK用コントロールリグを 設定することを言います。! • モデルおよびモーションをそれぞ れキャラクタライズをすることで、 任意のモーションをモデルに流し 込めるようになります。! • Mecanim/HumanoidでのFBXデー タのRig/Animation設定と同じ考 え方です。 モーションをキャラクタライズすることで、キャラクター名 からモーションにアクセスできるようになります
  17. 17. スケルトンとリグとメッシュ ユニティちゃんVer1.2のスケルトン階層 ユニティちゃんVer1.2のメッシュ階層 キャラクタライズの結果、作成されたコントロールリグ階層 対応 バインド キャラクタライズ
  18. 18. Mocapデータの流し込み こちらに 変更する
  19. 19. スケマティックで見てみると ユニティちゃんVer1.2のスケルトン階層 ユニティちゃんVer1.2のメッシュ階層 ユニティちゃんVer1.2のコントロールリグ階層 Mocapデータのスケルトン階層 Mocapデータのコントロールリグ階層 キャラクタライズ キャラクタライズ ソース変更 Mocapアニメーションデータ バインド
  20. 20. リターゲットパラメタの調整 主にReachでモデルの各関節の位置をMocap データ側の関節の位置になるべく近づける。 L/R Elbow Reach、L/R Hand Reach T、 L/R Hand Reach R、Chest Reach Tなど。 必要に応じてPullもReach同様に調整する。
  21. 21. リターゲットパラメタの調整
  22. 22. コントロールリグへのMocapデータのプロット Character Controlsメニューより Bake(Plot) to Control Rig実行 ⇒Sourceが、ユニティちゃんモデルのコントロールリグ側に変わる。 この結果、Mocapデータのアニメー ションが、モデルのコントローラ側の 値に移し変えられた(リプロットされ た)ことになります。 Character Controlsメニュー
  23. 23. スケマティックで見てみると ユニティちゃんVer1.2のスケルトン階層 ユニティちゃんVer1.2のメッシュ階層 ユニティちゃんVer1.2のコントロールリグ階層 Mocapデータのスケルトン階層 Mocapデータのコントロールリグ階層 キャラクタライズ キャラクタライズ コントロールリグへプロット Mocapアニメーションデータ バインド Mocapアニメーションデータ
  24. 24. アニメーションレイヤーを使った調整 アニメーションレイヤー タイムライン 必ずSnap Play on Framesにする 現在編集中のレイヤー 元のアニメーションのレイヤー 修正キーを打つレイヤーは Additiveにしておく
  25. 25. アニメーションレイヤーを使った調整 随時クリップを送りながら、腕が身体に突っ 込んでいるような不具合部分を修正する。 手の置き位置などの修正は、修正したい箇所 を挟むようにまずフルボディで2つキーを打っ ておき、その後で修正したいコントローラを なるべく少ないキーで修正する。
  26. 26. アニメーションレイヤーを使った調整 • 初期位置(Tスタンス)での手や頭の角度などの最終調整。オリジナルアニメーション にアニメーションレイヤーを追加し、レイヤー上でモーションを微調整する。 • 大きめの修正はIKで、細かい修正はローテーションでやるとよい。 • モーションによっては手足がフリップすることもある。その場合はフリップする直前に フルボディモードでキーを追加してやるとよい。 • フリップ確認には、元のモーションを横にずらして一緒に再生してやるとわかりやすい • 細かいコントローラの使い方や、フルボディIKの使い方は、 http://www.slideshare.net/nyaakobayashi/bd-maya-ltcharaanime131128
  27. 27. ユニティちゃんスケルトンへアニメーションをベイク • コントロールリグでのモー ションの修正が終わったら、 モデルのスケルトンへモー ションをベイクする • Character Controlsメ ニューよりBake(Plot) to Skelton実行 • ここまで終わったらFBXセー ブし、MotionBuilderの Storyでモーションのカッ ト調整に進める。 スケルトンへのベイクが終了すると SorceはNoneに、 アニメーションレイヤーは BaseAnimationになる。
  28. 28. Mocapデータを調整する「意味」 • 本番に近いモデルに割り当てることで、動きを再確 認する • よりキャラにあった動きやポーズに修正する • コントロールリグに30fpsでリプロットすることで、 結果Mocapデータが、いわゆるヌルヌルの状態か ら、適宜サンプリングされることになる • 調整キーを追加することで、ポーズやアクションに メリハリが生まれる
  29. 29. ダンスアニメーションFBXの組込用仕様 0 1 60 61 7221 ウォームアップダンスモーション本編(30fps) Tスタンス 音楽IN ダイナミクスが落ち着くまでの予備時間 このフレームは、MecanimのAnimation設定側で切り落とす
  30. 30. Storyツールによるカット調整 Storyツールのタブ 新たにシーンに読み込んだ アニメーションデータを持た ないキャラクタライズ済みの ユニティちゃんモデル 新たにシーンに読み込んだアニメーションデータを含む FBXファイルをカットしたり、繋いだりして編集します ここでアニメーションを流し込むキャラクターと、ボディマスクを選択します
  31. 31. Storyツールによるカット調整 • MBで新規シーンを開き、Storyパネルに編集をしたいアニメーションの含まれているFBXを DDする • さらに割り当てるキャラクターモデルをアニメーションなしでシーンにマージし、Storyパネ ル上のCharacterに指定する。キャラクターモデルのソースがNoneならば、Storyに読み込 まれているアニメーションで動く。 • シザーツールなどを使いながら、アニメーションクリップのカット(尺)調整をする。 • アニメーションのカット調整が終わったら、Story上で出力したいアニメーションを指定し、 右メニューより Plot Whole Scene To Current Take で、空のTake1に出力する。 シザーツール
  32. 32. 残る作業 = Mocapでは出来ない作業 • ダイナミクス(揺れ物)設定 • 手の表現(エクスプレッション) • 表情変化の指定 • 楽曲とシンクロする口パク合わせ 全部Unity上でやってしまう!
  33. 33. Ⅲ. Unity上でのセットアップ
  34. 34. ダイナミクスの設定 • ユニティちゃんVer.1.2に付属する、 SpringManager.cs、SpringCollider.cs、 SpringBone.csを使う。基本設定は付属ドキュメントを 参照。 • 今回のセッティングでは、ユニティちゃんを一定の場所 から大きく動かさないので、胸周りのスプリングは柔ら かめにしてあります(ntnyさんのこだわり) • 他、上着の裾周りのスプリング設定にこだわりがありま す(ntnyさんのこだわり) • SpringBoneは全部で68個入っています
  35. 35. Mecanim:アニメーションレイヤーを使った 手のエクスプレッションの追加 • 手のエクスプレッション(表情)は、Mocap で撮るのは大変なので、こちらは3dsMax上 で手付けをしています(ntnyさん) • Tスタンスで手のエクスプレッションのみが 変化するアニメーション入りFBXファイルを 作成し、Unity上でMecanimのアニメーショ ンレイヤーで合成します。手はボディマスク でその部分のみ、アニメーションがOverride されるようにします • ダンスが3種類あるので、ダンスのステート 変移に合わせて同じモーションを別ステート として登録してあります
  36. 36. Mecanim:アニメーションイベントを使った 顔のエクスプレッションの追加 • ユニティちゃんVer.1.2に収録されている、FaceUpdate.csに含 まれている表情切り替え用イベントコール OnCallChangeFace()メソッドを、Mecanimのアニメーション イベントで呼び出します • 手のエクスプレッションを収録しているHandExpression.fbx内 でアニメーションイベントを設定することで、同じFBXファイ ルで手と表情のエクスプレッションを同時変更します
  37. 37. Mecanim:アニメーションイベントを使った 音楽再生のタイミング合わせ • こちらも同様にCandyRockStarモデルにアタッチされている MusicStarter.csのOnCallMusicPlay()メソッドをMecanimの アニメーションイベントからコールします • このアニメーションイベントは、ダンスモーションに合わせる必 要があるので、ダンスモーションが含まれているFBXに、音楽 開始のタイミングと停止のタイミングでイベントコールが設定 されています
  38. 38. 楽曲とシンクロした口パク • シーン内にLipSyncControllerというゲームオブジェクト があり、それにアタッチされているLipSyncController.cs が担当します。 • この手の演出は、楽曲と口パクをシンクロさせるデータを どれだけ正確に作るかがキモなんですが… • 今回はかなり力業で作りました(^_^;)。その代わり綺麗で す(ntnyさんのこだわり)
  39. 39. Advanced:IKによるLookAtシステム
  40. 40. Advanced:IKによるLookAtシステム • C86後に実装された機能です。Mecanim/Humanoidの  Animator.SetLookAtWeight()と連動して、視線追従に基 づく眼球ジョイントのローテーション変化を、ユニティちゃ んモデルの瞳テクスチャのUVオフセットに変換して実現 します • 使い方は簡単で、Mecanim/Humanoidのアバター設定 (Rig/Configure)でLeft EyeおよびRight Eyeに割り当 てたロケータに、各々DeltaLookAtAxis.csをアタッチし、 それぞれのDeltaLookAtAxisコンポーネントから、左右の 瞳オブジェクトを参照します • あとは、Animator.SetLookAtWeight()の眼球ウェイトを 大きくすれば、自動で瞳のUV移動を伴う視線追従を行い ます • TGS用OculusRiftデモで使われているようです
  41. 41. Unityでの実装/DCCツールでの 作業仕分けのポイント • Unityで実装したほうが楽なデータは、Unity上で やってしまう! • 特に使い回しが多そうなデータは、DCCツール上 で組み込んでしまうよりは、Unity上で合成したほ うが楽 • Mecanim/Humanoidは、極めて強力。 モーション流し込みの柔軟性はMotionBuilder以上
  42. 42. Ⅳ.完成プロジェクトのひも解き方
  43. 43. Unityではシーン内のゲームオブジェクトに様々な コンポーネントをアタッチすることで、機能を実現します ひとつのCandyRockStarゲームオブジェクトに たくさんのコンポーネントがアタッチされている。 これらの各コンポーネントが、それぞれに 指定された機能を実現している。 ⇒各コンポーネントがどのようにお互いを参照しあっ ているかの方法を理解すると、シーン構成がわかり やすくなる
  44. 44. ポイントは各コンポーネント間の参照関係を どうやって知るか? • 詳しくはこちらの資料を参照。 http://www.slideshare.net/nyaakobayashi/how-toinspectcompletescenes130618 • プラス、今回はアニメーション関連のコンテンツなので、各LateUpdate()イベントに も注意する。細かいキャラクターの追加制御は、LateUpdate()内で行ってます
  45. 45. クラスとコンポーネントを ガレージキットで例えてみよう! 原型シリコンゴム型キャスト注入製品 上が超簡単に説明した、ガレージキットの製作の流れ 画像は、Wonder Festival オフィシャルサイト『ガレージキットとは』より http://wf.kaiyodo.net/knowledge/garagekit/
  46. 46. Class / type / Instantiate / Componentの関係 原型シリコンゴム型キャスト注入製品 クラスインスタンス化オブジェクト GameObjectにアタッチすることで 実体(インスタンス)化できるクラス ⇒コンポーネント コード本体タイプ(型) ※自分で書いたスクリプトも、 もちろん含まれる 画像は、Wonder Festival オフィシャルサイト『ガレージキットとは』より http://wf.kaiyodo.net/knowledge/garagekit/
  47. 47. ポストとメモリのカンケイ?? ?
  48. 48. ポストとメモリのカンケイ?? ポスト • ポストには目的に応じて様々なタイプがある • 各々のポストには、住所がひも付けられている • ポストを使いたい場合、まずポストを設置し、 郵便局に住所登録をしておく必要がある • ポストに何か届けたい時には、届けものに 正確に住所を指定する必要がある ポスト⇒メモリと読み替えてみると…?
  49. 49. コンポーネント参照のための手順 ポストの住所を指定して、郵便物等を送る/受け取る/利用する ⇒「コンポーネントを参照する」 コンポーネント (GameObjectにアタッチされて 実体化したクラス) ポストの用途やサイズ等(タイプ)を事前に決めて、設置する ⇒「コンポーネント参照用変数を宣言する」
  50. 50. 他にも、「カプセル化」「多態性」「継承」 「オーバーライド関数」「ドットシンタックス」 「名前空間」「スコープ」とか、 いろいろあるけど、それはまたどこかで(^_^;) 7PKV[Ʒ%dzȸȇǣȳǰưŴȓǮȊȸƕᡕƍǍƢƍ ƷƸŴž7PKV[ӼƚƷǹǯȪȗȈǛ%Ʒ૨ඥư୿ƍ ƯƍǔſƱƍƏȈdzơnjƳƍƔƳƬᲹ ƦƜǛž7PKV[ƳǒưƸƷȩǤȖȩȪೞᏡſƱŴ ž%ƕΨŷਤƬƯƍǔ૨ඥǍȩǤȖȩȪೞᏡſǛ ॖᜤƠƯғКƢǔጀ፼ǛƠƯLjǔƱŴdzȸȇǣȳǰ ƕ࣯ƴಏƴƳǔǑƬᲛ
  51. 51. QA

×