ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
カスタム環境でのよりイマーシブなメディア視聴体験の実現
Docking Region、Reverb、Virtual Environment ProbeなどのReality Composer Proのコンポーネントを使用して、メディア視聴体験を拡張できます。Reflections、Tint Surroundings Effect、SharePlay、Immersive Environment Pickerを活用して、よりイマーシブな体験を実現する方法を確認しましょう。
関連する章
- 0:00 - Introduction
- 1:48 - Immersive playback
- 3:33 - Custom Docking Region
- 7:56 - Media reflections
- 10:14 - Grounding the experience
- 14:34 - Immersive environment picker
- 15:33 - SharePlay
リソース
- Building an immersive media viewing experience
- Destination Video
- Enabling video reflections in an immersive environment
- Forum: Media Technologies
関連ビデオ
WWDC24
-
ダウンロード
こんにちは Jonathanです Appleの visionOS Programチームの一員です 今日は Apple Vision Proでの メディア視聴体験に 映画館のスケールと驚きを もたらす方法を紹介します
映画館で 照明が暗くなった瞬間に かけられる魔法のように カスタム環境に美しい メディアの反射を投影することで よりイマーシブな体験を実現できます ここでは Destination Videoのサンプルにある 新しいStudio環境での例を見ています 照明が暗くなった後 ユーザーの手が環境の照明に合うように パススルーを色調整したり リバーブプリセットを設定して環境が 音に包み込まれるようにすることで 視覚的な雰囲気を高めることができます メディアと環境がスムーズに 切り替わっているのがわかりますか? また複数のバリエーションを提供して シーンの外観と雰囲気を多様化しながら システムの照明機能と影の統合を カスタム環境での視聴体験全体の 基盤にすることができます
このセッションでは よりイマーシブな メディア視聴体験を構築するための 基盤について説明します 次に Reality Composer Proの新しい カスタムドッキングコンポーネントを使用し カスタム環境でのビデオ再生に最適な 場所を定義する方法と カスタム環境で再生されるビデオからの メディア反射について説明します さらに ビジュアルとサウンドを使用して カスタム環境全体の体験の基盤を 構築する方法について説明します その後 イマーシブ環境ピッカーを使用して カスタム環境を見つけやすくする 方法を紹介します 最後に SharePlay対応アプリで 環境を同期し 複数のユーザーがイマーシブな視聴体験を 共有できるようにする方法について 説明します まず空間とメディア視聴体験の 基本的な要素から 始めましょう
サイズや位置を変更できる ウインドウ内でのメディア視聴は それ自体が素晴らしい体験ですが Apple Vision Proのイマーシブな機能は それ以上のものを実現します ビデオ視聴体験を よりイマーシブなものにするには まずimmersiveSpaceシーンタイプから 始めて AVKitの機能を活用する必要があります immersiveSpaceシーンタイプは メディアアプリがユーザーに カスタマイズ可能な段階的イマーシブ感を 提供できるため非常に効果的です つまりユーザーはApple Vision Proの Digital Crownを回して イマーシブのない状態から フルイマーシブまで 希望するイマーシブレベルを設定できます immersiveSpaceシーンタイプには 他にも利点があります 例えばカスタムの色合いや パススルーの明るさなどですが これらについては このセッションの後半で説明します
イマーシブ空間のカスタマイズ について詳しくは セッション「Dive deep into volumes and immersive spaces」をご覧ください
visionOSで素晴らしいメディア視聴体験を 実現するには AVKitの機能 特にAVPlayerViewControllerを 活用することをお勧めします これによりシステムとの統合で ビデオ再生機能が強化されます
AVPlayerViewControllerを使用すると HLSストリーミングがサポートされ TVやミュージックなどの システムアプリに一致する 使い慣れた再生体験を 簡単に提供できます 再生コントロールが簡素化されるため ユーザーはメディアに集中できます visionOSでは AVPlayerViewControllerを全画面で表示すると 様々な優れた機能を利用できます その1つは システムの ドッキング動作への関与です ドッキングするとビデオ画面が 固定位置に配置されるため イマーシブ空間での フルスクリーン体験が向上します デフォルトではドッキング位置は システムが決定しますが Custom Docking Regionを指定することで カスタマイズできるようになりました カスタムドッキング領域の使用については Destination Videoサンプルで 確認できます このサンプルはAVKitと ImmersiveSpaceの基盤で構築されています Reality Composer Proの Docking Regionコンポーネントを使用して ビデオをカスタム環境の最適な場所に 配置する方法を説明します ここでは Reality Composer Proを使います 3Dコンテンツを準備して 体験を視覚化するには Reality Composer Proを使う必要があります Reality Composer Proを使用して この新しいプロジェクトに Video Dockプリセットを追加します 左側はScene Navigatorです Scene Navigatorの下部には 挿入ボタンであるプラス記号があります 挿入ボタンを選択し メニューで プリセットを選択します
ビューポートにVideo Dockプリセットの 一部が表示されています ビューポートを使用すると 3Dシーンの視覚化 ナビゲート プレビューを行えます メニューの Frame Sceneを使用すると Video Dockプリセット全体が よく見えるようになります Scene Navigatorに戻り Video Dockエンティティを展開して Playerエンティティがあることを確認します
Playerエンティティを選択すると インスペクタの右側に 新しいプロパティが表示されます インスペクタでは 位置や回転など Playerエンティティのプロパティを 簡単に編集できます
Playerエンティティの インスペクタの下部には Docking Regionコンポーネントもあります ここでDocking Regionを カスタマイズできます
Docking Regionをカスタマイズする前に メニューで を選択します
これによりカメラが移動して 原点が見えるようになります
immersiveSpaceはシーンなので 暗黙的に独自の座標系を定義します immersiveSpaceに配置するものはすべて その原点を基準にして相対的に配置されます immersiveSpaceの原点は immersiveSpaceが最初に開かれたとき ユーザーの下 つまり足元近くにあります ビューポートの中央に dockingRegionが表示されています dockingRegionの位置によって ビデオプレーヤーの位置が決まります
原点を基準にして dockingRegionを配置しましょう
インスペクタに戻ると で 幅プロパティを確認できます Docking Regionの幅が定義するのは 境界領域で 2.4:1のアスペクト比を使用した メディア再生の最大サイズです 最大幅より大きいビデオは 境界領域内に収まるように サイズ変更されます 幅プロパティを変更すると Docking Regionのサイズを カスタマイズできます ご覧のとおり Docking Regionの幅を変更すると 高さもそれに従います
これでDocking Regionの 幅と高さが広くなったので Playerエンティティを 上に移動させる必要があります 位置のTransformを変更して エンティティを上げます プレーヤーは地面の少し上にあると快適で 映画館のスクリーンのように感じられます
これはプロジェクトの始まりにすぎません もっと完成度の高いものを見てみましょう Destination Videoサンプルには Studioという名前のフォルダがあり その中にReality Composer Pro プロジェクトがあります Studioプロジェクトを開いて セットアップを表示し メニューで を選び プレビューできるようにします
StudioのDocking Regionの 配置を見ると ユーザーとメディア再生との間にほとんど オブジェクトがないことがわかります その目的はユーザーに クリアな視界を提供することです
Studioには対称性があり Docking Regionが 空間のこの位置にあることには 建築的な思考が働いています この配置は 空間を際立たせ メディア再生を部屋に適合させ よりイマーシブな体験を提供することを 目的としています
Docking Regionに対応するように カスタム環境をデザインしてください 長時間の視聴中に 負担や不快感が生じないように 快適な視聴角度を 提供することをお勧めします Reality Composer Proは プレビューとして役立ちますが Apple Vision Proで実際の環境と ドッキングの配置を必ず確認してください モニターとApple Vision Proでは スケールとレイアウトの認識が 大きく異なる場合があるため デバイスでテストするのが一番です dockingRegionは理想的な位置にあるので ビデオ再生がカスタム環境に どのように反射するかを見てみましょう
Destination Videoに戻ると Studioサーフェス上のメディア反射は メディアが再生されている場所を示し この空間にメディアを 固定するのに役立ちます メディア反射を カスタム環境に合わせて調整すると バーチャル空間のどこで ビデオが再生されているかを ユーザーが理解しやすくなります
Reality Composer Proの ShaderGraphノードには 2種類のメディア反射があります 鏡面反射と拡散反射です 反射により メディアコンテンツとバーチャル空間の間に 相互作用が生じ 現実感とイマーシブ感が高まります これらの反射を 奥行きの手がかりとして使用して ユーザーがカスタム環境の画面の位置を 理解できるようにします これにより ビデオ再生に集中できます 鏡面反射は ビデオコンテンツを直接反射するため 金属、鏡、水など 非常に光沢のある表面に適しています
メディアの鏡面反射を設定する場合 必要なのは シーン内のdockingRegion コンポーネントを持つエンティティと Reflection_Specularノードが接続された 表面上のマテリアルだけです RealityKitは dockingRegionの位置と 地面のテクスチャ座標を使用して 反射を計算し 反射されたメディアを表面に レンダリングします 拡散反射はビデオコンテンツの ソフトな減衰を提供し
木製の床やコンクリートのような より粗くて有機的な表面に適しています Video Dockプリセットで提供されている 実装はほんの一例です Docking Regionや 地面エンティティを移動する または独自のメッシュを使用する場合は Reflection_Diffuseの テクスチャ座標を再計算し そのデータをReality Composer Proに インポートする必要があります
Studioは拡散反射を使用します 減衰がソフトなほど 床の マテリアルプロパティに適しているからです Studioには鏡面反射が含まれていますが あくまでデモンストレーション目的です メディアと環境を補完しながら 邪魔にならないように よりバランスの取れた方法で 反射を統合する例については visionOSシステム環境を確認してください 学ぶべきことはまだ沢山あるので Destination Videoサンプルと 補足資料をご覧ください 鏡面反射を有効にして 拡散反射を構成する方法について 詳しく説明しています 次にビジュアルとサウンドを使用して カスタム環境全体の体験の基盤を 構築する方法について説明します いくつかの新機能を使用します Virtual Environment Probe BrightnessとTint Reverbなどです Virtual Environment Probeから 始めましょう
Virtual Environment Probeは 色の変化と照明の強度の観点から 位置を記述します システムはこの情報を使用して 物理ベースのレンダリングマテリアルを 自動的にシェーディングし 光がオブジェクトから反射する様子を 正確に近似します プローブを使用すると ImmersiveSpace内のオブジェクトに 環境照明を当てることができます 段階的なイマーシブスタイルで 環境を作成している場合 このバーチャル環境照明は ImmersiveSpace外のオブジェクトの 現実世界の照明を徐々に置き換えます 例えばこの金属球は Studioと現実世界を取り巻く環境が 混ざり合ったものを反射しています このエフェクトは段階的イマーシブで 自然に見えるリアルなオブジェクトです
またシーンが2つのバリアントを サポートしている場合 例えばDestination Videoの暗いStudioと 明るいStudioをサポートしている場合 2つの事前生成された環境リソースと それらの間のブレンド係数を使用して Virtual Environment Probeを 構成できます この場合 暗いリソースと明るいリソース間のスムーズな トランジションをアプリコードが担い イマーシブ感の混合をシステムが担います トランジションは 短くすることをお勧めします visionOSシステム環境では 暗いリソースから明るいリソースへの トランジションは1.5秒です 次はBrightnessとTintです カスタム環境の外観に応じて ユーザーの手の照明を 環境照明とうまく 融合させたい場合があります 映画館で照明が暗くなるような感じです visionOSでは 色合いと明るさをカスタマイズして ユーザーの周囲環境と メディア再生の境界をぼかしながら ユーザーの手がイマーシブ体験に 属しているように見せることができます
Studioの暗いバージョンに合わせて 手の外観が変化しているのがわかりますか? これにより カスタム環境の イマーシブ感が高まり 視聴体験に集中できます
Destination Videoの immersiveContentBrightnessと surroundingsEffectのコードサンプルを見て メディアアプリで これらの機能をどのように使用するかの 参考にしてください ユーザーの気を散らすことなくイマーシブ感を高める 微妙な色合いを試してみてください ビジュアルを改善したことで 環境の見た目がよくなりました さらにReality Composer Proの 新しいReverbコンポーネントを使って 作成した空間サウンドとシステムサウンドを カスタム環境により適合させイマーシブ感を いっそう高めることもできます
現実の世界では音は反響し 人の耳に届く前に壁や家具に跳ね返ります デフォルトではvisionOSは 人の現実世界の環境の音響を シミュレートすることで 空間オーディオソースを反響させます
反響はバーチャル環境でも シミュレートできます Mount Hoodシステム環境を 訪れたことがあるなら 夜のカエルの鳴き声を 聞いたことがあるでしょう これらの空間サウンドには 屋外環境を シミュレートするリバーブがあります これでカスタム環境の 空間サウンドとシステムサウンドに リバーブを適用できるようになりました リバーブを有効にするには インスペクタの ボタンを使用して 新しいプロジェクトに Reverbコンポーネントを追加します
次にインスペクタに移動し 最適なリバーブプリセットを選択します プリセットは高品質で自然な リバーブ設定の厳選されたセットです 共鳴を追加し カスタム環境に似た環境で 空間サウンドを聞く体験をシミュレートします カスタム環境でリバーブプリセットを 選択することをお勧めします カスタムオーディオがない場合でも これを選択することで システムはプリセットを使用して UIやボタンなどのシステムサウンドを 空間化できます これらのシステムサウンドは 実行時に存在するオーディオソースです
例えば微妙なリバーブを適用して 最適なリスニング体験を追加するには Medium Room (Treated)プリセットを 使用します カスタム環境が屋外スペースの場合は Outdoorプリセットを使用します または大規模な屋内環境の場合は Very large roomリバーブプリセットを使って 大規模に展開します これはStudioで使用されるプリセットです リバーブの実装と調整方法の詳細については 「Enhance your spatial computing app with RealityKit audio」セッション をご覧ください カスタム環境で メディア再生のイマーシブ感を 高める方法を習得したので 次はImmersive Environment Pickerを 利用して visionOSシステム環境と同じリストに カスタム環境を表示する方法を 詳しく見ていきましょう Immersive Environment Pickerに Studio環境のDestination Videoの 新しいセクションが追加されました
Studioを選択すると この環境が開き メディアがDocking Regionに ドッキングされます このリストにカスタム環境を 追加することもできます タイトルや画像などのメタデータで カスタム環境を記述して 宣言するだけで ユーザーがドッキングしたときに 環境を認識できるようになります
ビューで.immersiveEnvironmentPicker 修飾子を使用して そのビュー内のビデオプレーヤーに イマーシブ環境を追加します ここで 各カスタム環境がピッカーに どのように表示されるかを宣言できます 各環境には タイトル、画像、 選択されたときに開く イマーシブ空間を含めます
SharePlayについて説明します すでにSharePlayを使用して メディアを同期している場合は AVKitによって環境の状態も 同期されるようになり イマーシブな視聴体験を さらに共有できるようになります 仕組みを見てみましょう このコードスニペットでは GroupSessionを使って 共有可能なコンテンツを デバイス間で同期します セッションでメディアを同期するには AVPlayerのAVPlaybackCoordinatorに渡します 同じセッションで視聴環境を同期するには まずAVKitとGroupActivitiesの 両方をインポートし 次にセッションをAVPlayerViewControllerの AVGroupExperienceCoordinatorに 渡します これでアクティビティ参加者が フルスクリーンで視聴するときに 同じ視聴環境を共有できます
ここまで Immersive SpaceシーンタイプとAVKitを 再生体験の基盤として使用する方法 Custom Docking Regionと メディア反射を使用して イマーシブ感を高める方法 Virtual Environment Probe、Reverb BrightnessとTintを使用して 体験の基盤を構築する方法を紹介しました これらの機能を使用して イマーシブ感を高めると ユーザーはその空間にいるように感じ 意図したとおりの リアルな体験を 楽しんでもらうことができます ユーザーが気を散らすことなく 体験に集中できるように メディアをはっきりと快適に 見えるようにしてください またImmersive Environment Pickerと SharePlayの使い方も紹介しました このセッションが よりイマーシブ感のある メディア再生体験を実現するための 入門書として役立つことを願っています Destination Videoサンプルと 関連するセッションを 詳しくご覧ください 皆さんが構築するイマーシブな カスタム環境でメディアを視聴するのを 楽しみにしています
-
-
15:14 - Add environments to the Immersive Environment Picker
WindowGroup { ContentView() .immersiveEnvironmentPicker { ForEach(viewModel.environmentItems) { item in Button(item.title, image: item.thumbnail) { Task { await openImmersiveSpace(id: item.id) } } } } }
-
15:47 - Synchronization of an environment state using SharePlay
import AVKit import GroupActivities for await session in MyActivity.sessions() { // join the session, activate the activity, etc. playerViewController .player? .playbackCoordinator .coordinateWithSession(session) playerViewController .groupExperienceCoordinator .coordinateWithSession(session) }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。