2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
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.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ