大多数浏览器和
Developer App 均支持流媒体播放。
-
探索适用于 visionOS 的对象跟踪
探索如何使用对象跟踪功能,在 visionOS App 中将现实世界的对象转化为虚拟锚点。了解如何使用对象跟踪功能从头到尾打造空间体验。探索如何利用 Create ML 中的机器学习功能创建参考对象,并将相对于目标对象的内容附加到 Reality Composer Pro、RealityKit 或 ARKit API 中。
章节
- 0:00 - Introduction
- 5:07 - Create reference object
- 9:28 - Anchor virtual content
资源
相关视频
WWDC24
WWDC23
-
下载Array
-
-
13:55 - Coaching UI - display object USDZ preview
// Display object USDZ struct ImmersiveView: View { @State var globeAnchor: Entity? = nil var body: some View { RealityView { content in // Load the reference object with ARKit API let refObjURL = Bundle.main.url(forResource: "globe", withExtension: ".referenceobject") let refObject = try? await ReferenceObject(from: refObjURL!) // Load the model entity with USDZ path extracted from reference object let globePreviewEntity = try? await Entity.init(contentsOf: (refObject?.usdzFile)!) // Set opacity to 0.5 and add to scene globePreviewEntity!.components.set(OpacityComponent(opacity: 0.5)) content.add(globePreviewEntity!) } } }
-
14:13 - Coaching UI - check anchor state
// Check anchor state struct ImmersiveView: View { @State var globeAnchor: Entity? = nil var body: some View { RealityView { content in if let scene = try? await Entity(named: "Immersive", in: realityKitContentBundle) { globeAnchor = scene.findEntity(named: "GlobeAnchor") content.add(scene) } let updateSub = content.subscribe(to: SceneEvents.AnchoredStateChanged.self) { event in if let anchor = globeAnchor, event.anchor == anchor { if event.isAnchored { // Object anchor found, trigger transition animation } else { // Object anchor not found, display coaching UI } } } } } }
-
14:31 - Coaching UI - Transform space with SpatialSession
// Transform space struct ImmersiveView: View { @State var globeAnchor: Entity? = nil var body: some View { RealityView { content in // Setup anchor transform space for object and world anchor let trackingSession = SpatialTrackingSession() let config = SpatialTrackingSession.Configuration(tracking: [.object, .world]) if let result = await trackingSession.run(config) { if result.anchor.contains(.object) { // Tracking not authorized, adjust experience accordingly } } // Get tracked object's world transform, identity if tracking not authorized let objectTransform = globeAnchor?.transformMatrix(relativeTo: nil) // Implement animation ... } } }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。