如何解决在RealityKit中为USDZ模型添加底影吗?
一段时间以来,我一直在尝试向RealityKit中的对象添加逼真的地面阴影。就我的用例而言,我将不会使用Reality Composer,也不会(针对每个this问题)会使用来自水平面的锚点实体(我的用户将点击以放置对象,并且该点击可以与任一对齐水平面或 ARMeshAnchor,因为我们在应用程序中支持LiDAR。
当我在iOS上通过QuickLook测试我的USDZ模型时,我看到iOS在我的模型下面添加了一个阴影,虽然不完全真实,但与没有阴影相比,它在表面上看起来更“放置”了。 / p>
在尝试添加模型时,我正在执行以下步骤;
self.model = Entity.load(named: "model.usdz")
当用户点击屏幕时,我会进行光线投射并将模型添加到构建的锚点上;
func session(_ session: ARSession,didAdd anchors: [ARAnchor]) {
for anchor in anchors {
if anchor.name == "tapped" {
let anchorEntity = AnchorEntity(anchor: anchor)
anchorEntity.addChild(self.model!)
arView.scene.addAnchor(anchorEntity)
}
}
}
将模型添加到攻丝点时,没有地面阴影。作为测试,我尝试添加一个定向光,认为它的位置可能会在物体上投射光,因此会产生阴影。我像这样创造光;
class Lighting: Entity,HasDirectionalLight {
required init() {
super.init()
self.light = DirectionalLightComponent(color: .white,intensity: 5000,isRealWorldProxy: true)
}
}
我添加了一个全局var lightEntity = AnchorEntity()
。然后,在我的viewDidLoad
方法中,我试图像这样设置灯光;
let spotLight = Lighting().light
let shadow = Lighting().shadow
lightAnchor.components.set(shadow!)
lightAnchor.components.set(spotLight)
arView.scene.anchors.append(lightAnchor)
self.model = Entity.load(named: "model.usdz")
虽然我可以看到物体上有 的光,但似乎并没有投射出任何阴影。
解决方法
如果您的应用支持 LiDAR ,您可以使用
arView.environment.sceneUnderstanding.options.insert(.receivesLighting)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。