You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ARView中显示AR Quick Look同款地面阴影?

QLPreviewController和ARView里USDZ模型阴影差异的原因及解决办法

为啥ARView默认没阴影?

QLPreviewController是苹果现成的模型预览工具,自带了一套打包好的渲染环境——模拟了地面、固定打光,还有默认的阴影渲染逻辑,就是为了让模型一打开就有好看的展示效果,不用开发者额外折腾。

而ARView的核心是贴近真实AR场景:

  • 它的阴影默认要靠AR识别出来的真实地面/平面才能显示,刚打开AR还没检测到平面的时候,肯定没阴影;
  • 就算检测到平面了,ARView也没默认开启模型的阴影投射开关,得手动调整。

不用自定义,怎么在ARView里调出阴影?

按这几步操作就行:

  1. 准备阴影接收面:要么等ARView自动识别出真实地面,要么手动添加一个虚拟平面作为阴影接收层
  2. 给模型开启阴影权限:加载完USDZ模型后,找到对应的实体,开启投射和接收阴影的属性:
    // 假设加载好的模型实体是modelEntity
    modelEntity.castsShadow = true
    modelEntity.receivesShadow = true
    
    // 手动添加虚拟平面的代码示例
    let planeEntity = ModelEntity(mesh: MeshResource.generatePlane(width: 2, depth: 2))
    planeEntity.receivesShadow = true
    // 把平面放在模型下方合适位置,比如y=-0.1处
    planeEntity.position = SIMD3<Float>(0, -0.1, 0)
    arView.scene.addAnchor(AnchorEntity(children: [planeEntity]))
    
  3. 打开ARView的阴影渲染开关:
    arView.renderOptions.insert(.enableShadows)
    // 可调整光照强度让阴影更明显
    arView.environment.lighting.intensity = 1200
    

要是这么设置后还是觉得和QLPreview里的阴影效果差距大,那可能就得自定义阴影(比如用半透明纹理模拟软阴影),但大部分场景下,原生配置足够满足需求。

内容的提问来源于stack exchange,提问作者Programmer54

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:34:58