You are currently viewing UnityでVRM1.0のVRMファイルを読み込んでみる

UnityでVRM1.0のVRMファイルを読み込んでみる

キャラクターモデルをUnityで読み込みたいと思い、VRMファイルの実行時読み込み(Runtime Load)を調べてみました

環境は以下になります
・Windows11
・Unity 2022.2.19f
・VRM1.0

VRMについては公式ページをご覧ください
https://vrm.dev/vrm/index.html

ランタイムでのロード方法

読み込みだけなら、以下のコードで実現できました

using UnityEngine;
using UniVRM10;

public class VRMLoader : MonoBehaviour
{
    async void Start()
    {
        string path = "vrmファイルへのパス";
        Vrm10Instance vrm10Instance = await Vrm10.LoadPathAsync(path);
    }
}

ステップバイステップでVRMファイルを読み込む

全体を通しての作業は以下になります

1.UniVRMパッケージを導入

Releases · vrm-c/UniVRM (github.com)
上記ページからUniVRMのパッケージをダウンロードします

ダウンロードしたパッケージをUnityに読み込みます

パッケージに含まれるファイルを読み込みます
読み込みの過程で推奨設定を提示されることがあるため、特に理由がなければ「Accept All」を選択して反映させます

以上でUniVRMパッケージの導入は完了です

2.VRMモデルをロードする

VRMモデルの作り方は公式ドキュメントをご確認ください
VRMファイルを作ってみたい – VRM ドキュメント

モデルはBoothなどでたくさん販売されているので、お好みのモデルを準備してください
今回は「Lua」ちゃんを利用させていただきました

まずはUnity上に空オブジェクトを作成します

作成した空オブジェクトに以下のスクリプトをアタッチします
パスは絶対パスで指定していますので、読み込みたいモデルに合わせて適宜変更してください

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

public class VRMLoader : MonoBehaviour
{
    // Start is called before the first frame update
    async void Start()
    {
        string path = "F:\\Project\\Unity\\UniVRMLoad\\LuaV3_FullSet.vrm";
        Vrm10Instance vrm10Instance = await Vrm10.LoadPathAsync(path);
        vrm10Instance.gameObject.transform.position = Vector3.zero;
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

スクリプトをアタッチすると、こんな感じになります

3.実行してみる

読み込むだけなら、以上の設定でモデルの読み込みが行えます
エディタのプレイボタンを押して実行してみてください

非同期読み込みのため、モデルが表示されるまで若干の遅延がありますが、モデルを読み込むことができました!

ここまでの操作ではVRMモデルを読み込むまでになります
実際には読み込んだモデルに対して動的に各種コンポーネントを設定していくことになると思います
読み込んだモデルは「vrm10Instance.gameObject」を利用することで、UnityのGameObjectにアクセスすることができます

以上です

今回はUnityでVRM1.0のファイルを動的に読み込む方法を紹介しました
コード自体はChatGPTに(ベース部分は)生成してもらいましたが、たしか学習データが2021年までしかないため、VRM1.0で読み込めるように手直しした感じになります。

プログラム生成にChatGPTが利用されることが多くなってきましたが、(ChatGPTが学習していない)最新技術のキャッチアップという点では、まだまだWeb記事に軍配が上がるのかなと思っています
(といっても、UniVRM1.0のリリースが2022年9月なので、それほど新しい技術でもないですが、でも、なぜかVRM1.0に対応したロード方法の記事が見つからなかったので、今回記事にしてみました)

created by Rinker
¥2,970 (2024/04/07 20:20:18時点 楽天市場調べ-詳細)
created by Rinker
¥2,970 (2024/04/07 20:20:18時点 楽天市場調べ-詳細)

コメントを残す