第6回目:Dance Mobcap|Tech Book Zone Manatee

マナティ

UnityおすすめAsset集

第6回目:Dance Mobcap

今回紹介するAssetは「Dance MoCap」です。有料で$16.20になりますが、いろいろなダンスの形を提供してくれます。何種類かのダンスの形が用意されていますので、これらを組み合わせて、音楽と関連付け、3Dモデルにダンスを踊らせてみましょう。

Dance MoCapのインポート

Asset Storeの検索欄に「Dance MoCap」と入力すると表示されますので、「ダウンロード」→「インポート」と進んでください(図1)。筆者は何度も使用していますので、「インポート」と表示されています。

一度ダウンロードしたファイルは、C:\Users\ユーザー名\AppData\Roaming\Unity\Asset Store-5.xというフォルダに保存されますので、2回目以降は、ここからファイルを読み込んでインポートになるのです。

図1 Dance MoCapのインポート画面

図1から「インポート」をクリックすると、UnityのProject内に図2のようなフォルダが作成され、必要なファイルが取り込まれます。

図2 必要なファイルが取り込まれた

次にもう1個、ダンスを踊らせるための3Dモデルである「Space Robot Kyle(無料)」をインポートします。検索欄に「Kyle」と入力すると表示されますので「ダウンロード」→「インポート」と進んでください(図3)。

図3 Space Robot Kyleのインポート

図3から「インポート」をクリックすると、UnityのProject内に図4のようなフォルダが作成され、必要なファイルが取り込まれます。

図4 Space Robot Kyleのファイルがインポートされた

舞台をつくる

まず初めに、HierarchyのCreateから「3D Object」→「Plane」と選択して、「床」となるべきPlaneを配置します。そのPlane上にSpace Robot Kyleを配置しましょう。

Space Robot Kyleの配置

Projectの「Assets」→「Robot Kyle」フォルダ内にある、「Robot Kyle.fbx」をPlane上に配置します。配置したRobot Kyleはカメラに背を向けていますので、InspectorのTransformのRotationのYに「180」を指定してカメラの方を向かせてください。その後、Main Cameraを調整して図5のように表示します。

図5 Robot KyleをPlane上に配置した

次にRobot KyleのAnimation Typeを設定します。

Robot KyleのAnimation Type

HierarchyからRobot Kyleを選択してInspectorを表示させます。Inspectorの上部にModelという項目があり、「Select」というボタンがあります。これをクリックしてください(図6)。

図6 Selectボタンをクリックする

すると、図7のような画面が表示されますので、「Rig」ボタンをクリックしてください。「Animation Type」にはデフォルトで「Legacy」と表示されていると思います。右端の「上下▲」アイコンをクリックして、「Humanoid」を選択してください(図7)。

「Legacy」と、「Humanoid」の場合は3Dモデルの動作を設定するのに「Animator」を使用するようになります。別にLegacyのままでのいいように思うのですが、3DモデルはHumanoidに当たりますので、ここは正当に「Humanoid」を選択しておいた方が無難です。これはInspectorの中に表示されます。選択したら、右隅下のApplyボタンを必ずクリックしてください。

図7 Animmation TypeにHumanoidを選択した

ApplyボタンをクリックしたのちRobot Kyleを選択してInspectorを表示させると「Animator」という項目ができているはずです(図8)。デフォルトのLegacyでも「Animator」は表示されます。

図8 Animator項目が表示されている

図8のControllerの右隅の「」(〇に・)のアイコンをクリックして、「dance Controller」を選択してください。

これでPlayするとRobot Kyleは1回だけダンスを踊ります。ダンスはずっと踊らせたいので、dance controllerを編集します。

dance controllerを編集する

Controllerに指定した「dance controller」をダブルクリックします。するとAnimatorの画面が表示されます。全体が表示されるように、スクリーンショット撮る間だけ、LayoutをDefaultに変更しています。

図9のように表示されています。各ダンスのモーションが表示されている長方形は「State」と呼ばれるもので、アニメーションを制御する役割を持っています。一番上のオレンジ色の長方形が緑色のEntryと矢印線でつながっていますが、この矢印線のことを「Transition(遷移)」と呼びます。

図9 dance ControllerのState(状態)が表示されている

まずオレンジ色の「High_Rhythm_Dance_01」を選択してマウスの右クリックをします。「Make Transition」と言う項目が表示されますので、これを選択します。矢印線が表示されたら、下の「High_Rhythm_Dance_02」の上でクリックします。すると、これら2つの長方形が矢印線で繋がります。

今度は逆に「High_Rhythm_Dance_02」を選択してマウスの右クリックから「Make Transition」を選択し、表示される矢印線を「High_Rhythm_Dance_01」の上でクリックします。これで逆向きの矢印線で二つのStateがつながります(図10)。

図10 2つのStateがつながった

この作業を表示されているすべてのStateに対して行います。最終的には図11のようにしてください。

図11 全てのSateがTransitionで繋がった

RobotControllerの設定が終わるとLayoutは「2 by 3」に戻して作業します。

これでPlayすると図12のようにRobot Kyleがずっとダンスを踊り続けます。

図12 Robot Kyleがダンスを踊っている

これでダンスはするようになりましたが、やはり音楽が無いと物足りません。そこでRobot Kyleのダンスに音楽を追加してみましょう。追加する音楽は、Asset Storeから無料のAssetである「Free music pack」を使用します。

Free music packのインポート

Asset Storeの検索欄に、Free music packと入力すると、表示されますので「ダウンロード」→「インポート」と進んでインポートしてください(図13)。

図13 Free music packをインポートする

インポートできたところで、Audioの設定を行います。

Audioの設定

UnityメニューのGameObjectからCreate Emptyを選択して、空のGameObjectを作成します。Hierarchy内のGameObjectを選択してInspectorを表示します。「Add Component」から「Audio」→「Audio Source」を選択します。Audio Clipに「Enegetic rock loop 12」を選択します。またLoopにチェックを入れております(図14)。

どのファイル名がどんな音楽かを前もって知りたい場合は、Project内のFree Pack内のフォルダにある、音楽ファイルをクリックすると聞くことが出来ます。何を使って再生するかの選択画面が出ますが、筆者はWindows Media Playerを指定しています。

図14 Audio Clipに音楽ファイルを指定する

実際にPlayした動画が、動画1になります。

Robot Kyleが音楽に合わせてダンスを踊る動画

動画1 Robot Kyleが音楽に合わせてダンスを踊る動画

今回は1人の3Dモデルしか使用していませんが、複数の3Dモデルを用意しても、同じダンスを踊らせることが出来ます。但し、Humanoidの3Dモデルである必要があります。AKB48のようなこともできるので、各自試してみてください。また音楽ファイルは無料のAssetがたくさん公開されていますので、自分が気に入った音楽Assetを使用するといいでしょう。

次回は、多数の鳥を大空に羽ばたかすことが出来る「Bird Flock(有料)」について解説します。お楽しみに。

著者プロフィール

薬師寺国安事務所 薬師寺国安(著者)
薬師寺国安事務所代表。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。現在はUnity5、UE4、Excel VBAについて執筆活動中。
Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)。