MRが楽しい

MRやVRについて学習したことを書き残す

Meshの環境作成チュートリアルMesh 101を試す その3(アバターがワープ可能な床の設定)

本日はMicrosoftMeshの小ネタ枠です。
Meshの環境作成チュートリアルMesh 101を試した内容を記事にします。
今回はアバターがワープ可能な床の設定です。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

Meshアバターの移動手段

Meshアバターは以下の移動制限のもと、コライダーが設定された床の上を歩行できます。

最大歩行可能勾配: <45度
最大ステップ高さ: 0.3
アバター カプセルの半径: 0.3
アバター カプセルの高さ: 2
アバターの高さ: 1.8

learn.microsoft.com

このほか、テレポート機能を利用してMeshアバターは任意の遠距離の床に直接移動することができます。
ただしテレポートを利用するには対象の床に適切なレイヤー設定がなされている必要があります。
learn.microsoft.com

アバターがワープ可能な床の設定

テレポートを利用するには対象の床にGroundCollisionレイヤーが設定されている必要があります。
Starting Point.unityの初期状態では開始地点の床オブジェクトのレイヤーが[GroundCollision]に設定されています。

シーンを再生してテレポート機能を試してみます。
エディター上ではマウスの右クリックを押したまま左クリックを行うとポインターした場所にテレポートすることができます。

試しに床オブジェクトのレイヤーを[Default]に変更してみます。

この状態でシーンを再生してテレポート機能を試してみます。
テレポートを試そうとするとポインターが赤色表示になり、レイヤーが[Default]の床にはテレポートが利用できないことが分かります。

次回はビジュアルスクリプトを使って動画を再生するボタンを作成します。
bluebirdofoz.hatenablog.com

Meshの環境作成チュートリアルMesh 101を試す その2(シミュレーション環境の構築とサムネイルカメラの設定)

本日はMicrosoftMeshの小ネタ枠です。
Meshの環境作成チュートリアルMesh 101を試した内容を記事にします。
今回はシミュレーション環境の構築とサムネイルカメラの設定です。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

シミュレーション環境の構築

Start Point.unityのシーンを開きます。
初めにシミュレーション環境の構築を行ってみます。

エディター上で環境の動作確認を行いたい場合はMeshEmulatorSetup [NoUpload].prefabがシーンに配置されている必要があります。

Packages/Microsoft Mesh Toolkit/mesh.toolkit.emulator/Prefabs/MeshEmulatorSetup [NoUpload].prefab

[initial Screen Count]の変数でシミュレーションする接続人数を指定できます。
1 を指定すると単独のアバターで動作確認を行います。

複数人でシーンの同期を確認したい場合には 2 以上を指定して別のアバターには環境がどのように同期されるかを確認することもできます。


サムネイルカメラの設定

サムネイルカメラを設定すると、環境をMeshページにアップロードした際に自動でサムネイル画像を生成してくれます。
Hierarchy上で右クリックから[Mesh Toolkit -> Thumbnail Camera]を選択してカメラオブジェクトを作成します。

追加されたMeshThumbnailCameraオブジェクトを選択すると、Scene画面にプレビューが表示されます。
例えば風力タービンを映したサムネイルを生成したい場合は以下の通りTransformを設定します。

Position X:8.3, Y:64.7, Z:44.2
Rotation X:22.8, Y:-37.3, Z:3.1

これでシミュレーション環境の構築とサムネイルカメラの設定は完了です。
次回はアバターがワープ可能な床の設定を行います。
bluebirdofoz.hatenablog.com

Meshの環境作成チュートリアルMesh 101を試す その1(Mesh101の取得)

本日はMicrosoftMeshの小ネタ枠です。
Meshの環境作成チュートリアルMesh 101を試した内容を記事にします。

Mesh 101

Mesh 101 チュートリアルはUnityプロジェクトでMesh環境を構築する方法を学ぶためのチュートリアルです。
Meshへの相互作用の追加や物理演算、ビジュアルスクリプトの設定などの機能について理解できます。
learn.microsoft.com

Meshサンプルのダウンロード

以下のGitHubプロジェクトをクローンして取得するか、Zipファイルでプロジェクトをダウンロードします。
今回は[Download ZIP]からzipファイルをダウンロードしました。
github.com

ダウンロードしたMesh-Toolkit-Unity-main.zipファイルを適当なフォルダに展開します。

解凍フォルダ直下に、フォルダ毎にサンプルシーンが分けられています。
今回はMesh 101を利用します。

Unity 2022.3.7f1のインストール

MeshサンプルはUnity 2022.3.7f1で作成されています。該当バージョンのUnityのインストールが必要です。
以下のアーカイブページからインストールを実行してください。
unity.com

PC向けとQuest向けのシーンをビルドするため、インストール時に以下のモジュールを選択します。
Android Build Support
Windows Build Support (IL2CPP)


Meshサンプルを開く

UnityHubを起動し、Meshサンプルを開きます。
[Add project from disk]から先ほど展開したフォルダを指定してプロジェクトを開きます。

プロジェクトが開いたらシーンを開いてサンプルを確認します。Mesh 101では以下のシーンファイルが用意されています。

Assets/Starting Point.unity:チュートリアル用の一部構成が未了になっているシーン
Assets/Finished Project.unity:正確な完成のシーン

Finished Project.unityのシーンを開いてエディターの[再生]ボタンを押すと、完成版のイベント会場を歩き回って動作を確認できます。

次回からはStarting Point.unityのシーンを用いてMesh環境を構築する方法を学んでいきます。
次の記事はシミュレーション環境の構築とサムネイルカメラの設定です。
bluebirdofoz.hatenablog.com

新しいプロジェクトでMicrosoftMeshのイベント会場の作成を試す その3(環境のアップロード)

本日はMicrosoftMeshの小ネタ枠です。
新しいプロジェクトでMicrosoftMeshのイベント会場を作成する手順についてです。
今回は環境のアップロードについてです。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

コレクションの作成

イベント会場をアップロードするにはあらかじめMeshポータルでコレクションを作成する必要があります。
以下のMeshポータルにログインして[コレクション]タブを開きます。
mesh.cloud.microsoft

コレクション画面が開くので[コレクションの作成]ボタンをクリックします。

作成するコレクションの名前とプライバシー設定を設定して[コレクションの作成]を実行します。
コレクションはイベント会場の環境やテンプレートを保存しておく枠組みになります。

これでコレクションが作成できました。

イベント会場のアップロード

メニューから[Mesh Toolkit -> Environments]を開きます。
先ほどコレクションを作成したMSアカウントで[Sign in]を行います。

新しいイベント会場をアップロードする場合、初めに[Create Environment]タブを開きます。
入力欄から以下の項目を入力して[Create Environment]をクリックします。
・Internal Name:会場名
・Description:説明文
・Environment collection:追加先のコレクション
・Capacity:入場可能人数

完了後、[Update Environment]タブを開くとイベント会場の情報が追加されています。
[Select a scene]をクリックし、会場として利用するシーンファイルを指定します。

次にビルドターゲットを指定します。PC向けまたはAndroid(Quest)向け、あるいはその両方が指定できます。
設定が完了したら[Build & Publish]ボタンを押すと、会場のビルドとアップロードが開始されます。

処理が完了すると以下の結果ダイアログが表示されます。これで会場のアップロードは完了です。

Meshポータルから作成したコレクションを確認すると、[環境]一覧でアップロードした会場が確認できます。

新しいプロジェクトでMicrosoftMeshのイベント会場の作成を試す その2(シーンの基本構築)

本日はMicrosoftMeshの小ネタ枠です。
新しいプロジェクトでMicrosoftMeshのイベント会場を作成する手順についてです。
今回はシーンの基本構築についてです。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

シーンの構築

以下のような会場のベースとなるシーンを基本オブジェクトの組み合わせで作成しました。

トラベルポイントを作成する

トラベルポイントはイベントに参加するアバターが配置される場所を定義します。
MeshToolkitをインポートしていると、Hierarchy上で右クリックから[Mesh Toolkit -> Travel Point Group]を選択できます。

TravelPointGroupオブジェクトが作成されます。
アバターをスポーンさせたい位置に子オブジェクトの TravelPoint を移動します。

トラベルポイントを設定していない場合はシーンの原点(X:0,Y:0,Z:0)にアバターがスポーンすることになります。
またGroupは複数作成することができ、この場合は特定のGroupをデフォルトのスポーングループとして指定する必要があります。
learn.microsoft.com

サムネイルの撮影カメラを設定する

サムネイルカメラを設定すると、会場をアップロードするたびに自動でサムネイル画像を生成してくれます。
Hierarchy上で右クリックから[Mesh Toolkit -> Thumbnail Camera]を選択してカメラオブジェクトを作成します。

[Scene]画面を開き、カメラオブジェクトを選択するとプレビューを確認できます。
Transformを調整して任意の位置にします。

サムネイルカメラを設定していない場合は原点(X:0,Y:0,Z:0)からの視点がサムネイルとして撮影されます。
learn.microsoft.com

エミュレーションモードを利用する

エミュレーションモードを利用すると、エディター上でシーンの動作確認を行うことができます。
エディターの[再生]ボタンをクリックします。

シーンにエミュレーションモードの設定がされていない場合、以下のセットアップダイアログが表示されます。
[Add MeshEmulatorSetup prefab]をクリックするとエミュレーションモードの設定が行われます。

エミュレーションモードではWASDキーの操作でシーンの中を歩き回ったり、コンテンツを試すことができます。

一度セットアップを行うとHierarchyに[MeshEmulatorSetup]オブジェクトが追加され、以降は[再生]すると自動でエミュレーションモードが利用できます。

セットアップダイアログで[Add dummy ...]の方を選択するとダミーオブジェクトが追加されます。
この場合、エミュレーションモードは有効にならず、また以降のセットアップダイアログの表示も行われなくなります。
learn.microsoft.com

次回は環境のアップロードの手順です。
bluebirdofoz.hatenablog.com

新しいプロジェクトでMicrosoftMeshのイベント会場の作成を試す その1(MeshToolkitパッケージのインポート)

本日はMicrosoftMeshの小ネタ枠です。
新しいプロジェクトでMicrosoftMeshのイベント会場を作成する手順についてです。

MeshToolkit

MeshToolkitパッケージを利用すると新しいプロジェクトからMeshのイベント会場を構築することができます。
環境の開発、イテレーション、パフォーマンスの最適化、公開を制御できるほか、環境に対話型コンテンツを追加したり、ロジックを挿入することもできます。
learn.microsoft.com

Unityプロジェクトの作成

[3D (URP)]のテンプレートを使用し、[Create Project]で新しいUnityプロジェクトを作成します。

生成されたUnityプロジェクトの[Global Volume]オブジェクトを右クリックから[Delete]で削除します。

シーンは任意の名前で保存します。

MeshToolkitパッケージのインポート

PackageManagerでMeshToolkitパッケージをインポートします。
メニューから[Edit -> Project Settings]を開き、Project Settingsダイアログの[Pakcage Manager]タブを開きます。

[Scoped Registries]に以下の参照を追加して[Save]します。

Name:任意の名前
URL:https://registry.npmjs.org
Scope:com.microsoft

次にメニューから[Window -> Package Manager]を開きます。

[Packages]のプルダウンを開き、[My Registries]を選択します。

一覧に[Microsoft Mesh Toolkit]が表示されるので、これを選択して[Install]します。

MeshToolkitをインポートすると、以下のMesh向けプロジェクト設定を行うダイアログが表示されます。
[Apply Project Settings]を選択して設定を反映します。

本設定を行うと以下の設定が行われます。
・PCまたはAndroidの[XR Plugi-in]で[OpenXR]が選択される
・TextMeshProがインポートされる

Tips

PackageManagerの一覧に表示されるMicrosoft Mesh Toolkit(Preview)パッケージの方は開発者向けのプレビュービルドです。
安定バージョンのMicrosoft Mesh Toolkitと互換性がないため、使用する際は注意が必要です。

次回はシーンの基本構築の手順です。
bluebirdofoz.hatenablog.com

UnityでUnity glTFastを使ってGLBファイルを取り込む

本日はUnityの小ネタ枠です。
UnityでUnity glTFastを使ってGLBファイルを取り込む方法についてです。

Unity glTFast

Unity glTFastはglTF形式のファイルをサポートするためのパッケージです。
元々OSSで開発されていたパッケージですが、現在はUnity公式パッケージとしてサポートされるようになりました。
docs.unity3d.com

Unity glTFastのインポート

glTFastを利用するにはPackageManagerから取得する必要があります。
メニューから[Window -> Package Manager]を開きます。

Package Managerダイアログの[+]ボタンのプルダウンを開き、[Add package by name...]を選択します。

パッケージ名の入力欄に以下のパッケージ名を指定し、[Add]を実行します。

com.unity.cloud.gltfast

これでUnity glTFastのインポートは完了です。

glbファイルを取り込む

Unity glTFastをインポートしていればAssetsフォルダにglbファイルをドラッグするだけで3Dモデルをプロジェクトに取り込むことができます。

取り込んだ3Dモデルはそのまま[Hierarchy]にドラッグしてシーンに配置することができます。

glbファイルを書き出す

Unity glTFastをインポートしていればGameObjectをglbファイルとして書き出すことができます。
AssetsフォルダのPrefabファイルを右クリックして[Export glTF -> glTF-Binary (.glb)]を実行します。

出力したglbファイルをBlenderで確認すると以下の通り3Dモデルを確認できます。

再生中のGameObjectを書き出す

エクスポートはシーン再生中の[Hierarcy]にも対応しています。
以下のようなシーンを再生するとCubeが落下するシーンを作成しました。

シーンを再生し、出力したい[Hierarchy]上のGameObjectを任意のタイミングで右クリックして[Export glTF -> glTF-Binary (.glb)]を実行します。

すると以下の通り、出力したタイミングの状態でglbファイルが出力されます。