ARLightEstimate - init () недоступен - PullRequest
2 голосов
/ 15 января 2020

Я получаю сообщение об ошибке: init() недоступно для ARLightEstimate.

  • Версия Xcode: 11.3.1
  • Версия Swift: 5

Код:

class LightSensorManager{

    let lightEstimate = ARLightEstimate()  // <-- error is here
    var ambientLightIntensity: CGFloat

    init() {
        ambientLightIntensity = lightEstimate.ambientIntensity
    }
}

Ошибка:

'init ()' недоступен

API для ARLightEsvaluation - ARKit

Я предполагаю, что это абстрактный класс? Но я не могу найти конкретный подкласс этого. Я только хочу использовать датчик внешнего освещения из этого API для обнаружения внешнего освещения.

1 Ответ

2 голосов
/ 15 января 2020

Вот как вы можете использовать Light Estimation в ARKit:

  • Включить оценку освещенности в методе экземпляра viewWillAppear (_ :):

    let configuration = ARWorldTrackingConfiguration()
    configuration.lightEstimationEnabled = true
    
  • Обновление освещения в рендерере (_: updateAtTime :) метод экземпляра:

    func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
    
        guard let lightEstimate = sceneView.session.currentFrame?.lightEstimate 
        else { return } 
        spotLight.intensity = lightEstimate.ambientIntensity / 1000.0
    }
    
  • Назначьте карту окружения, если вы sh:

    let environment = UIImage(named: "environmentMap.png")
    sceneView.scene.lightingEnvironment.contents = environment
    
  • Настройка интенсивности освещения:

    let intensity = lightEstimate.ambientIntensity / 1000.0 
    sceneView.scene.lightingEnvironment.intensity = intensity
    
...