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

使用ARWorldTrackingConfiguration时RealityKit模型实体变暗如何解决

问题产生原因

ARWorldTrackingConfiguration默认开启了真实环境光照估计能力,RealityKit会自动调用摄像头采集的实时环境光强度、色温参数,动态调整虚拟物体的渲染亮度,设计初衷是让虚拟物体和真实场景的光照风格更统一。而不使用该配置时,RealityKit默认加载固定基础光照参数,不会叠加动态调光逻辑,所以模型会保持你预设的正常亮度。
还有一个常见的隐藏触发因素:如果开启ARWorldTrackingConfiguration后没有手动配置环境探针,RealityKit默认的环境漫反射、反射参数会被自动拉低,带PBR材质的模型偏暗的表现会格外明显。

可行修复方案
  • 关闭自动光照估计
    直接在初始化配置时禁用光照估计功能,渲染逻辑就会切回固定光照模式,和你不用ARWorldTrackingConfiguration时的表现一致:
let config = ARWorldTrackingConfiguration()
config.isLightEstimationEnabled = false
arView.session.run(config)

如果是适配旧版iOS,可使用对应API关闭:

config.lightEstimationEnabled = false
  • 手动添加强制光源覆盖系统动态光照
    给Model Entity绑定自定义定向光、环境光,设置isDefault为true强制覆盖系统的动态光照参数:
// 主定向光补亮主体
let mainLight = DirectionalLight()
mainLight.light.intensity = 1000 // 可按需调整亮度数值
mainLight.light.color = .white
mainLight.position = [0, 3, 2]
mainLight.isDefault = true // 关键参数,标记为场景默认光源
modelEntity.addChild(mainLight)

// 环境光补亮暗部
let ambientLight = AmbientLight()
ambientLight.light.intensity = 400
ambientLight.isDefault = true
modelEntity.addChild(ambientLight)
  • 调整材质光照响应参数
    如果不想关闭光照估计、需要保留虚实融合效果,可直接调高材质的亮度相关参数:
var customMaterial = SimpleMaterial()
// 调高基础色亮度
customMaterial.color = .init(tint: .white.withAlphaComponent(1), texture: nil)
// 调高粗糙度提升漫反射亮度,范围0-1
customMaterial.roughness = .float(0.7)
// 降低金属度减少暗部吸光
customMaterial.metallic = .float(0.1)
modelEntity.model?.materials = [customMaterial]
  • 开启自动环境纹理采集
    需要保留环境光估计的话,可开启自动环境探针功能,让RealityKit采集真实环境的反射信息补全光照:
let config = ARWorldTrackingConfiguration()
config.environmentTexturing = .automatic
arView.session.run(config)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:00:04