ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
イマーシブなUnityアプリの制作
Unityを使って、魅力的なvisionOSの没入体験を作成する方法を見ていきます。UnityがAppleのフレームワークと切れ目無く統合する様子を確認しつつ、プラットフォーム専用に作成できるツールについて説明し、ボリュームカメラがどの様に既存のシーンをvisionOSのウィンドウやボリュームやスペースに送り込めるのかを見ていきます。パススルーやシーン理解などのvisionOS機能を組み込んで、Shader Graphでビジュアルをカスタマイズし、インタラクションが空間的インプットと一緒に機能するように調整る方法を学びましょう。
関連する章
- 0:07 - Intro
- 2:13 - Achieve your visual look
- 6:18 - Play to device
- 7:48 - Explore volume cameras
- 10:00 - Build interaction
- 13:49 - Prepare for the platform
- 15:04 - Wrap-Up
リソース
関連ビデオ
WWDC23
-
ダウンロード
♪♪ ♪ John Calsbeek:みなさん ようこそ! 私はRealityKitのJohnです Vladimir Vukićević:UnityのVladです John:今日は没入型アプリのための Unityサポートを紹介します UnityはAppleと共同で この新プラットフォームでの 完全なUnity体験を可能にしました Unityは何万ものアプリで使われていて 今度は没入型アプリの作成にも Unityが使えるようになりました TribandのApple Arcadeゲーム 「What The Golf?」は このプラットフォームに Unityで構築されています iPhoneでプレイするのは本当に楽しくて このようにプレイするのは格別です Unityを使ってこのプラットフォームで 没入型体験を作成するには 主に2つのアプローチがあります パススルーを使ってコンテンツを 現実世界のオブジェクトと ミックスした体験が作成でき 没入型体験だったり ほかのアプリと並べた Shared Spaceだったりします また プラットフォームに 完全な没入型Unity体験を 取り入れる事もできます このアプローチに興味があれば 「Bring your Unity VR app to a fully immersive space」を ぜひ見てください UnityでShared Spaceのための体験を作成すれば アプリの楽しさがアップする 可能性が膨らみます ここでVladに詳しく話してもらいましょう Vladimir:ありがとう John UnityとAppleは ここ二年間 プラットフォームでUnityコンテンツが ベストの状態である事を 共同で維持し確認してきました 既存のプロジェクトを使って始める場合でも まったく新しいものを構築する場合でも Unityは 使い慣れたツールと 新しい機能を駆使して 没入型体験を作成するための 素晴らしいツールです このプラットフォームでは Unityのシェーダーやマテリアルを使って 思い通りの外観を手に入れる事ができます プレイモードに入れる機能を 直接デバイスに導入して イテレーションの時間を改善しています また ボリュームカメラという 新しいコンセプトもあり Unityシーンのコンテンツがどのように 現実世界にもたらされるかを コントロールします この新しいデバイスでのインプットは Look&Tapのジェスチャのように シンプルだったり もっと複雑なインタラクションを 含んだりもします そして今からみなさんのUnityコンテンツを 空間コンピューティングに向けて 少しずつ準備しましょう こちらは そういったエレメントが 一緒に動作している例です このシーンは UnityのShader Graphで できたマテリアルを使っていて パススルーで Simulator内の Shared Spaceにおいて表示されています 完全にリグを組んだ アニメーションキャラクターがいて 奥の鬼がその例ですね 物理的相互作用は ご存知の通りです この町の住人は全員 キャラクターのナビゲーション機能で 動き回っていて カスタムにスクリプトされた 動的ビヘイビアを使って このシーンを活き活きとさせています アセットストアの助力を得て このシーンを2週間で作成しましたが みなさんの空間で見ても とても良い出来栄えで 近づいてどの角度からでも シーンをよく見る事ができます Shared Spaceでのコンテンツのレンダリングは すべてRealityKitで行われています みなさんのUnityマテリアルや シェーダーは この新しい環境で変換が必要です Unityが開発しているPoly Spatialが この変換を代わりに行い 多くのUnityの機能を この環境で使えるように してくれます Poly Spatialが変換するのは マテリアルと 通常及びスキンメッシュのレンダリングと パーティクル効果とスプライトです Unityのシミュレーション機能は サポートされていて MonoBehavioursやScriptableObjectや そのほかの標準ツールが引き続き使えます 変換されるマテリアルの カテゴリーは3つです 物理ベースのマテリアルと カスタムのマテリアルと 一部の特殊効果マテリアルです Unityの物理ベースシェーダーに 基づくマテリアルは RealityKitに直接変換します Universal Render Pipelineを 使っているなら マテリアルに LitやSimple Litや Complex Lit Shaderの どれでも使えます 埋め込みのパイプラインでは Standard Shaderが使えます これらはすべて RealityKitの PhysicallyBasedMaterialに 変換されます カスタムのシェーダーやマテリアルタイプは Unity Shader Graphを通して サポートされています Unity Shader Graphsは MaterialXに変換されますが これは複雑なマテリアルのための 標準的インターチェンジフォーマットです MaterialXのシェーダーはRealityKitで ShaderGraphMaterialになります Unity Shader Graphノードの多くは サポートされているので 複雑で面白いエフェクトが作れます 手描き風シェーダーは RealityKitでは レンダリングにサポートされていませんが UnityのRenderTexturesで使えます そして そのRenderTextureは RealityKitで表示するために Shader Graphへの テクスチャインプットとして使えます マテリアルシェーダータイプでは もう2つのタイプがサポートされています 最初は Unlit Shaderで 照明の影響を受けない 単一色あるいは単一テクスチャの オブジェクトが作成できます 2つ目は Occlusion Shaderで オブジェクトを通しての パススルーが表せます ワールドメッシュデータで Occlusion Shaderを使えば コンテンツが現実世界と 更に統合した感覚になります Unity MeshRenderersと SkinnedMeshRenderersはサポートされ ビジュアルコンテンツを 現実社会にもたらす主な方法です リグの組まれたキャラクターや アニメーションも利用可能です UniversalまたはBuilt-inの Render Pipelineのいずれかを使い コンテンツはUnity PolySpatialを通して RealityKitに変換されます ポストプロセシングのエフェクトや カスタムパイプラインステージのような レンダリング機能は使えず RealityKitが最終レンダリングを行います UnityのShurikenシステムを使った パーティクル効果は 互換性があればRealityKitの パーティクルシステムに 変換されて そうでなければ baked meshesに変換されます スプライトは3Dメッシュになりますが それらを空間コンテキストで どう使うかについては考慮が必要です PolySpatialは UnityとRealityKit間での レンダリングを最適化し 変換するものです Unityでのシミュレーションは みなさんにお馴染みの通りで 例えば 物理や アニメーションとタイムライン 経路探索や NavMesh カスタムのMonoBehavioursや そのほかの非レンダリング機能です 外観を洗練させて イテレーションを 加速させるために UnityのPolySpatialは 「Play to device」を有効にします コンテンツがデバイスで どのように見えるのかを知るために ビルドプロセスをすべて行うのは 時間がかかります PolySpatialで 初めて Play to deviceが可能になりました Play to deviceでは シーンの インスタントプレビューを見たり ライブで変更を加えたりできます シミュレータでもデバイスでも 非常によく機能します Play to deviceを使ってコンテンツの 配置やサイズを素早く調べたり エレメントの追加や削除もできます 配置されたコンテンツを パススルーで見ながら マテリアルやテクスチャや Shader Graphsさえも変えて 外観を洗練する事ができ イベントはエディタに送り返されるので インタラクションのテストもできます シミュレーションは実行され続けるので エディタに添付するだけで デバッグが簡単にできます 先ほど見たお城のシーンです 左側はUnityで開けてあり 右側は Play to deviceでシミュレータに 実行しているものが見えます シーンにドラッグするだけで もっと鬼を増やせます シミュレータでもデバイスでも 即時に見えるようになります 鬼の色をピンクやネオングリーンに してみたければ それも可能です Play to deviceは コンテンツのイテレーションに とても効率的なワークフローで 現在はShared Spaceの コンテンツ作成にのみ Unityで利用可能です Unityを使って Shared Spaceに 参加する ボリュメトリックな コンテンツを作成しているので ボリュームカメラという新コンセプトで シーンをどのように現実世界に 持ち込むのかをコントロールできます ボリュームカメラが作成できるのは 2つのタイプのボリュームで バウンドされたものとバウンドされていないもので それぞれ異なる特徴があります アプリはいつでも この2つを切り替えられます バウンドされたボリュームはShared Spaceで ほかのアプリやゲームの横に ボリュームとして存在します Unityでは寸法とtransformを持ち 特定の現実世界のサイズもあります 再配置はできますが 人々がサイズを変える事はできません ボリュームカメラの寸法とtransformが ボリューム内でアプリが表示するシーンの 領域を決めます シーンユニットに指定されています Unityのシーンビューで ボリュームのプレビューが 緑になっていますね ボリュームカメラの寸法と transformを操る事で シーンの異なる部分が ボリューム内に持ち込めます カメラを動かしたり回転させると スペースの中に 新しいオブジェクトが見えます サイズを拡大すると ビューにあるシーンの中身が増えます どちらの場合でも ボリュームは同じサイズです 中身にある 見えるコンテンツが 変わるだけです ボリュームカメラを最初に設置した時 バネはボリュームの側面と 交わっていましたね コンテンツはRealityKitが クリップしたのです ボリュームの端と交わる コンテンツがある場合は 2回目に シーンに同じメッシュを 後ろ向きのマテリアルと一緒に置いて クリップされたセクションを 埋めるようにしましょう アンバウンドのボリュームは このプラットフォームにフルスペースで表示され コンテンツがパススルーと 完全にブレンドするため 更に没入感のある体験になります シーン全体を選んでいるので 寸法はありませんし そのtransformはシーンユニットが 現実世界ユニットにどのように マッピングされるかを決めます 一度に有効にできる アンバウンドの ボリュームカメラは1つだけです インタラクションについて話す時に アンバウンドボリュームの例を見ていきます UnityはこのプラットフォームのAppに 複数の入力タイプをサポートします このプラットフォームでは 人々は目と手を使い コンテンツを見て 指先をタップで合わせて それを選びます ハンドトラッキングと頭部姿勢のデータで 現実味のあるインタラクションが 作成できます ARKitからの拡張現実データが 利用可能で キーボードやゲームコントローラなどの Bluetoothデバイスも利用可能です タップジェスチャが このプラットフォームにおいて コンテンツとのインタラクションで 最も一般的な手法です オブジェクトがこれらの イベントを受け取るには オブジェクトの入力コライダーが 設定されていなければなりません 遠くからLook&Tapでオブジェクトを選ぶか 手を伸ばし 指で直接オブジェクトを触って 選ぶ事もできます 同時タップのアクションは 最大2つまで進行できます Unityでは タップは WorldTouchイベントとして利用できます 2Dタップイベントと似ていますが 完全な3Dポジションになっています 手や頭部姿勢のトラッキングでAppは 手の各関節や見る人の頭部姿勢が グローバルトラッキングの 原点から相対的にどこにあるのか 正確な情報が入手できます 低水準のハンドデータはUnityの Handsパッケージ経由で提供され 頭部姿勢の方は Input Systemを通して提供されます このどちらもアンバウンドボリュームでのみ 利用可能で ハンドトラッキングへのアクセスは データを受け取るための 許可のリクエストがアプリに要求されます 平面検出やワールドメッシュや 画像マーカーなどの 拡張現実データは ARKitや UnityのAR Foundationを 通して利用可能です 手や頭部姿勢と同様にARデータは アンバウンドボリュームでのみ 利用可能で 追加の許可取得が要求されます 最後に キーボードやコントローラや そのほかのサポート対象デバイスなどの Bluetoothデバイスは UnityのInput Systemを通して利用可能です 中にはアンバウンドボリュームでしか 利用できない入力タイプもあるので どんなタイプのインタラクションを 構築したいのか決めなければなりません Look&Tapの場合 他のアプリと共存できる バウンドされたボリュームで コンテンツが動作できますが ハンドトラッキングや 拡張現実データにアクセスする 必要がある場合は アンバウンドボリュームを使って 許可を要求しなければなりません これらはどれも 適切なメカニズム経由で Unityアプリに届けられます このサンプルは タッピングと ハンドトラッキングと 平面検知をアンバウンドボリュームの シーンで使っています ARKitの平面検知経由で 見つかった表面を見て その表面に沿って指をドラッグし 花を作成しています ハンドトラッキングを使って 花の色が塗られ タップで花が育ちます 花が育つのは Unityの物理システムを使った 手の動きに反応しています このようにして現実世界を コンテンツに組み込む事で 更に深い没入感を生み出せます 既存のインタラクションを 適応させる最善の方法は タイプによって変わります 既にタッチを取り入れている場合 例えば iPhoneですね 適切なInput Collidersを追加して タップを主要な入力メカニズムとして 使い続けられます VRコントローラを使っている場合 タップなのか あるいは ハンドベースの入力なのか その複雑さに従って インタラクションを 再定義しなければなりません 既存のハンドベース入力は 変更なく機能するはずです UnityのいずれかのUIシステムを使っている 既存のUIパネルがある場合は このプラットフォームに持ち込めます uGUIやUI Toolkitを使って構築された UIエレメントはサポートされています ほかのUIシステムを使っている場合は メッシュとMeshRendererを使っているか メッシュに置かれる RenderTextureに描く限り UIエレメントは機能します Appleプラットフォームでの 空間コンピューティングへのサポートは Unity 2022をベースにした ベータ版で 間も無く始まります ですが コンテンツの準備は 今から始められます 新しいプロジェクトを始めるなら Unity 2022以降を使ってください 既存のプロジェクトがある場合は 2022へのアップグレードを始めてください プロジェクトに手描き風 シェーダーがある場合は Shader Graphに変換し始めてください Universal Render Pipelineの 採用を考えましょう 埋め込みのグラフィックス パイプラインはサポートされていますが 今後の改善は全て Universal パイプラインで行われます まだ使っていないなら Input System パッケージを使い始めましょう 混合モードの入力はサポートされていますが プラットフォームでのイベントは Input Systemを通してのみ届けられます 最後に 既存のアプリやゲームを 空間コンピューティングに どのように持ち込むか あるいはどんな新しい体験を 作成したいのかを 考え始めましょう 自分の案は Shared Spaceに収めて ほかの人に柔軟性を与えるべきか あるいは 自分のアプリには フルスペースのパワーが必要なのか そういった事を考慮に入れましょう このプラットフォームへのUnityの サポートに関する詳細情報や 初期のベータ版アクセスへのサインアップは unity.com/spatialからどうぞ みなさんがUnityと この新デバイスで 素晴らしいものを開発するのを 楽しみにしています John::全力で没入型アプリを作るには Unityがベストのチョイスです そしてこの新プラットフォームで RealityKitと実に上手く機能します プロジェクトの準備は今から始められます Unityで完全没入型体験を 作成したいと考えるなら ぜひ「Bring your Unity VR app to a fully immersive space」を見てください そして「Build great games for spatial computing」では このプラットフォーム用の ゲーム開発テクノロジーの 概要が説明されています 今後みなさんが開発するものを 楽しみにしています Vladimir:ご視聴ありがとうございました ♪
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。