2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
XR Interaction Toolkit 1.0.0-pre で VR 開発してみよう(全1記事)
リンクをコピー
記事をブックマーク
初鹿デニック氏(以下、初鹿):「XR Interaction Toolkit 1.0.0-preでVR開発してみよう」という題で発表します。よろしくお願いします。
自己紹介です。名前は初鹿デニックと申します。TIS株式会社でXRエンジニアをやっています。本発表は個人の見解で、所属組織の意見ではありません。よろしくお願いします。アジェンダはこのようになります。
まず「XR Interaction Toolkit」について説明をします。XR Interaction ToolkitはUnityが提供するVR/ARインタラクションシステムのツールキットです。似たようなツールでOculusが「Oculus Integration」を提供しています。
XR Interaction Toolkitは、2019年12月頃にpreview packageとして公開されてからはしばらくアップデートがなかったんですが、2020年の10月ぐらいにバージョン0.10が公開されて、約10ヶ月ぶりに新機能が追加されています。今は1.0.0-pre版が出ていて、リリース目前です。本発表ではVRの機能について説明します。VR側では以下の機能が提供されています。
本発表での検証環境はこのようになっています。XR Interaction Toolkitは0.10からいくつかの機能が追加されていて、どのバージョンから対応されているかは右下のラベルに表示しています。始めにインストール方法ですが、Unity Package Managerを通してインストールします。preview packageなのでShow preview packagesにチェックする必要があります。
機能の紹介に入ります。まずは「Interaction」です。登場人物はInteractorとInteraction ManagerとInteractableの3者です。InteractorはInteractionの主体で、主にプレイヤーのコントローラーを指します。InteractableはInteractionの客体で、物体やUIパネルなどを指します。
この2者の状態がホバー状態なのかどうかを通知するためにInteraction Managerというマネージャークラスが存在します。この神クラスが存在しないと、お互いの状態がどうなっているかを知ることができないので、この3者は必要です。
ここから機能を淡々と説明していきます。「XR Ray Interactor」でコントローラーからRayを出せます。Rayは間接に遠隔物体をつかむような感じで、ほかにもDirect Interactorがあって、これはコントローラーで直接インタラクションできます。
あとは「Socket Interactor」というのがあって、以前の位置というのは語弊があるかもしれませんが、この物体の向こうに格納できます。このコライダーの範囲にキューブが入ると判定されて、そこから手を離すとここに格納が戻ります。
先ほどの物体に「XR Grab Interactable」をアタッチするとつかめるようになります。ほかにも「XR Simple Interactable」があって、XR Grab InteractableからGrab機能を取り除いたものです。
Interaction Systemには状態があります。先ほどホバーやセレクトは説明しましたが、ホバーの場合、物体にRayが触れた瞬間にHoverEnteredになって、放れたらHoverExitedというイベントが発火します。またつかんだ瞬間にSelectEnteredの状態になって、離すとSelectExitedの状態になります。これらをInteractor、Interactable Eventsと言います。イベントにはこのように処理を登録できます。
コントローラーにはAudio、HapticのEventsがあって、Interactable Eventsが破壊されたときにこのように音や振動を追加できます。もちろんEventsなどは、スクリプトを通してこのように追加できます。
次に「Locomotion」です。XR Interaction Toolkitでは以下のような「Locomotion System」が提供されています。0.9以前まではこの2つしかなかったんですが、2020年の10月頃に出た0.10からは、2つの機能が追加されています。
まず、「Snap Turn Provider」という機能があるんですが、これは瞬発的な視点回転処理を行えます。あとは「Teleportation Provider」というのがあって、これでテレポート処理を実行できます。テレポート先の判定は、平面のAreaと点のAnchorの2種類があります。テレポーテーション設定でMatch Orientationというのがあるんですが、これは少し混乱しやすいので次のスライドで説明します。
Match Orientationは、テレポート処理後の向きの設定です。0.9以前と0.10以降でこのEnumの内容が変わっているので注意してください。最初にWorld Space Upがあるんですが、これはワールド空間のy軸に合わせて、テレポートあとはワールドのy軸に合わせます。
次にTarget Upですが、ワープ先のy軸に合わせます。ワールド先のy軸と合っていないとプレイヤーはこのように向きが横向きになってしまうので、注意してください。
もう1つ、Target Up and Forwardがあるんですが、これはワープ先のyz軸に合わせます。最後にNoneがありますすが、これはワープ処理の前の向きと同じです。なのでワープ前の向きが正常だったら正常なんですが、おかしいままでワープしてしまうとおかしいままで変わりません。
個人的にはWorld Space Up以外はVRより向きになるので設定するときは注意してください。
ここからは0.10から追加されている機能を説明します。「Continuous Turn Provider」は変則的に視点を回転する処理ができます。もう1つ、VR空間内で移動処理を行える「Continuous Move Provider」があります。
Enable Strafeという項目があって、ストライフ移動は横移動のことを言うんですが、ここを有効にするかしないかという設定があります。ここのチェックを外すと前後移動しかできなくなります。
あとは「Character Controller Driver」が0.10から追加されました。これがなかったときは、現実空間でかがんでも、VR空間内ではCharacter Controllerの高さが変わらないために、VR空間ではかがめないという悲しいことが起きていたんですが、このCharacter Controller Driverを使えば、現実空間で頭の高さを変えるとCharacter Controllerの高さも変わります。
あとは0.10からInput System対応版が追加されました。対応しているのは以下の4つのコントローラー操作関連の機能です。Input Manager版はDevice-basedになっていて、Input SystemはAction-basedというスクリプトに名前が書かれるようになりました。
「XR Device Simulator」も0.10で追加されて、エディタ上でVRコントローラー操作を行えるようになりました。
XR Interaction Toolkitを応用したサンプルを紹介します。Socket Interactorを継承して独自のクラスを使えば、このように手首にモノを収納できるリストポケットを作れます。
XR Grab Interactableを拡張すれば、両手持ちの物体も実装できます。右手で銃を持って、左手でエイムの調整を行うギミックも搭載できます。
おわりに、ちょっと横道に逸れますが、近々Unity WebXRでXR Interaction Toolkitが対応される予定です。XR Interaction Toolkit Roadmapが公開されていて、将来はRemote Input Debuggerや、ハンドトラッキング、両手インタラクションが追加される予定です。
フォーラムによると、XR Interaction ToolkitはUnity 2021.2で1.0.0リリースを目指しているようです。後ほどスライドを公開するので参考にしてください。
まとめです。XR Interaction Toolkitを利用すれば、VRインタラクションシステムのひと通りの実装ができます。XR Interaction ToolkitはUPMを利用していて、アセットを置く必要がないので、Oculus Integrationに比べてリポジトリの容量が増えません。ただ必要最低限のコンポーネントしかないので、機能を拡張したい場合は拡張クラスを作るか、Oculus Integrationなど他のSDKと組み合わせて使うのがいいかもしれません。
ご清聴ありがとうございました。
司会者:ありがとうございました。それでは質疑応答の時間に移ります。「Oculus Integrationと比べたときのメリットはどのあたりなのか?」と質問が来ています。
初鹿:そうですね(笑)。Oculus Integrationはけっこうアセットに容量を食うんですが、XR Interaction ToolkitはUPMを利用しているので、容量が増えません。最低限の実装はXR Interaction Toolkitでいいんじゃないかと思います。
司会者:ありがとうございました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略