あるみにメモ

技術的なメモをかくかもしれない

Unityでキズナアイ(Vtuber)を動かしたい-4-(とりあえず操作編)

前回の記事↓↓

aluminum-pepe.hatenablog.com


前回はキズナアイちゃんに踊ってもらいましたが、今回は「操作キャラ」として扱ってみたいと思います。

一番簡単でコードを一行も書きません

「よくわかんねえけどとにかく動かさせろや!!!!」って人向け

サークル内で似たような講習をしたのでレクチャー風。

f:id:aluminum_pepe:20181001043926p:plain

走るキズナアイちゃん。(サムネ用)。


到達点


この記事の言うとおりにすると多分こんな感じになる。



ということで頑張っていこう。


UnityにMMDモデルをいれる


改めて簡単に手順をさらいつつ、確認していく。


アイちゃん召喚

f:id:aluminum_pepe:20181001044010p:plain

キズナアイちゃんを召喚。 (一応足場も出しておく)

召喚の仕方は↓↓の前々々回記事にて

aluminum-pepe.hatenablog.com


※なお、ここで使用するMMDモデルはキズナアイちゃんですが、大体の人型MMDモデルを同様の手順で使用できます。好きなMMDモデルを探してやってみてもいいかも

ミライアカリちゃんもUnity召喚できる

f:id:aluminum_pepe:20181001044024p:plain

もちろん方法はアイちゃんとおんなじ。


動かすための設定

MMDモデルをUnityに持ってこれたら、動かすための設定をしていく。

移動のアニメーションを作って適用させたり、移動キーに対応して自機を動かすスクリプトを書いたり……

しません。

今回はアセットストアから、そういった「キャラを動かすための諸々」は全部ダウンロード(インポート)してきてしまう。


アセットストアとは

f:id:aluminum_pepe:20181001061647p:plain

アセットストアとは、Unityで使用できる3Dモデルの素材や画像などを購入できるショップ。

もちろん無料なものもある、またUnityの開発作業自体を助けるツールなんかもある。


アセットストアを使う

アセットストアはUnityのTab(タブ)としてどこかにあるので、選択。

f:id:aluminum_pepe:20181001044049p:plain

見つからなかったら、Window→から選択して出す。

f:id:aluminum_pepe:20181001044105p:plain

ちなみにアセットストアはUnityから開かずとも、ブラウザから開くことも可能。

次に、AssetStore から「Standard Assets」を検索

f:id:aluminum_pepe:20181001044128p:plain

そしてダウンロード→インポート

f:id:aluminum_pepe:20181001044157p:plain

(選択はとりあえず"import"で)


Standard Assetsとは

おそらく「Sample Scene」と「Standard Assets」がProjectに追加されるはず。

インポートした「Standard Assets」はUnity公式のアセットで、Unityでゲームを作る際に便利なスクリプトや素材が入っているのでおすすめ。

ファイル「Sample Scene」の中には、そのアセットで作られたシーンがいくつか入っているので使い方の参考になるかも。


方針

新たに追加されたファイル「Standard Assets」から、「Characters」→「ThirdPersonCharacter」→「Prefabs」を選択する

すると「ThirdPersonController」という名前の青いブロックアイコンの項目があるはず。

f:id:aluminum_pepe:20181001044219p:plain

そして、これをGameウィンドウにD&Dしてみる。

すると灰色の人間が現れるはず。

f:id:aluminum_pepe:20181001044226p:plain

ここで一度実行してみると

f:id:aluminum_pepe:20181001044239p:plain

この灰色のキャラだけ、→矢印キーまたはWASDキーで動く。

すでにこのキャラは、キャラが動いて見えるための設定が済んでいるので、適用させただけで動かせてしまうのだ。

なので、今回は「とりあえずキズナアイを操作する」ために、この灰色のキャラに適用されている色々をまねてつけてみる。

どんな構造になっているかは、逐一「ThirdPersonController」を見てみるといいかもしれないとアドバイス


適用

動かすために必要な色々を適用させていきます。


AnimatorController適用

まず、ファイル「Standard Assets」から、「Characters」→「ThirdPersonCharacter」→「Animator」の、「ThirdPersonAnimatorController」をモデルにアタッチしていく。

アタッチとは、要所にスクリプトやオブジェクトを適応させるということ。(D&Dのこと)

f:id:aluminum_pepe:20181001044311p:plain

アタッチする場所は、モデルのAnimatorのController

これはキャラのアニメーションを扱っていて、キー操作やキャラの場所に応じたアニメーションを再生してくれる。 (アニメーションごとアセットに用意してある)


スクリプト適用

次に、同じ大元ファイルから、「Characters」→「ThirdPersonCharacter」→「Script」の、「ThirdPersonUserControl」選択しモデルにアタッチする。

f:id:aluminum_pepe:20181001044321p:plain

モデルのコンポーネント(MMD4MecanimModelやTransformのこと)が並んでいる部分に直接いれる。

画像のように、一番下に入れるのがわかりやすいかも

ちなみに、これを一つ入れただけで、自動的に4つのコンポーネントが追加される。

f:id:aluminum_pepe:20181001044330p:plain

勝手に必要な項目が追加されるようにできているのだ。すごいね。


モデル設定

なお、これだけでは動かない可能性がある。

モデルによっては、元データのprefabを選択し、InspectorからのImportSettingsを選択して、

「Rig」→「Humanoid」を選択して「Apply」する必要がある。

f:id:aluminum_pepe:20181001044341p:plain

ここが「Humanoid」でないと、「人用のアニメーション」が動かないので、棒立ちのままになってしまう。


シビアなあたり判定設定

次に、自動的に適用されたカプセル状のあたり判定である「CapsuleCollider」を調整する。

カプセル状の判定がうまくモデルと合うように、Center,Radius,Heightの項目をいじるか、Edit Colliderを選択してマウス操作で調節する。

f:id:aluminum_pepe:20181001044354p:plain

画像はEdit Colliderを選択してマウス操作で調節している様子。Sceneでカプセル状のあたり判定の各所に四角いポイントが現れるので、それをマウス操作っで動かすと、カプセルの形状を変えられる。

このあたり判定、初期段階で地面にめり込まないように注意する。

そうなってしまった場合、このスクリプトの接地判定処理がうまく働かないので、


f:id:aluminum_pepe:20181001044404p:plain


浮く。


判定を有効化してみると、こんなかんじ。

f:id:aluminum_pepe:20181001044414p:plain

あたり判定は地面にくっついているように見えるが、アニメーションが空中にいるときのものを再生してしまっている。

f:id:aluminum_pepe:20181001044424p:plain

地面にめり込まないように、きをつける。


これで、適用は完了。


実行

これで動く。

矢印、WASDキーで移動、スペースキーでジャンプ。

f:id:aluminum_pepe:20181001044433p:plain

アイちゃんが走ったーーー!



はしったーーーーヒャッホーーーーー(落下)



待機モーションも再生されてる。

もはや立ってるのを眺めているだけでもいいけどねえ


ちなみに、「適用」ときに勝手に追加されたコンポーネントの中に「ThirdPersonCharacter」という、色々入力できる項目のあるものがある。

f:id:aluminum_pepe:20181001044536p:plain

これをいじると、移動スピードや、ジャンプ力などを変えることができる。

なお、先ほどからの動画ではジャンプ力をかなり高めに設定しているので、超ジャンプしていたというわけなのだ。

いくらかいじってみると面白いかも。

と、ひとまず操作出来るようになった。


その他設定

アセットを使ってもうちょっとだけなんかする。


カメラを設定する

さて、Gameウィンドウではどうしてもカメラが離れたところにあり、見にくい。

f:id:aluminum_pepe:20181001044546p:plain

カメラの位置を直接変えて見やすくする……のではなく、ここでもアセットの力を借りる。

「Standard Assets」→「Cameras」→「Prefabs」に入っている、「MultipurposeCameraRig」を、Hierarchyに直接アタッチする。

f:id:aluminum_pepe:20181001044555p:plain

さらにアタッチしたところで「Targert」を選択できるので、HierarchyのMMDモデルをアタッチする。

f:id:aluminum_pepe:20181001044604p:plain

これで一番最初に上げた動画のように、カメラが操作キャラを回り込むように追従するようになる。


空を変えてみる

※これ、本来の進行と変えたのですぐにできないので飛ばしてもらっていいです()

せっかくなので空を変えてみよう。

アセットストアで「Mecanim Locomotion Starter Kit」を検索し、ダウンロード→インポート。

f:id:aluminum_pepe:20181001044658p:plain

ヘッダーから「Window」→「Lighting」→「Settings」を選択する。

f:id:aluminum_pepe:20181001044707p:plain

いかにもな場所(SkyBox Material)にはすでに設定されているSkyBoxがあるが、ここの横の○をクリックする。

f:id:aluminum_pepe:20181001044717p:plain

すると、プロジェクト内のテクスチャ(画像)一覧から、どれをSkyBoxに設定するか選ぶことができる。

上の検索欄に「Sky」と検索すれば曇のある青空のテクスチャが表示されるので、これを選択する。

f:id:aluminum_pepe:20181001044727p:plain

いろいろ設定できたかと。


到達~

以上全てを実行すると……



こうなります。


まとめ

ね?一行もコードを書かなかったでしょ?

誰かの用意したものをUnityの画面でゴニョゴニョ設定するだけで、それっぽい動きをさせることができるんすねえ。


え?もっと動かしたい?


違うアセットも使ってみよう(他力本願)


ただし、アセットを使っていると、自分好みに拡張させたり、変更を持たせたいときに、どこを変えたらいいのか分からないことがある。

それならば、自分で移動処理のスクリプトを書いた方がいいということもあるので、頑張ろう。

特に今回適用した「ThirdPerson~」のスクリプトは、未熟な自分には理解しきれない部分もあるので、自身がキャラ操作を扱うときはわかる部分を参考にしつつ、自分で移動のスクリプトは書いて、アニメーションコントローラを組んだりしている。

といっても、3Dアニメーション自体は自力で用意はできないので、そういったものはアセットに頼ることが多い。

そんな話もいずれもできたらいいかもしれない。


次回は表情変化の方法について、書こうかな。



次回、表情変化(?)



ライセンス表記

キズナアイ Ver1.01

企画・製作:Project A.I. キャラクターデザイン:森倉円 モデリング作監修:Tda モデラー:トミタケ

(c)Kizuna AI

ミライアカリ(Mirai Akari)Ver 1.0 モデラー:Digitrevx イラスト:KEI

(c)Mirai Akari Project