リアルとバーチャルの隙間へ！NeosVR

![20201209204853_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267192/c3d92923-b026-c5ab-44b8-a6b9dcd15d30.jpeg)

こんにちは、あすかです。
[【みんなのITもくもく会】自己紹介 Advent Calendar 2020](https://adventar.org/calendars/5679) の14日目の記事です。

思い返してみればエンジニアになって東京に引っ越してきてから5年くらい経ちますが、長い文章は本当にたまにしか書かなくなっていました。
ちゃんとしたブログ記事を書くのは本当に久しぶりで、ましてアドベントカレンダーは初めてです♪

ずっと前からアドベントカレンダーはやってみたいなぁと思っていました！
もくもく会に来てくださる皆さんと一緒に記事が書けて本当に嬉しいです☆（ギリギリの告知だったのに一緒に記事を書いてくださる皆さん、本当にありがとうございます！）

本当はガッツリ技術系の記事を書こうと思って準備をしていたのですが、突然ハマってしまったものがあるのでそちらをご紹介することにします（笑）
今日は VR ネタです！（そんな技術的な内容じゃないです…！）

## NeosVR って何？

Global Game Jam（GGJ）と言う、みんなでよってたかってゲームを作って遊ぶ開発イベントが毎年1月末に世界各地の会場で開催されているのですが、このイベントは大好きで毎年参加しています（前回はホログラムディスプレイの [Looking Glass](https://lookingglassfactory.com/) で遊ばせてもらいました）。
来年はコロナの影響でオンライン開催になるとのこと。
いつもお世話になっている会場もオンライン開催になるのですが、てっきり Zoom とか Slack とかでオンラインで繋いでやるのかなと思っていたら、**まさかの NeosVR 上での開催になりました。**
ん…？待って！NeosVR って、何それ！

## Unity のシーンの中に自分が入っちゃう…？

実は NeosVR という単語を聞いたこともなかったので（笑）急いでググってみたら何やら面白そう！

[NeosVR 公式サイト](https://neos.com/)

cluster とか VRChat とかそれ系なのかなとふわっと思っていたら、ちょっと違うみたい。

> 「複数人でVRで世界を創るツール」
> 「超多機能版VRChat？」
> 「箱と箱をつないでVR空間でプログラミング」

えー、何これ、楽しそう！！

cluster も VRChat もバーチャル空間上に複数のプレイヤーがリアルタイムに集まって遊べるプラットフォームですが、**NeosVR の一番の特徴はバーチャル空間上で何でも作れること。**

cluster や VRChat もワールド（バーチャル空間のデザイン）は自分で作ることができますが Unity で作る必要があります。
NeosVR の場合、**Unity でシーンを作成しているまさにそのエディタの中に自分が入って作業している感じ…！**

cluster も VRChat もやってみたことがありますが、このNeosVR の自分の指先ひとつで目の前でオブジェクトを生み出したり消したり、大きくしたり小さくしたりという体験はちょっとした感動がありました。
現実世界とバーチャルな世界が対等に存在するような未来が来るとしたら、バーチャルな世界はこんな感じなのかな、と思えるくらい。
NeosVR の中ならバーチャルで暮らせるよ…！！

![20201209201928_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267192/a256ea94-8b37-a348-1a72-5a60b27d78dc.jpeg)

なんだか褒めてばかりですが（笑）、NeosVR は現在も開発が進行中でまだまだこれからな部分もあります。


## NeosVR でできること

#### プレイヤー同士のコミュニケーション機能はひと通り完備
自分自身を表すアバターを表示したり、ワールド内を歩き回ったり。メッセージの送受信やボイチャでコミュニケーションを取る、などひと通りのことはできるようになっています。

#### オブジェクトをバーチャル空間上に自由に置くこと
ワールドを作ったり、オブジェクトを自由に置いたり、FBX をインポートしてマテリアルを貼ったり、空中に絵を書いたり…、何かをバーチャル空間上に配置することは自由にできます。
もちろん複数人プレイヤーで共同で作れます！

#### 日本語対応
インストールした最初から UI が日本語表示で何気に有り難いです。

#### オブジェクトにスクリプトが貼り付けられる
これですこれ…！Unity でいうところのスクリプトをオブジェクトにくっつけるアレと全く同じです。
どんな感じでスクリプトがくっついているかというと、こんな感じ。

![](https://image01.seesaawiki.jp/n/o/neosvrjp-memo/dWHgWQaFS6.35.11.jpg)
[NeosVR 日本語 Wiki から引用](https://neosvrjp.memo.wiki/d/LogiX%a4%f2%a5%aa%a5%d6%a5%b8%a5%a7%a5%af%a5%c8%a4%cb%c0%df%c4%ea%a4%b7%a4%e8%a4%a6%a1%aa)

**スクリプトと言っても NeosVR 内でコードを書く訳ではなく、Logix というノードベースのプログラミング環境を使ってロジックを組み立てます。**
画像の右下あたりにつながっている3つのノードがそれで、バーチャル空間上でノードを繋いでプログラムを組んでいきます。

普段はノードベースの環境はなんだかまどろっこしいな…、コードで書きたいな…と思っている派なのですが（笑）、これはこれで面白そうなのでこれから触っていきたいです。
このノード、その場にいる他の人からも見えますしね！

#### Logix から WebAPI が簡単に叩ける…らしい！
なんとなんと…、WebAPI が叩けるらしいのです！
> NeosVRは、LogiXというプログラミングツールを使って、HTTP GET／POSTやWebSocketをVR内でプログラミングできるため、NeosVRの外にあるAPIや、WebSocket対応しているシステムもしくは機器とカンタンに接続できます
[NeosVR＋Elixirで気軽にVR WebSocketプログラミング（VR |> AR投影アプリの裏側） - Qiita](https://qiita.com/piacerex/items/4d8b23d99434d5a841ca#%E5%8F%82%E8%80%83vr--ar%E6%8A%95%E5%BD%B1%E3%82%A2%E3%83%97%E3%83%AA)

まだ実際に API を叩くところまでは試せていないのですが…、**WebAPI 叩けるなら何でもできちゃうじゃん！！**
引用させていただいた上記の記事の方も、**NeosVR 内のオブジェクトを現実空間に AR 表示したり**といったとっても面白いことをされていて、わくわくしてきちゃいます。

## NeosVR でまだできないこと

#### ~~バーチャル空間上でブラウザを表示~~
ブラウザが見られないのはかなり辛いです（笑）
基本的な操作方法のチュートリアルは NeosVR 内にありましたが、その他のたくさんの機能についてはネットで調べる必要があります。
NeosVR 上で何か分からないことがある度に HMD を脱いでネットで調べて、また HMD をかぶって…という流れが結構大変でした。
でも今後の実装予定に入っているようなので、今後に期待したいです（切実！）。

（12/20 追記）Twitterで教えていただいたのですが、できるそうです…！！やった！実際にやってみてからまた詳細を追記したいと思います。

#### 物理演算と当たり判定（コライダ）
実は現状は物理演算が効いていないです。
オブジェクトを置いたら空中に置きっぱなしになっています（もしかしたら自前でやっているところもあるのかも…？）。
物理演算をオンオフできるようになるともっとぐっと現実の感覚に近づきますね。
こちらも実装予定とのこと。

#### メッシュの編集
メッシュの編集ができたら本当に最強です…！
現状は 3D オブジェクトは Maya や Blender など他の 3D ソフトを使って作る必要がありますが、NeosVR 上でメッシュの編集ができるとなったらそれすら必要無くなります。
自由に形を作って Logix と組み合わせて、Houdini のようにプロシージャルに造形することもできるかも…！

もちろん精度や機能、クオリティの面で専用ソフトには敵わないかもしれませんが、それでもやれることの幅がぐっと広がりますね。
こちらも実装予定となっています…が、結構ハードル高そうです。

## Oculus Quest2 x NeosVR のプレイ環境

プレイ環境について少しだけ触れておきます。
Oculus Rift S のような PC 接続型の HMD と PC でプレイするのが通常のアプローチのようなのですが、手持ちの HMD が Oculus Quest2 しかなかったのでわたしは Quest2 でプレイしています。

NeosVR 自体は Steam で PC 版が配信されているのと、Quest Store から入手できる Quest 版もあるようです（Quest 版は未体験）。

Quest2 ではそのままでは PC 版の VR アプリは実行できないので、1万円の Oculus Link ケーブルで PC と接続するか、Virtual Desktop などのアプリを使用することになります。
わたしの場合は、Quest2 と PC を無線で繋ぎたかったので Virtual Desktop アプリを使っています。
ネットワークの都合なのかよく固まっちゃいますけどね…（笑）

## まとめ

わたしも知ったばかりなので試せていない部分が多いのですが、NeosVR でやってみたいことがたくさんあります！
差し当たっては Logix から WebAPI 叩けるところまでいきたいなぁ。
来年の GGJ が本当に楽しみです！

NeosVR 内で使える通貨もあるようで、イーサリアムのネットワーク上で取引可能とのこと。うーむ、仮想通貨全然分からない（笑）
でもこれを機にプラットフォーム内でどんな風に仮想通貨が使われているのかも知ることができたら楽しみが広がりそうです。

あまり自己紹介になっていませんが（笑）、VR とか新しそうなことが大好きです♪
アドベントカレンダー、次の記事は~~明後日のぺのてあさんかな？~~急遽明日、瀬尾さんにエントリいただいたので、よろしくお願いします☆

（もし内容に間違いなどありましたらご指摘いただけるととても嬉しいです！）

## 参考
- [NeosVR日本語Wiki](https://neosvrjp.memo.wiki/)
  - とにもかくにも最初はここから
- [NeosVR開発用メモ書き](https://neoslogix.memo.wiki/)
  - とても役に立った実用的な切り口のメモ