【VR開発】キャラクターライブ制作への道①~VRMモデルをUnityに入れて動かしてみる~

VR/AR/Vtuber

どうも、重平です。

キャラクターライブを作りたいけど何をすればいいかわからない。というわけで、まずはキャラモデルを作って動かしてみようというところから始めていきたいと思います。

今回の記事に書くのはこちら。

  • キャラモデルを作る
  • VRMモデルをUnityに取り込む
  • キャラモデルを動かしてみる

では始めていきましょう!

※なお、本記事は備忘録や経過報告の側面が強いため、ところどころ説明や手順を省いていることがあります。

前回の記事↓

【VR開発】キャラクターライブ制作への道~前置き~
どうも、重平です。気付いたら随分久しぶりの更新になってしまいました。さて、これから暫くの間、キャラクターライブ制作の過程をブログに投稿していこうと思います。私はVtuberにハマってからVRライブやリアルライブなどをいろいろと見るようになり...

作業環境

・Unity6(6000.0.31f1)

・VRoid Studio

・UniVRM(1.0ver)

・mixamo

・C#

キャラモデルを作る

さて、キャラライブを作るためには、歌って踊ってもらう3Dキャラクターが必要ですよね。

今どきはネット上に無料で権利的にもフリーなモデルがたくさんありますが、今回は勉強も兼ねて自分で作ることにしました。

とはいえ、私はモデリングの経験もないので、一からモデリングをしているとそれだけで半年経ってしまう…。というわけで、今回は「VRoid」を使ってキャラクターを制作することにしました。(DCCツールは追々勉強します…)

VRoidとは?

VRoidは、ピクシブ株式会社が提供するサービスで、3Dキャラクターを制作したり、それらを気軽に公開したりすることができます。難しい操作は必要なく、ゲームでキャラメイクをするような感覚で簡単に自分好みのキャラクターを制作することができます。
専門知識がなくてもそれなりのモデルが作れますが、より拘りたい人に向けたカスタマイズ機能もあるなど、3D初心者から詳しい人まで幅広い層で活躍するソフトウェアです。
(筆者主観)

VRoid(VRoid Studio)は以下のリンクに飛んで、ソフトウェアをダウンロードすることで利用できます。私の場合はWindows版をダウンロードしました。

VRoid Studio
3D創作を誰でも楽しめる世界へ。VRoid Studioは3Dキャラクター制作ソフトウェアです。はじめての人にはかんたんに、慣れた人はよりこだわって、3Dキャラクターを作ることができることができます。

VRoidでのキャラ制作はゲームのキャラメイクみたいな感じでとても簡単でした。VRoidみたいな高性能なツールが無料で利用できるだなんて、今は本当にありがたい時代ですね。

そして出来上がったのがこちら。名前は「金髪ちゃん」と言います(安直)。

さて、これでキャラクターは制作できたので、これを他のツールでも使えるようにエクスポートしたいと思います。キャラクターモデルをエクスポートする方法は、VRoid Studioアプリの右上から「VRMエクスポート」を選択して出力します。

VRMには昔からあるバージョンの「0.0」と、新しいバージョンの「1.0」がありますが、今回は「1.0」でエクスポートしました。※1

これでひとまずキャラモデルは制作できました。今後はこの「金髪ちゃん」にいろいろ働いてもらおうと思います。

VRMモデルをUnityに取り込む

続いて、先ほど制作した金髪ちゃん(VRM)をUnityに入れてみます。

今回使用するUnityのバージョンは「6000.0.31f1」(Unity6)です。

Unityを起動させたら早速金髪ちゃんをインポート!と言いたいところですが、デフォルトではUnity上で金髪ちゃん(VRMファイル)を動かすことはできません。

Unity上でVRMファイルを動かすためには、「UniVRM」というアセットをUnityにインストールする必要があるようです。「UniVRM」もVRMのバージョンによって使用するものが異なるので、インストールする際は少し注意が必要ですね。私は金髪ちゃんのバージョンに合わせて、UniVRMも「1.0」の方を選びました。※1

Releases · vrm-c/UniVRM
UniVRM is a gltf-based VRM format implementation for Unity. English is here . 日本語 はこちら - vrm-c/UniVRM

UniVRMのunitypackageをインストール後、UnityにVRMファイルの金髪ちゃんを入れると…

無事に表示されました!これで金髪ちゃんをUnityで動かすことができます!

※1:VRMのバージョンについてですが、本記事では「1.0」を使用しています。ただし、1.0はまだ開発途中であり、環境によっては不具合が起きる可能性があります。また、現在広く出回っているアセットやツールの多くは「0.0」に対応しているため、特に初心者の方や、3Dモデルの扱いに慣れていない方は「0.0」の使用を検討した方が無難かもしれません。

キャラモデルを動かしてみる

金髪ちゃんをただUnityに入れただけでは面白くないので、試しに歩かせてみようと思います。

今回は「Mixamo」というAdobeの提供しているサービスからアニメーションを拝借しました。

Mixamo

(今回は「Walking」と「idle」を拝借)

Mixamoから取得したファイルはFBX形式のモデルデータでダウンロードされましたが、今回はアニメーションだけ欲しかったので、一旦FBXファイルをUnityに入れて、そこから「Ctrl+D」でAnimation Clipだけ抜き出しました。

「待機」と「歩く」のアニメーションが手に入ったので、今度はアニメーターコントローラーを作ってアニメーションを設定。AnimatorウィンドウのParametersタブで「+」ボタンをクリックし、「Bool」を選択してパラメーターを追加しました。ちなみに、この「Bool値」と言うのはパラメーターをON/OFFで切り替えることができる型で、「待機 → 歩く」といったアニメーションの切り替えによく使われるみたいです。

ここまで出来たら次はアニメーションを制御するC#スクリプトを作成。スクリプトは親友のChatGPTに作ってもらいました(汗)。私もC#スクリプトは多少勉強しましたが、自分で書くとなるとなかなか難しい…。C#も少しずつ勉強しないとですね。

↓ChatGPTに作ってもらったスクリプト

using UnityEngine;

public class WalkScript : MonoBehaviour
{
    public Animator animator;
    public float moveSpeed = 2f;
    public float rotationSpeed = 10f;

    void Update()
    {
        float horizontal = Input.GetAxisRaw("Horizontal");
        float vertical = Input.GetAxisRaw("Vertical");

        // カメラの向き取得(XZ平面への投影で安全に)
        Vector3 camForward = Vector3.ProjectOnPlane(Camera.main.transform.forward, Vector3.up).normalized;
        Vector3 camRight = Vector3.ProjectOnPlane(Camera.main.transform.right, Vector3.up).normalized;

        // 入力ベースの移動方向(カメラ基準)
        Vector3 direction = (camForward * vertical + camRight * horizontal).normalized;

        if (direction.magnitude > 0.1f)
        {
            // 向いている方向にスムーズに回転
            Quaternion targetRotation = Quaternion.LookRotation(direction);
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotationSpeed);

            // 実際に移動(ワールド座標ベース)
            transform.position += direction * moveSpeed * Time.deltaTime;

            animator.SetBool("IsWalking", true);
        }
        else
        {
            animator.SetBool("IsWalking", false);
        }
    }
}

とりあえず、これでWASD、もしくは十字キーでキャラモデルを動かせるようになりました。

あとはこのスクリプトとアニメーターコントローラーをヒエラルキーの「Kinpatu1」に付与してあげれば…。

金髪ちゃんを歩かせることができました!

まとめ

キャラクターライブ制作への道の第一弾。今回は、「キャラモデルを作る」、「VRMモデルをUnityに取り込む」、「キャラモデルを動かしてみる」の3つをやってみました。

今回やったことは超絶基礎的なことではあるんですが、なんというか、こんな基礎的なことでもやってみると意外とわからないことや初めて知ることが多くてびっくりしましたね。

VRMファイルは正直まだどんなものかあまりよくわかっていませんし、スクリプトも最初に作ったものではカメラの向きを考慮できておらず、歩けはするけど違和感がありましたし、なんだかんだ戸惑いながら作業していました。

あと、今回は試しに歩かせてみましたが、歩くときにキャラの身体がブレていたり、スクリプトも改良の余地があるなど、正直しっくり来ていない部分も多々あります。

ただ、ここでずっと悩んでいても仕方がないので、とりあえず今回はこれでよしとして先へ進もうと思います。まあ、こういうのも含めて学びになると思うので、このままおざなりにせず、少しずつでも理解しながら進めていこうと思います。(特に歩くと体がブレてしまうのは解消させたいですね…)

まだまだ覚えることもたくさんだけど、頑張っていきまっせ!

それではまた次回。

⇐前回の記事                            次の記事⇒

コメント

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