見出し画像

wwdc2023においてのunity解説日本語訳

おことわり

以下の文章はAppleの付けた原文字幕をGoogle翻訳で自動翻訳したものです。
正確な意味を把握したい方は最後に付けておいた英語原文をご参照ください。

日本語訳

こんにちは、AppleのARKitチームのChristopher Figueroaです。
ピーター・クーン:そして、私はユニティのピーター・クーンです。
クリストファー:UnityはエンジンとXRエコシステムをこの新しいプラットフォームに持ち込み、あなたのようなUnity開発者が簡単にプロジェクトを持ち込むことができます。ピーターと私は、すでに慣れ親しんでいるUnityワークフローを使用して、ここのRec Roomのような完全に没入感のある体験を構築する方法を紹介します。完全な没入型スタイルで没入型スペースを作成することから始めます。これにより、アプリはパススルーを隠し、誰かを別の世界に転送することができます。完全に没入型の体験で、Unityはコンポジターサービスを利用し、アプリにメタルレンダリング機能のパワーを提供します。Unityはまた、ARKitを利用して、骨格のハンドトラッキングなど、あなたの体の位置と周囲を認識します。Unityはこれらの技術に基づいて構築され、Unity Engineで同じサービスを提供します。Unityを使用して、このプラットフォームで没入型体験を作成するには、主に2つのアプローチがあります。このプラットフォームに完全に没入型のUnity体験をもたらし、プレイヤーの周囲を独自の環境に置き換えることができます。または、コンテンツとパススルーを組み合わせて、周囲に溶け込む没入型体験を作成することもできます。2番目のアプローチに興味がある場合は、「没入型Unityアプリの作成」をチェックすることをお勧めします。さて、ピーターは、これらの新しいAppleテクノロジーが、Unity開発者が完全に没入型VRゲームをこのプラットフォームに持ち込むのにどのように役立つかを説明します。ピーター:ありがとう、クリストファー。まず、Against GravityのRec Roomを見せることから始めましょう。これは、ユーザーが世界中の他の人とゲームや体験を作成してプレイできる人気のあるVRソーシャルプラットフォームです。これは、ゲーム開発のための強力で柔軟なプラットフォームを提供するUnityゲームエンジン上に構築されています。Rec Roomのように、VRコンテンツをこの新しいプラットフォームに簡単に持ち込むためのツールや技術のいくつかを紹介します。Unityのコンテンツをこの新しいプラットフォームに持ち込むことを計画する際に留意すべき点をいくつかお伝えします。まず、Unityからデバイスにコンテンツをデプロイするために使用するワークフローについて説明します。このプラットフォームのグラフィックに関連して、心に留めておくべきことがいくつかあります。そして最後に、コントローラ入力をハンド入力に適応させる方法と、この移行を支援するためにUnityが提供するツールのいくつかについて話します。まず、すでによく知っているビルドと実行のワークフローがあります。このプラットフォームの完全なサポートが Unity に組み込まれているため、わずか数ステップでこのデバイス上でプロジェクトが実行されているのを確認できます。このプラットフォームのビルド ターゲット。次に、他の VR プラットフォームと同様に、XR プラグインを有効にします。アプリがネイティブ プラグインに依存している場合は、このプラットフォーム用にプラグインを再コンパイルする必要があります。生のソース コードまたは .mm ファイルを使用している場合は、すでに準備完了です。 Unity からビルドすると、iOS、Mac、または Apple TV ターゲットの場合と同様に、Xcode プロジェクトが生成されるようになりました。 Xcode では、反復を高速化するために、デバイスまたはデバイス シミュレーターのいずれかに対してビルドして実行できます。誰かの周囲を完全に没入型のエクスペリエンスに変えるために使用するグラフィックス パイプラインは、おそらくあなたもよく知っているでしょう。理解することが重要な新しい概念。すべてのプロジェクトが最初に行う選択の 1 つは、どのレンダリング パイプラインを使用するかです。ユニバーサル レンダー パイプラインは理想的な選択肢です。Foveated レンダリングは、目が焦点を合わせやすい各レンズの中心に多くのピクセル密度を集中させ、目が細部にあまり敏感ではない画面の周辺部の詳細を減らす技術です。これにより、デバイスを使用するユーザーのエクスペリエンスが大幅に向上します。ユニバーサル レンダー パイプラインを使用すると、静的中心窩レンダリングがパイプライン全体に適用されます。また、後処理、カメラ スタッキング、HDR などを含むすべての URP 機能で動作します。 Foveated レンダリングの恩恵を受けるカスタム レンダー パスをお持ちの場合は、このテクノロジーを利用できる新しい API が Unity 2022 にあります。レンダリングは非線形空間で行われるため、その再マッピングを処理するシェーダー マクロもあります。静的中心窩レンダリングを利用すると、重要なピクセルにリソースを費やし、より高品質の視覚体験を生み出すことができます。このプラットフォームでグラフィックスを最適化するもう 1 つの方法は、シングルパス インスタンス レンダリングを使用することです。 Unity では、シングルパス インスタンス レンダリングが Metal グラフィック API をサポートするようになり、デフォルトで有効になります。シングルパス インスタンス レンダリングを使用すると、エンジンは両目に描画コールを 1 つだけ送信し、カリングやシャドウなどのレンダリング パイプラインの特定部分のオーバーヘッドを削減します。これにより、シーンをステレオでレンダリングする際の CPU オーバーヘッドが軽減されます。幸いなことに、アプリがシングルパス インスタンス レンダリングを使用して他の VR プラットフォームですでに正しくレンダリングされている場合、シェーダー マクロによってここでも同様に動作することが保証されます。最後に考慮すべきことが 1 つあります。アプリがすべてのピクセルの深度バッファーに正しく書き込んでいることを確認してください。システム コンポジターは、再投影に深度バッファーを使用します。深度情報が欠落している場合、システムは表示としてエラー色を表示します。一例として、スカイボックスは通常ユーザーから無限に離れているため、逆 Z で深さ 0 を書き込みます。これをデバイス上に表示するには変更が必要です。正しい値を深度バッファーに書き込むように Unity のすべてのシェーダーを修正しましたが、カスタム スカイボックスなどのカスタム エフェクト、またはおそらく水効果や透明度効果がある場合は、ピクセルごとに何らかの値が深度に書き込まれるようにしてください。 。グラフィックスをデバイスにレンダリングしたので、次はグラフィックスをインタラクティブにします。このデバイスでのインタラクションは独特です。人々は手と目を使ってコンテンツを操作するようになります。このプラットフォームでは、Unity アプリにインタラクションを追加できる方法がいくつかあります。 XR インタラクション ツールキットにはハンド トラッキングが追加され、既存のプロジェクトを簡単に適応できるようになります。 Unity 入力システムを使用して、組み込みのシステム ジェスチャに反応することもできます。また、Unity Hands Package とのカスタム インタラクションのために生のハンド ジョイント データにアクセスできます。 XRI とも呼ばれる XR インタラクション ツールキットは、高レベルのインタラクション システムを提供します。このツールキットは、入力をインタラクションに簡単に変換できるように設計されています。 3D オブジェクトと UI オブジェクトの両方で動作します。 XRI は、ハンド トラッキングなどの入力の種類を抽象化し、その入力をアプリが応答できるアクションに変換します。これは、入力コードが、さまざまな種類の入力を受け入れるプラットフォーム間で動作できることを意味します。 XRI を使用すると、3D 空間と 3D 空間世界の UI の両方で、ホバー、グラブ、選択などの一般的な操作に簡単に応答できます。このツールキットには移動システムも含まれているため、人々は完全に没入型の空間をより快適に移動できます。人々があなたの世界と対話するとき、没入感を高めるには視覚的なフィードバックが重要です。 XRI を使用すると、各入力制約に対する視覚的な反応を定義できます。 XRI のコアは、基本的な Interactable コンポーネントと Interactor コンポーネントのセットです。インタラクタブルは、入力を受け取ることができるシーン内のオブジェクトです。インタラクタブルを定義します。これは、人々があなたのインタラクタブルと対話する方法を指定します。インタラクション マネージャーは、これらのコンポーネントを結び付けます。最初のステップは、シーン内のどのオブジェクトを操作できるか、そしてそれらの操作が発生したときにどのように反応するかを決定することです。これを行うには、Interactable コンポーネントをオブジェクトに追加します。内蔵タイプは3種類あります。 Simple は、オブジェクトをインタラクションを受信するものとしてマークします。このコンポーネントを使用して、SelectEntered や SelectExited などのイベントをサブスクライブできます。 Grab を使用すると、オブジェクトが選択されるか掴まれると、オブジェクトはインタラクターを追跡し、解放されたときにその速度を継承します。 TeleportArea や TeleportAnchor などのテレポート インタラクティブ機能を使用すると、プレイヤーがテレポートするエリアまたはポイントを定義できます。また、独自のカスタム Interactable を作成することもできます。インタラクターは、インタラクタブルとしてタグ付けされたオブジェクトを選択したり、オブジェクトと対話したりする責任があります。これらは、潜在的に各フレーム上にカーソルを置いたり選択したりできる Interactable のリストを定義します。インタラクターにはいくつかの種類があります。直接インタラクターは、それに接触しているインタラクタブルを選択します。人の手がいつ対話可能なオブジェクトに触れたか、またはいつ対話可能なオブジェクトに近づいたかを知りたい場合は、これらのいずれかを使用します。 Ray Interactor は、遠くから対話するために使用されます。このインタラクターは、曲線と直線を使用して高度に構成可能であり、プロジェクトの視覚スタイルに適応させるのに役立つカスタマイズ可能な視覚化が可能です。ユーザーがインタラクションを開始すると、そのインタラクションがどのように機能するかについてのオプションが表示されます。たとえば、掴むインタラクションの場合、オブジェクトをユーザーの手に移動したい場合があります。また、Ray Interactor を使用すると、ゲームプレイのニーズに合わせてグラブの自由度を制限することができます。完全な没入型エクスペリエンスにおける一般的なインタラクションは、オブジェクトを取得し、そのオブジェクトのコンテキストに応じた場所に配置することです。たとえば、バッテリーをソケットに差し込むなどです。ソケット インタラクターは、特定の領域がオブジェクトを受け入れることができることをプレーヤーに示します。これらのインタラクターは手に取り付けられていません。代わりに、彼らは世界のどこかに住んでいます。ハンド トラッキングやコントローラーでも、ユーザーが自然に実行したくなる一般的なタイプのインタラクションは、ポーク インタラクションです。これは、直接インタラクターに似ていますが、方向フィルタリングが含まれているため、インタラクションをトリガーするには正しいモーションを実行する必要がある点が異なります。ユーザーが見ることで対話できるようにしたい場合、Gaze Interactor は、Ray Interactor にいくつかの拡張機能を提供して、視線の処理を少し簡単にします。たとえば、Gaze Interactors は、選択しやすくするために、Interactables のコライダーを自動的に大きくすることができます。これらすべてをまとめるために、インタラクション マネージャーはインタラクターとインタラクタブルの間の仲介者として機能し、インタラクションの交換を促進します。その主な役割は、登録されたインタラクターとインタラクタブルの指定されたグループ内でインタラクション状態の変更を開始することです。通常、すべてのインタラクターがすべてのインタラクタブルに影響を与える可能性を可能にするために、単一のインタラクション マネージャーが確立されます。あるいは、それぞれが独自のインタラクターとインタラクタブルの組み合わせを持つ、複数の補完的なインタラクション マネージャーを利用することもできます。これらのマネージャーをアクティブ化または非アクティブ化して、特定の対話セットを有効または無効にすることができます。たとえば、シーンごと、またはメニューごとに異なるインタラクタブルのセットがある場合があります。最後に、XR コントローラー コンポーネントは、受信する入力データを理解するのに役立ちます。手または追跡されたデバイスから入力アクションを受け取り、それをインタラクターに渡し、インタラクターがその入力に基づいて何かを選択またはアクティブ化することを決定できるようにします。Select などの XR インタラクション状態ごとに入力アクション参照をバインドする必要があります。ハンドまたはコントローラーごとに XR コントローラー コンポーネントが 1 つだけという制限がないため、ハンドとコントローラーの両方を個別にサポートできる柔軟性が得られます。 XRI にバンドルされているサンプル コードには、これを行う方法が示されています。 XRI の高度な機能に加えて、Unity 入力システムからシステム ジェスチャ入力を直接使用するオプションもあります。その後、タップ ジェスチャなどのプラットフォームの組み込みインタラクションを独自のインタラクション システムにマッピングできます。 Unity 入力システムからのバインド パスを使用して、これらのシステム ジェスチャにアクセスし、応答することができます。たとえば、ピンチ ジェスチャは、アクティブな場合、位置と回転を伴う値として渡されます。これらは入力アクションにバインドできます。人がどこに焦点を当てているかが、位置と回転とともにピンチ ジェスチャと同じフレーム内に表示されます。さらに柔軟性を高めるために、Unity Hands サブシステムを使用して、Unity Hands パッケージを介してシステムからすべての生の手関節データにアクセスできます。 Unity Hands パッケージは、プラットフォーム間で一貫した低レベルの手関節データへのアクセスを提供します。たとえば、各関節を調べ、そのポーズが親指を立てる、人差し指を指すなどの特定のジェスチャにどの程度近いかを判断し、それらをゲームプレイ アクションに変換するコードを作成できます。これは強力ですが、人によって手のサイズが異なり、動きの範囲もさまざまであるため、正しく理解するのは難しい場合があります。このコードは、人差し指が伸びているかどうかを知らせるメソッドを定義します。 OnHandUpdate イベントからこのメソッドを呼び出し、いずれかのハンドを渡すことができます。まず、特定の関節をいくつか取得して、人差し指が伸びているかどうかを確認します。いずれかが無効な場合は false を返します。すべての関節が有効な場合は、人差し指が丸まっていないことを確認する簡単なチェックを実行します。このロジックを他の指に拡張して、いくつかの基本的なジェスチャ検出の実装を開始できます。生の手関節データのもう 1 つの用途は、それをカスタム ハンド メッシュ ビジュアルにマッピングすることです。これにより、手をゲームのアート スタイルにさらに適合させることができます。たとえば、Rec Room は生の手関節データを使用して、ビジュアル スタイルに合った様式化された手のモデルを表示しました。さらに没入感を高めるために、他のプレイヤーの手のモデルも表示されます。 Unity Hand パッケージには、生のハンド ジョイント アクセスについて詳しく知りたい場合に役立つサンプル コードがいくつか含まれています。皆さんの VR 体験がこの新しいプラットフォームで実現されることを楽しみにしています。このプラットフォームに対する Unity のサポートに関する詳細情報を入手し、早期ベータ アクセスにサインアップするには、unity.com/spatial にアクセスしてください。 Christopher: これらは、すでに使い慣れた Unity ワークフローを使用して、完全に没入型の VR 体験をこの新しいプラットフォームにもたらすために使用できるツールです。 Peter: 要約すると、このセッションでは、Rec Room のようなこの新しいプラットフォームに VR コンテンツを簡単に導入できるようにするいくつかのツールとテクノロジーを紹介しました。新しいプロジェクトを開始する場合は、Unity 2022 以降を使用してください。既存のプロジェクトがある場合は、2022 へのアップグレードを開始してください。ユニバーサル レンダー パイプラインの採用を検討してください。組み込みのグラフィックス パイプラインはサポートされていますが、今後のすべての改善はユニバーサル パイプライン上で行われます。コントローラーベースのインタラクションを手に適応させ始めます。 XR Interaction Toolkit と Unity Hands パッケージを今すぐ始められます。 Christopher: 最後に、Unity を使用してパススルーによる没入型エクスペリエンスを作成する方法について詳しく知りたい場合は、「没入型 Unity アプリの作成」をお勧めします。また、「空間コンピューティング向けの優れたゲームの構築」をチェックして、このプラットフォームでゲーム開発者に何が可能になるのかの概要を確認してください。 Peter: 私たちは、あなたがプラットフォームに何をもたらしてくれるのかを楽しみにしています。クリストファー: ご覧いただきありがとうございます。

原文

Hi, I'm Christopher Figueroa from Apple's ARKit team. Peter Kuhn: And I'm Peter Kuhn from Unity. Christopher: Unity is bringing the engine and XR ecosystem to this new platform, making it easy for Unity developers like you to bring their projects along. Peter and I will show you how to build a fully immersive experience like Rec Room here using the Unity workflow you're already familiar with. Start by creating an immersive space with a fully immersive style. This allows apps to hide passthrough and transfer someone to another world. A fully immersive experience, Unity utilizes the Compositor Service to give your app the power of metal rendering capabilities. Unity also utilizes ARKit to recognize your body position and surroundings, including skeletal hand tracking. Unity builds on these technologies and offers the same services in the Unity Engine. There are two main approaches to creating immersive experiences on this platform using Unity. It brings a fully immersive Unity experience to this platform, allowing you to replace the player's surroundings with your own environment. Or you can combine content and passthrough to create an immersive experience that blends in with your surroundings. If you're interested in the second approach, I recommend checking out Building Immersive Unity Apps. Now, Peter explains how these new Apple technologies will help Unity developers bring fully immersive VR games to the platform. Peter: Thank you, Christopher. Let's start by showing you Rec Room from Against Gravity. It is a popular VR social platform that allows users to create and play games and experiences with others around the world. It is built on the Unity game engine which provides a powerful and flexible platform for game development. Like Rec Room, we will showcase some of the tools and techniques to easily bring VR content to this new platform. Here are some things to keep in mind as you plan to bring your Unity content to this new platform. First, let's discuss the workflow we use to deploy content from Unity to the device. There are a few things to keep in mind related to graphics on this platform. And finally, we'll talk about how to adapt controller input to hand input and some of the tools Unity provides to help with this transition. To start, there's a build and run workflow that you should already be familiar with. We've built full support for this platform into Unity, so you can see your projects running on this device in just a few steps. The first is to select the build target for this platform. Then, like you would for any other VR platform, enable the XR Plug-in. If your app relies on native plug-ins, they'll need to be recompiled for this platform. On the other hand, if you are using raw source code or .mm files, you're already good to go. Building from Unity will now generate an Xcode project, just like it does for an iOS, Mac, or Apple TV target. Then, from within Xcode, you can build and run to either the device or the device simulator for faster iteration. The graphics pipeline you'll use to transform someone's surroundings into a fully immersive experience is likely to be familiar to you as well. But there are a few new concepts that are important to understand. One choice every project makes right in the beginning is which rendering pipeline to use. The Universal Render Pipeline is an ideal choice. It enables a special feature unique to this platform called Foveated Rendering.

Foveated Rendering is a technique that concentrates more pixel density in the center of each lens where the eyes are likely to be focused, and less detail on the peripherals of the screen where the eyes are less sensitive to detail. This results in a much higher-quality experience for the person using the device. When you use the Universal Render Pipeline, Static Foveated Rendering is applied throughout the entire pipeline. And it works with all URP features, including post-processing, camera stacking, HDR, and more. If you have custom render passes that would benefit from Foveated Rendering, there are new APIs in Unity 2022 that can take advantage of this technology. Since rendering now happens in a nonlinear space, there are also shader macros to handle that remapping. Taking advantage of Static Foveated Rendering means you'll spend resources on the pixels that matter and produce a higher-quality visual experience. Another way to optimize your graphics on this platform is by using Single-Pass Instanced Rendering. In Unity, Single-Pass Instanced Rendering now supports the Metal graphics API, and it will be enabled by default. With Single-Pass Instanced Rendering, the engine submits only one draw call for both eyes, and reduces the overhead of certain parts of the rendering pipeline like culling and shadows. This reduces the CPU overhead of rendering your scenes in stereo. The good news is, if your app already renders correctly on other VR platforms using Single-Pass Instanced Rendering, shader macros ensure it should work here as well. There's one last thing to consider. Make sure your app is writing to the depth buffer for every pixel correctly. The system compositor uses the depth buffer for reprojection. Wherever the depth information is missing, the system will render an error color as an indication. One example is the skybox which normally is infinitely far away from the user, so it writes a depth of zero with reverse Z. This requires modification to appear on the device. We've fixed all of Unity's shaders to write correct values to the depth buffer, but if you have any custom effects such as a custom skybox, or perhaps a water effect or transparency effects, ensure that some value is written to depth for each pixel. Now that you've rendered your graphics to the device, it's time to make them interactive. Interaction on this device is unique. People will use their hands and their eyes to interact with content. There are a few ways you will be able to add interaction to your Unity apps on this platform. The XR Interaction Toolkit adds hand tracking to make it easier for you to adapt existing projects. You can also react to the built-in system gestures with the Unity Input System. And you can access the raw hand joint data for custom interactions with the Unity Hands Package. The XR Interaction Toolkit, also known as XRI, provides a high-level interaction system. The toolkit is designed to make it easy to translate input into interactions. It works with both 3D and UI objects. XRI abstracts away the type of input, like hand tracking, and translates that input into actions that your app can respond to. This means your input code can work across platforms that accept different types of input. XRI makes it easy to respond to common interactions like hover, grab, and select, both in 3D space and in the UI for 3D spatial worlds. The toolkit also includes a locomotion system so people can travel through a fully immersive space more comfortably. As people interact with your world, visual feedback is important for immersion. XRI enables you to define the visual reactions for each input constraint. The core of XRI is a set of base Interactable and Interactor components. Interactables are objects in your scene that can receive input. You define Interactors, which specify how people can interact with your Interactables. The Interaction Manager ties these components together. The first step is to decide which objects in the scene can be interacted with, and how to react when those interactions occur. We do this by adding an Interactable component to the object. There are three built-in types. Simple marks the object as receiving interactions. You can subscribe to events like SelectEntered or SelectExited with this component. With Grab, when the object is selected or grabbed, it will follow the Interactor around and inherit its velocity when released. Teleport interactables like TeleportArea and TeleportAnchor enable you to define areas or points for the player to teleport to. And you can create your own custom Interactables. Interactors are responsible for selecting or interacting with the objects you've tagged as Interactable. They define a list of Interactables that they could potentially hover over or select each frame. There are several types of Interactors. Direct Interactors select Interactables that are touching it. You would use one of these when you want to know when a person's hands touch an interactable object, or when they are close to interactable objects. Ray Interactors are used for interacting from far away. This Interactor is highly configurable with curved and straight lines, and customizable visualizations to help you adapt it to the visual style of your project. Once the user starts the interaction, you have options on how that interaction works. For example, if it's a grab interaction, you may want to move the object to the user's hand. And the Ray Interactor makes it possible to limit the degrees of freedom for the grab in order to match your gameplay needs. A common interaction in a fully immersive experience is grabbing an object and placing it somewhere contextual to that object. For example, placing a battery in a socket. The Socket Interactor shows the player that a certain area can accept an object. These Interactors are not attached to the hands. Instead they live somewhere in the world. With hand tracking or even controllers, a common type of interaction that users naturally want to perform is the poke interaction. This is similar to a direct Interactor, except that it includes direction filtering so that correct motion must be performed in order to trigger an interaction. If you want people to interact by looking, the Gaze Interactor provides some extensions to the Ray Interactor to make gaze a bit easier to deal with. For example, Gaze Interactors can automatically make the colliders larger for Interactables so that they're easier to select. To bring it all together, the Interaction Manager serves as a middleman between the Interactors and Interactables, facilitating the exchange of interactions. Its primary role is to initiate changes in the interaction state within a designated group of registered Interactors and Interactables. Usually, a single Interaction Manager is established to enable the possibility of all Interactors affecting all Interactables. Alternatively, multiple complementary Interaction Managers can be utilized, each with their own unique assortment of Interactors and Interactables. These managers can be activated or deactivated to enable or disable specific sets of interactions. For example, you may have a different set of Interactables per scene, or in your menus. Finally, the XR Controller component helps you make sense of the input data you'll receive. It takes input actions from the hands or a tracked device and passes it to the Interactors so that they can decide to select or activate something based on that input.

You will need to bind Input Action References for each of the XR Interaction States, such as Select. You're not limited to just one XR Controller component per hand or controller, which gives us the flexibility to support both hands and controllers independently. Sample code that is bundled with XRI shows you how you can do this. In addition to the advanced features of XRI, you've also got the option of simply using the system gesture inputs directly from the Unity Input System. You can then map the platform's built-in interactions, like tap gestures, to your own interaction system. You can use the binding paths from the Unity Input System to access and respond to these system gestures. The pinch gesture, for example, comes through as a value when active, with position and rotation. These can be bound to input actions. Where the person is directing their focus comes through in the same frame as a pinch gesture, with position and rotation. For even more flexibility, you can use the Unity Hands Subsystem to access all of the raw hand joint data from the system through the Unity Hands Package. The Unity Hands Package provides access to low-level hand joint data that are consistent across platforms. For example, you can write code to look at each joint and determine how close the pose is to a certain gesture, like a thumbs up or a pointing index finger, and translate those into gameplay actions. This is powerful but can be challenging to get right since everyone's hands are different sizes and people have a variety of range of motions. This code defines a method which tells you if the index finger is extended. You can call this method from the OnHandUpdate event and pass in one of the hands. First, get a few specific joints to check if the index finger is extended. If any of them are invalid, it will return false. If all joints are valid, do a simple check to make sure that the index finger isn't curled. You can extend this logic to other fingers to start to implement some basic gesture detections. Another use for the raw hand joint data is mapping it to a custom hand mesh visual. This can help make the hands fit more into the art style of your game. For example, Rec Room used the raw hand joint data to show a stylized hand model that fits their visual style. They also show other player hand models for more immersion. The Unity Hand package has some sample code to get you started if you want to explore more about raw hand joint access. I'm excited to see your VR experiences come to this new platform. To get more information about Unity's support for this platform and to sign up for early beta access, please visit unity.com/spatial. Christopher: Those are the tools you can use to bring a fully immersive VR experience to this new platform using Unity workflows you're already familiar with. Peter: To recap, this session introduced you to some of the tools and technologies that will make it easier for you to bring your VR content to this new platform, just like Rec Room. If you're starting a new project, use Unity 2022 or later. If you have an existing project, start upgrading to 2022. Consider adopting the Universal Render Pipeline. While the built-in graphics pipeline is supported, all future improvements will be on the Universal Pipeline. Start adapting any controller-based interactions to hands. You can start today with the XR Interaction Toolkit and the Unity Hands package. Christopher: And finally, to learn more about how you can use Unity to create immersive experiences with passthrough, I recommend "Create immersive Unity apps." And check out "Build great games for spatial computing" to get an overview of what's possible for game developers on this platform. Peter: We're excited to see what you bring to the platform. Christopher: Thanks for watching.

よろしければサポートお願いします! いただいたサポートは経営者として地方の商店街活性化のための活動費に使わせていただきます!