【デスクトップキャラクター】UnityでMMD【推し召喚】

おはこんばんちは!

日常を彩る「推し活動」略して「推し活」

配信を観る。コメントをする。スーパーチャットを投げる。アイテムを購入する。イラストを描く。etc…

色々な「推し活」の形があります。

その中には、自己満足のためだけの活動もあるかもしれません(他人に迷惑をかけるものを除く)

というわけで、今回は日常を華やかにする推し活アイテムの1つを作成していきたいと思います。

今回のゴールと目的

パソコンのデスクトップで「推し」がダンスしてくれるアプリケーションの作成!!

長時間のパソコン作業…単調なPC画面で推しが踊っていると気分も華やぐのではないか!?
そう考えて今回のアプリ作成に取り組みました!
今回踊っていただく「推し」は超人気ゲーム”原神”に登場する「バーバラ」ちゃん!

※とりあえず動けばよかろう!の精神なので、処理が雑かもしれない点はご容赦ください…

基本の流れ

最終的に「推し型のアシスタントAI」を作りたいのと、ゲームっぽいアプリにしたいなというのもあったのでUnityを使ってみました。

流れ
①推しのMMDモデルの準備

②UnityでMMDモデルとダンスモーションを利用できる環境を作る

③Unityでプログラミング(言語:C#)ができる環境を作る

④UnityでMMDモデルを躍らせる

⑤UnityでMMDモデルの背景を透過させる環境を作る

⑥Unityでダンスする推しを実行ファイルとして出力する

⑦デスクトップで踊ってもらう!!

UnityでMMDモデルとダンスモーションを利用できる環境を作る

UnityにMMDモデルを取り込む

MMDモデルの準備

モデルを準備する手段は大きく2つ
①自分で作る
これをやっていると学校に通っている人や働いている人はこの記事を読み終わるまでに1年ぐらいかかってしまいます。
3Dモデル作成ソフト…Blender、Unity

②配布されているモデルを利用させてもらう
こっちが本命です。配布されているモデルをありがたく利用させてもらいましょう。

配布サイトは下記の「ニコニ立体」が良いかと思います。
配布サイト:https://3d.nicovideo.jp/search

後、神運営である「カバー株式会社」様がホロライブメンバーの3Dモデルを配布してくださっているので、ホロライブ推しの方は利用させてもらうと良いかと思います。
紹介サイト:https://www.mmd.hololive.tv/ (配布サイトは上記のニコニ立体です)

今回は原神のバーバラちゃんを利用しますが、なんと原神の制作会社であるmiHoYoさんがMMDモデルを配布してくれています!(神運営様に感謝)
配布サイト:https://genshin.mihoyo.com/ja/news/detail/5885

推しのモデルが見つからない方は「MMDモデル リゼ・ヘルエスタ」みたいな感じで検索してみてください。(それでもいなければ、Blenderを準備しましょう…)

というわけでここからは「バーバラちゃん」をダウンロードして進めていきます。

※他人に公開する二次創作の場合はMMDモデルを利用する際に必ず利用規約・禁止事項をすべて確認して、その範囲内で利用・公開してください。
利用規約等に記載されている以上の内容については、製作者側に問い合わせをお願いいたします。

UnityにMMDモデルを取り込む

UnityでMMDを有効にする

「MMD4Mecanim」というUnityでMMDモデルを動作させるスクリプトファイルを利用させていただきます。
https://stereoarts.jp/

上記リンク先サイトにMMD4Mecanim_Beta_20201105.zipがあるのでクリックしてダウンロードしてください。
ダウンロードしたら、zipファイルを右クリックしてすべて展開で展開しましょう。

展開したらUnityを起動します。
起動した状態で先ほど展開したフォルダの中の「MMD4Mecanim.unitypackage」をダブルクリックします。

すると下記ウィンドウ(パッケージインポートウィンドウ)が左の方に現れるので、そのウィンドウの右下にある「Import」をクリックします。

Unity画面
パッケージインポートウィンドウ


そうしたらUnityのウィンドウの下部「Project」の中の「Assets」に「MMD4Mecanim」のフォルダができてることを確認してください。
できていればこれで準備完了です!

MMD4Mecanim

推しをUnityに取り込む

ここから楽しくなります!
先ほどダウンロードした推しのフォルダを、UnityのProject>Assetsの配下にドラッグ&ドロップします。

Unityに推しを入れる


そうするとその推しのフォルダの中に「~.MMD4Mecanim.asset」というファイルができているかと思います。
そちらをクリックするとUnity画面右の「Inspector」欄に利用規約への同意等にチェックを入れる欄が出てくるので、すべて確認したうえで右下の「同意する」をクリックします。

※~.MMD4Mecanim.assetは画像中央下の立方体アイコンのやつ
同意するの欄が隠れて見えない場合があるので、Inspectorの左端をドラッグして引き出します。

assetファイルと同意項目

すると次に下記画像の状態に変わるので右下の「Process」をクリックして処理を実行します。

MMD適用処理

そしたらUnityで使える3Dモデルが出力されましたので、これを画面中央のSceneタブをクリックして、そこにドラッグ&ドロップします。

と、ここで問題発生です。

原神の配布モデルを利用した場合、テクスチャ(モデルの色など)の設定がうまくいっていません。バーバラちゃんが丸裸(原型)状態です。

この場合は、作成された「Materials」フォルダ内のMaterial1つ1つに対応するテクスチャを割り当てていくことになります。
今回詳細は省略しますが、Materialを選択して、
「Inspector」の中の「Shader」を「MMD4Mecanim/MMDLit-Edge」にします。
そうすると「Main Tex」「ToonTex」という選択肢が出てくるのでMaterialに合わせて適切なテクスチャとトーンを選んで設定することでうまいことできます

UnityでMMDモデルに踊ってもらう

ここまでで「推し」を顕現させることができました。

次はモーションを付けていきます。

MMDのモーションを多くの有志の方々が作成してくれているのでこれも使わせてもらいましょう。
好きな曲のモーションを検索してみてください
例:「シュレディンガイガーの子猫 MMD」

ダウンロードしたzipファイルを展開して、vmdファイルを入手します。
そのvmdファイルをUnityの「Project」>「Asset」配下に配置します。
配置したら、「MMDモデル読み込み」のときと同様のInspector画面の中にVMDを設定する場所があります。
そこにvmdファイルをドラッグ&ドロップして、Processで処理を実行します。

モデルへのvmdファイル設定

そうしたら次に、「Hierarchy」からキャラクターを選択します。
その時の「Inspector」を確認して、「Add Component」をクリックします。
その選択肢の中に「Animator」というのがあるのでそちらを選択します。

次に「Project」欄の中の「Assets」を右クリックし「Create」から「Animator Controller」クリックして作成します。

作成してできたコントローラーをダブルクリックするとUnity中央に下記画像のような画面になります。
ここにモデルに割り当てたvmdファイルをドロップ&ドロップすると下記画像のような表示に変わります。

Animation-Controller設定


※ドラッグ&ドロップするのは下記の画像にある赤色の三角形マークのファイルです。
モデルの中に作成されているはずです。

vmdファイル

最後に、先ほど作成した「Animator」に、コントローラーをドラッグ&ドロップすれば完成です。

アニメーション設定

+α UnityでBGMをつける

音楽が流れないのは少し寂しいので、モーションに合ったサウンドを流したいと思います。

つけたいBGMが準備できたら、Unityで躍らせるモデルを選択します。
Inspectorで「AddComponent」から「Audio Source」を選択します。

その中にAudioClipという欄があるのでそこにBGMファイル(拡張子が.wavなど)をドラッグ&ドロップ!
これだけであとは再生すれば自動でBGMがつきます!(簡単!)

※ドラッグ&ドロップするファイルはUnityで作成しているフォルダの配下になければうまくいかないことがあるので、「AudioClip」にドラッグ&ドロップする前に、いったん「Assets」の配下にドラッグ&ドロップした方が良いかもしれません。

ループ設定

Animationのループ設定

これが今までの流れだけだとあまりスムーズにできませんでした。
なので力技にはなりますが、簡単な方法を紹介します。

これまでに「Animator」のタブで、vmdファイルをドラッグ&ドロップしたかと思います。
その作成したモーションに、さらに同じモーションをドラッグ&ドロップして下記の画像のような形式にして無限Loopさせます。

AnimationLoop設定

BGMのループ

こちらは非常に簡単です。
「Audio Source」の中に「Loop」という項目があるので、そちらに✓を入れるだけです!

実行ファイルとしての書き出し

ウィンドウサイズ可変化

上記画像の場所でウィンドウサイズを変更することができるのですが、Unityの実行ファイルは前回起動時のウィンドウサイズが次回起動時に引き継がれるという仕様らしく、場合によってはこれだけではフルスクリーンモードが解除できません。

よって下記のスクリプトを追加します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WindowSet : MonoBehaviour
{
    [RuntimeInitializeOnLoadMethod]
    static void OnRuntimeMethodLoad()
    {
        Debug.Log("After Scene is loaded and game is running");
        // スクリーンサイズの指定
        Screen.SetResolution(1920, 1080, false);
    }

    // Start is called before the first frame update
    void Start()
    {  
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Escape) && Screen.fullScreen)
        {
            Screen.fullScreen = false;
        }
    }
}

参考:https://gu-cho.com/entry/unity-screen-size/

ウィンドウ背景透過設定

こちらは非常にありがたいことにgithubでソースコードを公開してくれているのでそちらをお借りして、適当なオブジェクト(MMDモデルなど)にアタッチ(ドラッグ&ドロップ)すればそれで完成です。

ソースコード:https://gist.github.com/wakagomo/fe74ec4a7b74f2e3299a7f2ecc359722
参考:https://qiita.com/wakagomo/items/6e83019481d7cd326e72

実行ファイルとして書き出し

Unity画面左上「File」>「Build settings」>「Player Settings…」
(表示されたウィンドウの左下)

新しく「Project Settings」ウィンドウが出てくるので下記画像のように設定変更してください。
・Fullscreen Mode:Windowed
・Resizable Window:チェックを入れる
・Use DXGI Flip Model Swapchain for D3D1J:チェック外す

以上の設定が完了したら、上記のウィンドウを閉じて、下記画像の「Build」をクリックしたら、実行ファイルが作成されます。

完成した「推し」ダンスを確認しよう!

バーバラちゃん(恋愛サーキュレーション)

こんな感じでデスクトップ上のすべてのアプリケーションを無視して「推し」がダンスしてくれます(笑)

まとめ

ということでパソコンの画面上で推しにダンスしてもらいました!
(今回は原神のバーバラちゃんで紹介しましたが、裏では最推しであり私が崇め奉っている「リゼ・ヘルエスタ第二皇女殿下」に踊っていただいています。)

長く続くパソコンでの作業中に癒しを与える「推し」のダンス!!
みなさんも作成してみてはいかがでしょうか?

次は今回の延長線上で、推しがこっちの行動に反応してくれるようなアプリを作っていきたいと思います。(こっちが本命です)

コメント

タイトルとURLをコピーしました