本節(jié)學(xué)習(xí)目標(biāo)
1.如何檢測到真實(shí)環(huán)境中光照的亮度值
2.如何讓游戲場景中的光照匹配這個真實(shí)光照
效果如下
我們認(rèn)識一下ARSCNViewDelegate 它是繼承SCNSceneRendererDelegate, ARSessionObserver
那我們本節(jié)的第一個問題 如何檢測到真實(shí)環(huán)境的光照值呢,就是在SCNSceneRendererDelegate 這個協(xié)議里
func session(_ session: ARSession, didUpdate frame: ARFrame) {
// 環(huán)境光照的強(qiáng)度 強(qiáng)度低于2000
frame.lightEstimate?.ambientIntensity
// 環(huán)境色溫掀虎?取值在6000左右
frame.lightEstimate?.ambientColorTemperature
}
名詞解釋
環(huán)境色溫:色溫是指絕對黑體從絕對溫度(-273℃)開始加溫后所呈現(xiàn)的顏色
以上真實(shí)環(huán)境光照的值需要根據(jù)實(shí)際項(xiàng)目的需要進(jìn)行測量,下面問題來了怎么開啟環(huán)境光照評估呢?
// 第一步 設(shè)置代理
sceneView.delegate = self
let configuration = ARWorldTrackingConfiguration()
// 第二 開啟光照評估
configuration.isLightEstimationEnabled = true
sceneView.session.run(configuration)
完成上面兩步就能檢測到真實(shí)的光源了信息
下面我們開始第二問題 .如何讓游戲場景中的光照匹配這個真實(shí)光照
首先先關(guān)閉自動更新燈光選項(xiàng),不啟用默認(rèn)的燈光
sceneView.automaticallyUpdatesLighting = false
sceneView.autoenablesDefaultLighting = false
第二步 自定義燈光 親測環(huán)境光類型沒有效果,我們改用方向光代替,上下各加一個方向光
// 方向朝下的方向光
directional1.light = SCNLight()
directional1.light?.type = .ambient
directional1.light?.intensity = 65
directional1.light?.zNear = 0
directional1.position = SCNVector3Make(0, 0, 30)
directional1.rotation = SCNVector4Make(-1, 0, 0, Float.pi/2.0);
sceneView.scene.rootNode.addChildNode(directional1)
// 方向朝上的方向光
directional2.light = SCNLight()
directional2.light?.type = .directional
directional2.light?.zNear = 0
directional2.position = SCNVector3Make(0, 0, 30)
directional2.rotation = SCNVector4Make(1, 0, 0, Float.pi/2.0);
sceneView.scene.rootNode.addChildNode(directional2)
下面就是根據(jù)真實(shí)的環(huán)境光修改場景中這兩個燈光值
self.directional1.light?.intensity = (frame.lightEstimate?.ambientIntensity)!
self.directional1.light?.temperature = (frame.lightEstimate?.ambientColorTemperature)!
self.directional2.light?.intensity = (frame.lightEstimate?.ambientIntensity)!
self.directional2.light?.temperature = (frame.lightEstimate?.ambientColorTemperature)!
分享最前沿的技術(shù),助你成功!
我的博客即將搬運(yùn)同步至騰訊云+社區(qū)驰怎,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=3i4a1yo68wsg0