WWDC Quick Look 💓 By SwiftGGTeam
visionOS 27 で次世代体験を構築する

visionOS 27 で次世代体験を構築する

元の動画を見る

ハイライト

visionOS 27 は、Apple Vision Pro にコンテンツを届ける3つの道筋を開発者に提供します。既存の iOS/iPadOS App の互換実行、RealityKit と Reality Composer Pro 3 によるネイティブ空間体験の構築、そして Spatial Preview と Foveated Streaming による Mac や PC 上の重いコンテンツのヘッドセットへのストリーミングです。さらに RealityKit は物理空間ライティング、布シミュレーション、Gaussian splatting、カスタムリバーブメッシュを追加し、Reality Composer Pro 3 は AI Assistant、Animation Graph、Script Graph、Navigation Mesh を導入します。

主要内容

visionOS への3つの道筋

以前、visionOS にコンテンツを持ち込む選択肢は限られていました。iOS App を互換モードでそのまま出すか、SwiftUI + RealityKit で一から作り直すかです。前者は体験が平凡になりやすく、後者はコストが非常に高いものでした。(03:12)

visionOS 27 は、この道筋を3つに広げます。

  1. 互換モード:既存の iOS/iPadOS App を visionOS 上で直接動かすか、Xcode で visionOS deployment target を追加して再ビルドできます。
  2. ネイティブ空間コンピューティング:SwiftUI、RealityKit、Reality Composer Pro で構築するか、CompositorServices でカスタムレンダリングエンジンを接続します。Unity、Unreal、Godot も visionOS をサポートしています。
  3. 拡張ストリーミング:Mac App は Spatial Preview フレームワークで 3D コンテンツをヘッドセットへ送り、PC App は Foveated Streaming フレームワークで OpenXR コンテンツをストリーミングします。(04:36)

今回のアップデートで最も実務的なのは3つ目の道筋です。Kia と Innoactive は Autodesk VRED + NVIDIA CloudXR + Foveated Streaming を使って自動車デザインを行っています。Laminar Research は X-Plane でフライトシミュレーション訓練を行っています。これらの事例は、Apple がようやく重要な現実を認めたことを示しています。重い 3D コンテンツはヘッドセット単体の計算能力だけでは処理できないことがあり、PC ストリーミングは本当の必要条件です。(00:42)

RealityKit:視覚から聴覚まで全面的に進化

visionOS 27 の RealityKit は4つの中心機能を追加します。

Physical Space Lighting は、仮想光源が現実世界の表面を照らせるようにします。講演では仮想プラネタリウム投影機が示され、投影機が回転すると星や星雲の光が部屋中に投影されました。内部では新しい Projective Textures API を使っており、スポットライトにテクスチャを付けて、ステンドグラス投影や水中の caustics をシミュレートできます。(07:25)

Cloth Simulation は、仮想の衣服や布に現実的な重さと垂れ方を与えます。デモでは仮想マネキンがロングスカートを着て歩き、裾が自然に揺れました。仮想シーツを引っ張ると、布も物理法則に従って折れ曲がります。(08:03)

Custom Reverb Mesh は、空間オーディオのリアリティをさらに高めます。システムは木材、金属、石など、シーン内の材質に応じて音の吸収と散乱を精密にシミュレートできます。講演の仮想博物館バンドのデモでは、音が単一方向から来るのではなく、空間全体を四方から満たしていました。(08:33)

Gaussian Splatting により、開発者は現実の物体を直接スキャンして仮想シーンへ取り込めます。デモでは小さな鉢植えが 3D Gaussian splat モデルとしてスキャンされ、土の質感まで鮮明に見えていました。(09:04)

Reality Composer Pro 3:アーティストと TA が Swift を書かずに済む

以前の Reality Composer Pro は静的なシーン配置ツールに近く、複雑なロジックは結局 Xcode に戻ってコードを書く必要がありました。RCP 3 はこのワークフローを大きく変えます。(09:51)

Reality Composer Pro Assistant は、テキスト説明から材質とテクスチャを備えた 3D モデルを直接生成できます。講演では、ドライフルーツの入ったボウルを生成してシーン内の空のボウルへ自動配置し、さらにテーブル上の 3D キャンドルも生成していました。(10:25)

Animation Graph は状態機械でアニメーション遷移を制御します。開発者はエディタ内で idle から walking への遷移を視覚的に設定し、ヘッドセット内でリアルタイムにプレビューできます。(11:12)

Navigation Mesh は歩行可能領域を自動生成し、青いメッシュとして表示します。その後、ジャンプ地点、はしご、障害物を手動で追加し、キャラクターがシーン内を自動的に経路探索できるようにします。(11:31)

Script Graph はノード接続でインタラクションロジックを扱います。タップイベントでキャラクター移動を駆動し、すべての編集を RCP 3 内で完了できます。Xcode を開く必要はありません。Devs United Games は、Aquascape のキャラクター登場アニメーションを数個のノードで実装し、魚のアニメーション再生速度も実際の移動速度に自動で合わせていました。(11:55)

Shader Graph も大幅に強化され、subsurface scattering が追加されました。リアルな肌、目、髪、氷面、ポータルなどの効果を作れます。(12:49)

Spatial Preview:Mac コンテンツをワンアクションでヘッドセットへ送る

Spatial Preview は macOS フレームワークで、Mac App から画像、文書、3D コンテンツを Apple Vision Pro へ直接送れます。SharePlay 協業にも対応しています。(15:42)

開発者はヘッドセット内を自由に歩き回り、コンテンツ位置を調整し、材質の上書きを変更し、注釈付きのフィードバックを追加できます。Cinema4D と SketchUp はすでにこの機能を統合し、リアルタイム協業 3D ワークフローを実現しています。macOS 27 の Preview App もこの機能を内蔵し、ユーザーはすぐに使えます。(16:48)

Foveated Streaming:視線で帯域を節約する

Foveated Streaming は、Apple Vision Pro が PC に接続して OpenXR コンテンツをストリーミングできるようにします。visionOS は手、コントローラー位置、マイクデータを自動的に PC へ送り、PC は映像と音声ストリームを返します。体験はネイティブ App と変わりません。(17:41)

このフレームワークは visionOS 26.4 ですでにリリースされ、X-Plane 12、iRacing、Autodesk VRED が統合済みです。中核技術は注視点圧縮です。アイトラッキングデータに基づいて、ユーザーが見ている領域は高画質で送信し、周辺視野は低解像度にします。プロトコルの下層には NVIDIA CloudXR を使い、Wi-Fi によるワイヤレスストリーミングに対応し、ケーブルや外部機器は不要です。(19:26)

Apple の実測では、OpenXR App は1日で動かせ、visionOS 独自機能は1週間以内に統合できます。(20:07)

Object Tracking と空間アクセサリ

visionOS 27 の Object Tracking は高フレームレート追跡をサポートします。Create ML は手持ち物体の追跡精度を高める拡張トレーニングオプションを追加し、表示補正のないメートル単位の空間 pose を取得する新 API も追加しました。高精度な空間計測に向いています。これらの機能は iOS にも提供されます。(21:09)

Spatial Accessories は visionOS 27 の新しい方向性です。開発者は自分でアクセサリを作れます。ヘッドセット追跡用の LED constellation、方向と加速度を取得する IMU、信号を送る Bluetooth チップを組み合わせます。ボタン、タッチパッド、触覚フィードバックを持たせることもできます。DFRobot と MikroE は今年、既製の参照ハードウェアと開発キットを出す予定です。(23:21)

デモでは、DFRobot seeMote Cap を取り付けた 3D プリントの懐中電灯が、物理的な懐中電灯の動きに合わせて仮想光線をリアルタイムに追従させていました。また、MikroE Spatial Anchor R1 を物理ハンドルに組み込むと、仮想車両がハンドルの回転に合わせて動きました。(24:12)

没入型メディアパイプラインの更新

Apple Immersive Video(AIV)はビデオオンデマンドとライブストリームをサポートします。各フレームは1億ピクセルを超え、90fps、立体 180 度で撮影されます。(25:38)

Immersive Media Support(IMS)フレームワークは visionOS 27 で、カメラ表示オーバーレイコマンド、ImmersivePreviewRenderer API、ワイド比率 portal サポートを追加しました。新しいサンプルコードでは、static foveation を使ってデュアルトラック QuickTime 動画を圧縮し、高画質 AIV を通常の帯域幅でストリーミングする方法を示しています。(27:34)

ASAF(Apple Spatial Audio Format)Production Suite も更新され、参照動画相対配置、Scene Compressor プラグイン、ヒートマップ描画、空間フィルタリングアルゴリズムの強化が追加されました。(30:17)

詳細

Projective Textures API の使い方

シナリオ:RealityKit でスポットライトに投影テクスチャを追加し、ステンドグラスや水中 caustics のような効果を再現します。

import RealityKit

let spotlight = Entity()
var lightComponent = SpotLightComponent()
lightComponent.intensity = 5000
lightComponent.innerAngleInDegrees = 30
lightComponent.outerAngleInDegrees = 45

if let projectionTexture = try? TextureResource.load(named: "stained_glass") {
    lightComponent.projectedTexture = projectionTexture
}

spotlight.components.set(lightComponent)
spotlight.look(at: [0, -1, 0], from: [0, 2, 0], relativeTo: nil)

重要ポイント:

  • SpotLightComponent はスポットライトコンポーネントを作成し、強度と内外の円錐角を設定します
  • TextureResource.load(named:) は投影テクスチャリソースを読み込みます
  • projectedTexture 属性はテクスチャをスポットライトに結び付け、光がパターンを通ってシーン表面に投影されるようにします
  • look(at:from:relativeTo:) はライトの向きと位置を設定し、[0, 2, 0] から [0, -1, 0] へ向けます

Foveated Streaming の注視点レンダリング設定

シナリオ:CompositorServices と組み合わせるために、カスタムレンダリングエンジンで foveated rendering を有効にします。

import CompositorServices

struct FoveatedLayerConfiguration: CompositorLayerConfiguration {
    func makeConfiguration(
        capabilities: LayerRenderer.Capabilities,
        configuration: inout LayerRenderer.Configuration
    ) {
        configuration.foveationEnabled = true
        configuration.foveationScaling = 0.6
        configuration.isStaticFoveation = false
    }
}

重要ポイント:

  • CompositorLayerConfiguration プロトコルはカスタムレンダリングレイヤーを設定します
  • foveationEnabled = true は foveated rendering を有効にし、システムがアイトラッキングデータに基づいて描画解像度を動的に調整できるようにします
  • foveationScaling = 0.6 は中央の高解像度領域の比率を設定します。値が小さいほど鮮明な中央領域は小さくなり、より帯域を節約できます
  • isStaticFoveation = false は動的注視点を使い、毎フレーム眼球位置に基づいて再計算します。動画ストリームなど固定焦点の場面では true にします

空間アクセサリの追跡を接続する

シナリオ:Game Controller フレームワークで空間アクセサリを接続し、RealityKit でその pose を追跡します。

import GameController
import RealityKit
import ARKit

// 空間アクセサリの接続通知を監視する
NotificationCenter.default.addObserver(
    forName: .GCControllerDidConnect,
    object: nil,
    queue: .main
) { notification in
    if let controller = notification.object as? GCController,
       controller.isSpatialAccessory {
        startTracking(controller)
    }
}

func startTracking(_ controller: GCController) {
    // RealityKit または ARKit を通じてアクセサリの空間 pose を取得する
    // アクセサリの LED constellation はヘッドセットへの視覚追跡を提供し、IMU は方向データを提供する
    // Bluetooth はボタンとタッチパッド入力を送信する
}

重要ポイント:

  • GCControllerDidConnect 通知は空間アクセサリがペアリングされた時に発火します
  • controller.isSpatialAccessory は、そのコントローラーが空間アクセサリかどうかを判定します。visionOS 27 の新しい属性です
  • ヘッドセットは LED constellation でアクセサリ位置を視覚追跡し、IMU が加速度と方向データを提供します
  • Bluetooth チップはボタン、タッチパッド、触覚フィードバック信号を送信します
  • 追跡頻度はディスプレイのネイティブリフレッシュレートに一致し、低照度や短い遮蔽でも安定して追跡できます

重要な示唆

1. Spatial Preview で 3D デザインレビュー工具を作る

何を作るか:Cinema4D や SketchUp のような Mac 上のデザインツールに「Vision Pro へ送る」ボタンを追加し、デザイナーとクライアントがヘッドセット内で 3D モデルの周囲を歩き回り、注釈を付け、材質を変更できるようにします。

なぜ価値があるか:Spatial Preview フレームワークにより、Mac App は visionOS App を構築しなくても空間プレビューを提供できます。SharePlay 対応により、リモートデザインレビューの反復周期を数日から数分へ短縮できます。

どう始めるか:macOS App に SpatialPreview フレームワークを導入し、SpatialPreview.start(configuration:) で USDZ コンテンツを送ります。supportsSharePlay = true を設定して協業を有効にします。

2. Foveated Streaming でデジタルツイン展示を作る

何を作るか:工場や建築の BIM モデルを PC 上でレンダリングし、Foveated Streaming で Vision Pro へストリーミングします。エンジニアが 1:1 スケールで walkthrough できるようにします。

なぜ価値があるか:BIM モデルは数千万ポリゴンになることがあり、ヘッドセット内でのローカルレンダリングは現実的ではありません。Foveated Streaming により、PC 側の Unreal Engine や Autodesk VRED が重いレンダリングを担当し、ヘッドセットは表示とインタラクションを担当できます。アイトラッキング圧縮により、Wi-Fi ストリーミングでも十分に滑らかになります。

どう始めるか:PC 側の OpenXR App を NVIDIA CloudXR SDK と統合し、ヘッドセット側は visionOS の Foveated Streaming フレームワークでペアリングします。基本ストリーミングは1日で通せ、1週間以内に ARKit 空間理解と SwiftUI UI を重ねられます。

3. Reality Composer Pro 3 の Script Graph でインタラクションをプロトタイプする

何を作るか:アーティストとデザイナーが RCP 3 内のノードグラフで、タップでドアを開く、キャラクターを経路探索させる、状態を切り替えるといったインタラクション全体を組み立てられるようにします。プログラマーは、書き出された中核ロジックを Swift で書き直すだけにします。

なぜ価値があるか:Script Graph + Animation Graph + Navigation Mesh により、非プログラマーでも実行可能な空間インタラクションプロトタイプを作れます。アイデア検証コストを大幅に下げられます。AI Assistant はプレースホルダーアセットの高速生成にも使えます。

どう始めるか:Reality Composer Pro 3 で新しいシーンを作り、Script Graph で OnTap などのイベントノードと MoveTo などの行動ノードを接続します。Navigation Mesh で歩行可能領域を定義し、「Vision Pro でプレビュー」をクリックして検証します。

4. Gaussian splatting で現実空間をスキャンし、没入型ガイドを作る

何を作るか:博物館展示室、歴史的建築、自然景観をスキャンして Gaussian splat モデルを生成し、Vision Pro 上で没入型ガイドや教育体験を作ります。

なぜ価値があるか:Gaussian splatting は従来のフォトグラメトリより軽量で、見た目も自然になりやすい技術です。RealityKit がネイティブ対応するため、独自レンダラーを書かずに SwiftUI + RealityKit で直接 App を構築できます。

どう始めるか:Polycam や Luma AI のような Gaussian splat 出力対応のスキャンツールでシーンを収集します。.splat または互換形式を書き出し、Reality Composer Pro 3 に読み込んでライティングを調整し、SwiftUI の RealityView でシーンを読み込みます。

5. 空間アクセサリで業界専用入力デバイスを作る

何を作るか:医療、産業、訓練向けに、物理ハンドル、プローブ、ステアリングホイールをカスタムします。DFRobot seeMote Cap または MikroE Spatial Anchor R1 を内蔵し、仮想コンテンツが物理ツールへ精密に追従するようにします。

なぜ価値があるか:空間アクセサリのオープンプロトコルにより、どんな物体も追跡コントローラーにできます。高フレームレート追跡と低遅延を組み合わせることで、手術ナビゲーション訓練、レーシングシミュレーション、産業保守ガイドなどの場面に役立ちます。

どう始めるか:DFRobot または MikroE の開発キットを購入し、LED constellation、IMU、Bluetooth モジュールを対象物に組み込みます。visionOS App では GameController フレームワークで接続イベントを監視し、RealityKit または ARKit で pose データを読み取ります。

関連 Session

コメント

GitHub Issues · utterances