clusterのバーチャルワールドを作る


clusterは日本の会社が運営するメタバースプラットフォームで、VRChatよりもインターフェースが明快で、 ワールド作成も簡単にでき、アカウントを作ってすぐにワールドをアップロードできる。


カスタムワールドを作る

Unity Download Archive から、Unity2019.4.22f1をモジュール追加してインストールする。
Unity Hubでインストール>エディターをインストールを選ぶ。

Unity Hubでアーカイブを選び、ダウンロードアーカイブのリンクに飛ぶ。


2019.4.22f1を選び、UnityHubボタンを押す。

各プラットフォームのモジュールを入れる。
  1. Android Build Support
  2. iOS Build Support
  3. Mac Build Support (Mono)



SDKによる作成は現在非推奨ということで、テンプレートプロジェクトを使ってワールドを作る。
https://github.com/ClusterVR/ClusterCreatorKitTemplate
テンプレートプロジェクト(ClusterCreatorKitTemplate-master)をダウンロードして、UnityHubに追加して開く。
clusterのバーチャルワールドの要件となるオブジェクトをSceneに追加する必要がある。
ヒエラルキーの+からGameObjectを作成し「Inspector」の「Add Component」で オブジェクトに必要なコンポーネントを追加する。
  1. SpawnPoint(プレイヤーが入室時に出現するポイント)
  2. DespawnHeight(落下した時にプレイヤーが消滅する高さ)
  3. Collider(衝突可能なオブジェクト)


SpawnPoint(プレイヤーが入室時に出現するポイント)

SpawnPointを複数設置すると出現位置がランダムに変わる。
ヒエラルキーの+から空のオブジェクト作成し、出現させたい場所に配置する。
名前はわかりやすく変更し、SpawnPointというC#コンポーネントを追加する。

DespawnHeight(落下した時にプレイヤーが消滅する高さ)

プレイヤーがこのDespawnHeightよりも低い位置まで移動すると消滅し、 SpawnPointから再び出現する。
ヒエラルキーの+から空のオブジェクトを配置して、消失させる限界高さに配置する。
名前を変更し、DespawnHeightというC#コンポーネントを付ける。

Collider(衝突可能なオブジェクト)

床、足場に相当するオブジェクトにColliderコンポーネントを設定する。
CubeやPlaneオブジェクトを床面として配置すればColliderコンポーネントは最初からついている。

足元にColliderコンポーネントが設定されたオブジェクトがあれば重力に抗してその場に留まるが、 Colliderコンポーネントが無い場所ではプレイヤーは落下を続ける。
DespawnHeightに到達すると消滅してSpawnPointから再び出現する。

作ったワールドの実行

作ったワールドはローカル環境でプレビューできる。


作ったワールドのアップロード

作ったワールドをアップロードして確認する。

アップロードするにはTokenという認証コードが必要。

Tokenは、Webアカウントに入って作成する。
作成したTokenの文字列をコピーして、Unityのダイヤログにペーストする。







error
DXT1 compressed textures are not supported when publishing to iPhone Resources/...
というエラーが出た。
clusterのガイドには、Resources > unity_builtin_extra のフォルダ下にあるDefault-Checker-GrayなどDXT1形式の テクスチャーはiOSで利用できないため、使わないようにするとある。
Default-Checker-Grayの場合はTiffからPNGに変換したらエラーがでなくなった。
大量のテクスチャの場合、インポートセッティングを変更すると解決する。
Assetsの該当テクスチャーを全て選択してインスペクターを開く。
default設定は圧縮は自動選択するようになっている。
iOSの独自設定はグレーアウトされているので、設定のオーバーライドを選択し内容で適用する。

アイテム

Movable Item

このコンポーネントを付けると、動かせるようになる。
自動でRrigidbodyも付く。

Grabbable Item

このコンポーネントを付けると、掴めるようになる。
自動でMovable Item、Rrigidbodyも付く。
Grabbable Itemコンポーネントを付けたオブジェクトの子供の位置にある(空の)オブジェクトを Gripとして指定すると、そのトランスフォームの位置と方向で掴む。
Gripを設定しない場合は、指定したポイントで掴む。

Ridable Item

乗れる(座れる)ようになる。
⇔ Character Item

Seat

SeatのTransform座標に、PlayerのHipボーンが位置と方向で一致する。

Exit

このTransformで降りるときの場所と方向を指定する。
ExitはRidable Itemコンポーネントを付けたオブジェクトの子供でなくてもよい。

Cluster Template ProjectにあるVehicle サンプルにはCarプレファブがある。
これは昔のUnity Standard AssetsにあるCarシーンにも使っているWheel Colliderが使われている。


Cluster ワールドにアップロードしPCデスクトップモードで動作テスト


VRでの動作テスト

Mirror

Create>3Dobject>Mirror - cluster

ワールドにミラーを置けば、VR(1人称視点)でも自分の姿を確認できる。

Warp

テンプレートサンプルの中にWarpGateToTheEntranceというプレファブがあるのでシーンにロードして使う。
WarpGateToTheEntranceの、WarpGateにPlayerEnterWarpStageというスクリプトがあり、Targetに行き先を設定する。

Targetになる行き先はEmptyObjectで、識別のため名前とアイコンを設定する。

WarpGateToTheEntranceのコライダーに進入すると、行き先に飛ぶ。
屋根の上など歩いて行きにくい場所に行ける。



非公開のワールドは自分しか行けないが、マイイベントの会場に使用できるので人を呼ぶことができる。