VisionOS Portal:如何让实体脱颖而出?

问题描述 投票:0回答:1

在 WWDC 演讲中“使用 RealityKit 增强您的空间计算应用程序”。我们了解如何使用 RealityKit 创建门户效果。 Vision Pro 上的“遭遇恐龙”体验中也有一个类似的传送门,只不过该传送门允许实体伸出传送门之外。使用提供的示例代码,我无法复制这种效果。使用示例代码,任何伸出门户的东西都会被剪掉。

如何让实体以类似于“遭遇恐龙”体验的方式伸出门户?

我熟悉使用 OcclusionMaterial 创建门户的旧方法,但是如果相机进入 OcclusionMaterial 和实体之间(例如在门户后面行走),这可能会破坏效果,而我无法在“邂逅恐龙”体验。

如果有帮助的话:我注意到,如果你从传送门的边缘非常仔细地观察,岩石不会像恐龙那样伸出来;它们会像恐龙一样伸出来。岩石被削断。因此,恐龙的渲染方式有所不同。

我尝试按照 WWDC 演讲“使用 RealityKit 增强空间计算应用程序”中的描述来设置场景。我创建了一个门户,并为其提供了针对我的世界的 PortalMaterial 和 PortalComponent。我创建了一个世界并给了它一个 WorldComponent。我使用 content.add 将所有内容添加到场景中,并获得了与 WWDC 演讲相同的效果,但无法让实体伸出门户。调整 PortalComponent 的 ClippingPlane 似乎根本没有帮助。

ios swiftui augmented-reality realitykit visionos
1个回答
0
投票

为了重现类似的门户效果,我使用了一个由内墙(法线指向内)、外墙(法线指向外)和大象模型组成的模型。代码就这么简单:

import SwiftUI
import RealityKit

struct ContentView : View {
    var body: some View {
        RealityView { content in
            if let portal = try? await Entity(named: "portal") {
                portal.scale *= 5
                portal.position.z = -2
                content.add(portal)
                
                // There are 3 models inside – inner, outer, elephant
                print(portal)
                
                let inner = portal.findEntity(named: "inner") as! ModelEntity
                var pbrMaterial = PhysicallyBasedMaterial()
                pbrMaterial.faceCulling = .none
                pbrMaterial.baseColor.tint = .systemRed
                inner.model?.materials = [pbrMaterial]
                
                let outer = portal.findEntity(named: "outer") as! ModelEntity
                let occlusionMaterial = OcclusionMaterial()
                outer.model?.materials = [occlusionMaterial]
                
                let elephant = portal.findEntity(named: "elephant") as! ModelEntity
                let goldenMaterial = SimpleMaterial(color: .yellow, isMetallic: true)
                elephant.model?.materials = [goldenMaterial]
            }
        }
    }
}

您可以从这里下载USDZ模型

© www.soinside.com 2019 - 2024. All rights reserved.