visionOS空间计算实战开发教程Day 9 打造“任意门”

我们在​​Day 8​​中演示了attachment的实现,本节的知识点是portal。portal相当于哆啦A梦里的任意门,它让我们可以打开另一个世界,这个世界独立于当前的世界,具有单独的光照系统并且由portal几何图形进行遮罩。

要创建portal,首先就需要创建一个世界(​​makeWorld​​),在其中可以添加自己的实体。接着创建portal并将其关联至刚刚创建的世界。

主要的代码如下:

复制代码
import SwiftUI
import RealityKit

struct ContentView: View {
    var body: some View {
        RealityView { content in
            let world = makeWorld()
            let portal = makePortal(world: world)
            content.add(world)
            content.add(portal)
        }
    }
    
    func makeWorld() -> Entity {
        let world = Entity()
        world.components[WorldComponent.self] = .init()
        
        let environment = try! EnvironmentResource.load(named: "Sunlight")
        world.components[ImageBasedLightComponent.self] = .init(source: .single(environment), intensityExponent: 12)
        world.components[ImageBasedLightReceiverComponent.self] = .init(imageBasedLight: world)
        
        let earth = try! ModelEntity.load(named: "Earth")
        earth.position = SIMD3<Float>(x: -0.1, y: 0, z: -0.4)
        world.addChild(earth)
        
        return world
    }
    
    func makePortal(world: Entity) -> Entity {
        let portal = Entity()
        
        portal.components[ModelComponent.self] = .init(mesh: .generatePlane(width: 0.5, height: 0.5, cornerRadius: 0.5), materials: [PortalMaterial()])
        portal.components[PortalComponent.self] = .init(target: world)
        
        return portal
    }
    
}

其中的​​Sunlight.skybox​​文件及​​Earth.usdz​​文件请见我们的代码仓库。

示例代码:​​GitHub仓库​​

其它相关内容请见​​虚拟现实(VR)/增强现实(AR)&visionOS开发学习笔记​​

相关推荐
东坡肘子1 天前
参与学生移动应用大赛有感 -- 肘子的 Swift 周报 #161
人工智能·swiftui·swift
视+老张6 天前
戴上AR眼镜后,古建导览怎样把看建筑、听故事和继续走连成一条线?
ar·ar眼镜·增强现实·智慧景区·easyar
Fatbobman(东坡肘子)7 天前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
开发语言·人工智能·redis·ios·swiftui·iphone·swift
QXWZ_IA7 天前
变电站数字孪生巡检的能力分层、数据接入与空间计算边界
运维·服务器·空间计算
各类产品分享18 天前
工厂 AR 点检系统落地:从硬件选型到工作流集成的技术要点
ar·ar巡检
茶底世界之下8 天前
iPhone Duo 适配实战,Awaking 踩过的 8 个坑
ios·swiftui·swift
摩尔芯创8 天前
Ansys Zemax AR光学系统实战课程
ar·软件需求·ansys·光学软件
Jmyd01238 天前
博物馆AR导览数字孪生架构设计:从空间数据到AR应用全链路
3d·系统安全·ar·数字孪生·博物馆·三维数字化
东坡肘子8 天前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
人工智能·swiftui·swift
各类产品分享19 天前
工业级 AR 巡检系统选型:核心参数与架构实现要点
架构·ar·ar巡检