RealityKit のアップデートについて(AI要約+加筆)。ManipulationComponent やSceneUnderstandingFlags によって仮想物体とのインタラクションや現実世界との融合がかなりラクに実装できそう。SwiftUIとの統合が進んだ点は別のセッションで網羅されてるはずなのでそちらでキャッチアップする。
0:00 – Introduction
- RealityKitは、3Dコンテンツをアプリに統合し、リアルなレンダリングと没入感のある体験を提供するフレームワーク
- visionOSに加え、iOS, iPadOS, macOSでもクロスプラットフォームで利用可能
- 今年からtvOSにも対応し、AppleTV 4Kで3D体験が可能に
ManipulationComponent,EnvironmentBlendingComponent,MeshInstancesComponentなど、仮想と現実を融合させる新機能が多数追加
3:19 – Anchoring updates
- RealityKitから直接ARKitのデータにアクセスできる新しい
SpatialTrackingSessionAPIを導入 AnchorStateEventsを購読することで、アンカーの状態変化- 固定成功
DidAnchor - 固定解除
WillUnanchor - 固定失敗
DidFailToAnchor
- 固定成功
ARKitAnchorComponentを通じてARKitアンカーの生のトランスフォームや範囲を取得し、仮想コンテンツを現実世界の平面などに正確に配置- デモアプリでは、テーブルの表面を検出し、ARKitの生のデータ (
originFromAnchorTransformanchorFromExtentTransform) にアクセス
6:52 – ManipulationComponent
- シーン内の3Dエンティティを掴んだり回転させたりするインタラクションを簡単に追加できる新しいコンポーネント
configureEntityを呼ぶだけで、入力や当たり判定、ホバーエフェクトなどの設定を自動追加releaseBehaviorでオブジェクトを離した際の挙動(元の位置に戻るか、その場に留まるか)を制御ManipulationEvents(WillBegin,WillEndなど)でインタラクションの状態を検知し、物理演算のオン/オフなどを細かく制御
10:01 – Scene understanding
SpatialTrackingSessionを通じて、ユーザーの周囲環境のメッシュ(Scene Understanding mesh)を生成SceneUnderstandingFlags(.collision/.physics)- 生成されたメッシュを物理シミュレーションに組み込むことで、仮想オブジェクトが現実の机や床などに衝突・落下するリアルな表現が可能に
11:18 – EnvironmentBlendingComponent
- 仮想エンティティが、静的な現実世界の物体(壁や家具など)によって自然に隠される(オクルージョン)効果を実現する新コンポーネント
- これにより、仮想オブジェクトが現実空間にさらに溶け込んだような表現が可能になる
12:26 – MeshInstancesComponent
- 一つのエンティティで、同じメッシュを複数回効率的に描画(インスタンシング)できる新コンポーネント
- 従来、同じ物体を大量に配置する場合、エンティティ (ModelComponent) を大量にコピーする必要があった
MeshInstancesComponentを利用することで、メッシュのコピーを大量に生成するよりも、メモリと処理負荷を大幅に削減LowLevelInstanceDataに各インスタンスのトランスフォーム(位置・回転・拡縮)を設定するだけで、大量のオブジェクトをシーンに配置可能- それぞれに
CustomMaterialを設定可能
- それぞれに
16:28 – Immersive media
- 新しい
ImagePresentationComponentで、2D画像、空間写真(Spatial Photo)、空間シーン(Spatial Scene)の3種類の画像を表示可能に - 空間シーン(Spatial Scene): 1枚の2D写真から深度情報を持つ3D画像を生成する新技術。頭の動きに合わせて視差が生まれ、写真が立体的に見える。
spatial3DImage.generate()でユーザー操作をトリガーに spatial scene への変換が可能(写真アプリ)ImagePresentationComponentは非同期で初期化され、表示モード(2D/空間写真など)も指定可能- Spatial video playback / Apple Immersive Video format について
21:43 – Accessories and more
- Spatial Accessories: Shared space / Full space 内で、6DoF追跡、ハプティックフィードバックのサポート
- RealityKit への SwiftUI の統合
ViewAttachmentComponent: entityにSwiftUI viewを直接追加PresentationComponent: entityにmodal presentation, popoverを追加GestureComponent: entityにSwiftUI gestureを追加
- Entity の新API
- attach method:entity に別の entity をアタッチ可能に:アニメーションする骨格の関節へのメッシュ追加が容易に(手動のアライン処理や構造的な transform updates が不要)
Entity(from: data):RealityKit scene や UDS をオンラインソースやストリーム経由でイニシャライズ可能に
- AVIF テクスチャのサポート
- Hover Effect GroupID
- ホバーエフェクト間の関連付けが可能
- 同一のGroupIDで、構造に関係なくホバーの切り替えが共有される
- Post processing for RealityView