![見出し画像](https://assets.st-note.com/production/uploads/images/63525386/rectangle_large_type_2_af942d725c6701183bd4e78af4e71c2f.png?width=1200)
インターンが1カ月でVR版REALITYを作ってみた
はじめまして、REALITY株式会社でインターンとして参加したtoutou(とうとう)です。
REALITYでは未来のUX開発を担当するVR Studio LaboratoryやVTuber番組を制作するREALITY XR Cloudがありますが、今回はREALITYアプリ開発チーム側からのトライアルとして、上長の漫喫さんとVR版REALITYを実装した話をインターン参加の経緯を交えつつ紹介していきます。
注意:この記事はデモとしてVR機能を実装した話であり、将来VR版REALITYがリリースされることを約束するものではありません。
こんな感じになりました!!!
インターン参加の経緯
私は研究や趣味で日常的にVRに触れていますが改めてVRのどんなところが好きなんでしょうか。VRChatでのケモミミアバターを通したモフモフコミュニケーションの楽しさ、そこから生まれるコミュニティの暖かさ、人に呈示する刺激を制御することで感じ方を操作できる面白さなどにVRの魅力を感じているんだと思います。
こんな私が将来の仕事を考えたときにVRの普及に携わりたい、普及させるぞという強い気持ちを持つようになりました。
私はVRが世の中に広く普及するには既存のスマホプラットフォームからのスムーズな移行が重要だと考えています。また、メタバースを目指すREALITYは数百万規模のスマホユーザーを抱えており、VR版を実現することができれば、スマホからVRへの導線がばっちりになるんじゃないかと感じていました。これがREALITYのインターンに参加しVRSNSをつくってみたいと思った経緯です。
開発の目的
・現時点のREALITYをVR化するとどんな感じになるのかを体験する。
・VR版REALITYを偉い人に体験してもらい楽しそうなことを伝える。
実装した機能
・アバターを着て手や指を動かす
・自由に移動できる
・コラボ配信や視聴
・ギフトを掴んで投げられる
・スマホとOculus Questのクロスプラットフォーム
・本番環境の配信(実際にユーザーの皆様が行なっている配信)の視聴
・音声の受信再生
↓は4人でコラボしてる様子です
VR的な実装と工夫
既存のアプリをベースにVR機能を追加しました。ここでは既存の実装については割愛しVR版特有の実装の話をしていきます。
既存の実装について気になる方はこちらの【REALITY×Mirrativ Tech Talk】音声・モーション配信とアバター・ギフトほかについて【勉強会レポ】が参考になると思います。
複数アバターの位置情報の送受信
大体の送受信の仕組みは下図のようになっています。
OVRCameraRig (OculusIntegrationに含まれるprefab)の配下にHMD(Head Mounted Display)やコントローラの位置・角度を補正したTargetを配置し、そのGlobal Position , Rotationをアバター本体が配置されたLocalAvatar(ローカルのトラッキング結果をうけとるアバター部)配下のVirtualTrackerに入れてあげます。VirtualTrackerのLocal Position , Rotationはprotobufに詰め込みWebSocketで送信します。送信相手の手元では、受信したLocal Position , Rotationの値をRemoteAvatar(サーバを経由したモーション情報を受け取るアバター部)配下のVirtualTrackerに反映し、それをもとにVR IK(Final IKのVR向けコンポーネント)でアバターを動かします。
ハプティクスや効果音
VR空間での没入感を高めるためには多感覚の空間的・時間的一致が有効だと知られています。今回はREALITYのギフトを掴んだ瞬間に振動や効果音を付けてその場に自分がいる感覚やギフトがその場にある感覚が高まるような工夫をしています。
VR内でのスマホ
視聴時にはスマホが手元にあり配信画面を確認することができます。
あとがき
開発当初はたったの20日ぐらいでほんとにVR版REALITYがつくれるかどうか不安で仕方がなかったです。普段研究でC#のコードを書いているとはいえ、プロダクトコードに触った経験がなく、Zenject, UniRx, UniTaskなどのライブラリやMVPアーキテクチャなど、なんとなく知ってるけど使ったことないみたいな感じからのスタートでした。最初は必死に設計資料だったり、コードを読み漁っていました。いろいろなオンボーディングでたくさん質問したり、slackで理解の具合を垂れ流してながらUnityチームのメンバーに助言をもらったりでなんとか全体像を把握していきました。そのおかげで2週目くらいからは2日で1機能くらいのノリでどんどん実装していけました。
REALITYではドキュメントを残す文化はもちろんのこと、Slackでのオープンな文化、毎週のわくわくさせるミーティング、愉快な先輩社員の皆様のおかげで充実した開発を進められる環境です。また物理オフィスではデモを試してもらうと「これいいね!」みたいなフィードバックがもらえたり、応援してくださる方々がいたりで頑張るぞ!という気持ちになりました。
いやぁほんとにとても楽しかったです。漫喫さんをはじめ、ようてんさんやUnityチーム、気にかけてくださった先輩社員の皆様ありがとうございました!
最後に、REALITYのアバター可愛すぎる....... モフモフケモミミ最高!