Hero

Clusterで遊んでみた

Date: 2021/08/15 10:04

Category: none

はじめに

クラスターの発生を避けるため、三密を避けるように世の中では叫ばれている。
その一方で、クラスターを作ることが許されている世界がある。

それはバーチャルなネットの世界だ。
ネットの世界では、密になろうが、大声で叫ぼうが問題はないハズ。
今回はそんなclusterという名のバーチャルSNSで遊んでみた話をしてみようと思う。

cluster

clusterとは、誰でも手軽にバーチャルルームを作ることができるwebサービスである。
アニメ、Sord Art Online (SAO)のバーチャルイベントが行われたり、アーティストのバーチャルライブが見られたりする。この世界では、人々は自分で作成した、もしくは用意したアバターとなり、他のアバターと騒いだり飛び跳ねたり、走り回ったりすることができる。ボイスチャットもできるし、場所によっては物を使うこともできたりする。
最近はauがバーチャル原宿バーチャル渋谷なども展開しており、まぁ、とくに何もないんだけど、確かにそこには原宿やら渋谷が再現されているような気がする。(現実世界でもあまり行かないところのバーチャル世界にあまりワクワクは感じられなかった...)

とあるバーチャルルームにて

バーチャルな世界を作りたい!

こんな世界、自分でも作れるようになりたい!なんて思うのはみんなが通る道だと信じたい。

clusterでバーチャルな世界を作るには、3Dゲームを一度はやったことがある人ならおなじみのUnityを使う必要がある。
clusterの開発者向けチュートリアルを読みながら、Cluster Creator KitなるものとUnityをインストールした。

その後、チュートリアルにしたがって、バーチャル世界に物を置くということをひたすら試したが、
Unityに慣れていないとこれがなかなか難しい。
結局、サンプルで用意されている建物が宙に浮いたままになってしまったり、地面に埋まってしまったり、とほとんど何もできなかったに等しい。

宙に浮く小屋を眺めている状況

とはいえ、これはきっと、Unityに慣れていないせいだ!と思うことにし、Unityに慣れる為の作戦に切り替えた。
今日からはじめるUnityという記事を読みながら、ブロック崩しをUnityで作成した。

結果出来上がったものをせっかくだからここに示しておこう。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">せっかく作ったので... <a href="https://t.co/5SrZBdyhYQ">pic.twitter.com/5SrZBdyhYQ</a></p>&mdash; Blackcat🌧b0f87aca-ad78-41b5-f8bf-8f4a5e9339e8 (@myblackcat7112) <a href="https://twitter.com/myblackcat7112/status/1424688822973984770?ref_src=twsrc%5Etfw">August 9, 2021</a></blockquote>

このゲーム作成は、C#で行ったのだが、Objectに直接イベントが発生した時の処理や常にやることを指示する感じが、オブジェクト中心のプログラミングって感じがして直感的で面白かった。

Unityを使って、長方形のオブジェクトを組み合わせて箱を作成し、その中に、球とそれを弾く用の板を用意する。そして当たり判定付きのブロックをforループで実体化し、ゲームスタートと同時に球が出てくるのを弾き、球が箱の壁に当たってしまうか、ブロックが全部消滅するか、といった感じである。

開発画面

黒い底の板には、当たり判定が設定されていて、球は下に落ちないようになっている(板をすり抜けない)
また、この板自体は、元々はただの厚みを持った長方形だが、そこに色・質感を追加することでこのようなオブジェクトになっている。このようにUnityでは、生成したObjectに、プログラムや他の性質(componentと呼ばれている)をアタッチしてリッチな表現を可能にするらしい。

ちなみにこの球には反発係数1、底の板には摩擦係数0も設定されており、物理的にはありえない空間になっている。

上は反発係数1・摩擦係数0のComponent, 下は底の板に黒い質感を定義したComponentがアタッチされている様子

バーチャルな世界であそべればいいや...

Unityでゲームを作ってみたものの、Unity世界で正確にオブジェクトを配置するのは難しい、ということで、
せめてclusterで遊ぼうということになった。

でも、自分のアバターがいいよねーっていうのもあり、また苦戦する...

clusterでは実は外部のサービスで作成したアバターをインポートし、それを用いて遊ぶことができる。
ただし、そのアバターをどうやって作るかが問題となってくる。

アバターはアップロードできる

最初にやったのが、VRoidMobileという、VRアバターをスマホで作成することができるサービスである。
このサービスは、サンプルのアバターの服を着せ替えたり、アバターの顔などのパーツを調整したりして、理想のアバターを作成するものである。
そして、このサービスに対して勘違いしていたことは、
このサービスで作成したアバターは、一緒に写真を撮ったり、既に用意されているVR空間に入ってみたりという、目的でしか使えないということである。

結局、ここで作成したアバターをVRoidで確認することもできるし、インポートに必要なVRMファイルもダウンロードできるのだが、cluster側の制約上、このファイルのままではインポートできない。

どうやら、モデルのパーツなどを構成するパーツ数が多すぎるとダメなようだ。

そこで、VRoidStudioという、アバター作成ソフトを使ってみることにした。
ただし、デジタルでもアナログでも絵心はないので、サンプルアバターをカスタマイズして、オリジナルを作る作戦である。

プロはここでテクスチャをいじりながら、細かいところを調整しているんだろうな。

プロはこっち

3Dキャラデザとかやったことがないので、衣服等の基本色・かげ色をいじる程度である。

素人はこっち

ここらへんをいじって、アバターをエクスポートした。

エクスポート!

という過程を経てようやく、clusterでオリジナルアバターを使うことができるのだ。
少し頭髪のモデルが簡潔化されすぎていて、動くとハゲが気になる... やっちまった...

おわりに

clusterというVR SNSというもので遊んでみた。
ついでにclusterの世界を作る、Unityの練習でブロック崩しゲーム、アバターをつくる、というところもやってみた。
いつか、バーチャルな世界を自由自在に作れるようになりたい...

Hero

まさき。です。PHPエンジニアをやってます。

自分の課題を技術で乗り越えるの好きかもしれないです。

フロントエンドは苦手ですが、少しでもできるようになれたらな、ということでNextJSでこのブログサイトを作りました。