2016-09-16 29 views
4

As this thread在蘋果論壇上提到,iOS 10的燈光現在變弱了,並改變了場景的外觀。SceneKit:如何在不禁用PBR的情況下在iOS 10上重現iOS 9照明色彩效果(單向,一個環境)?

該線程建議將SCNDisableLinearSpaceRendering設置爲YES,但這不起作用。換句話說,使用SCNDisableLinearSpaceRendering不會讓你的場景在iOS 10上看起來與iOS 9相同 - 至少在我們的測試中不是這樣。

我們也嘗試:

下面
floorNode.geometry?.firstMaterial?.lightingModel = SCNMaterial.LightingModel.blinn 

截圖顯示了相同的場景之間的差異。注意即使照明是相同的,地板從綠色變爲黃色也是如此。

場景包含一個方向燈和一個環境光。

複製場景文件:https://www.dropbox.com/sh/cg5f7hyf1oonxfu/AAAJef7LhpSxuJyUSjqfGbmca?dl=0

即使它確實起作用,將SCNDisableLinearSpaceRendering設置爲YES似乎禁用了PBR。

我們的應用程序可讓用戶自定義指示燈的顏色。目標是在利用PBR的同時,在iOS 10場景中再現iOS 9場景中相同的自定義照明。

1)我們應該如何確保iOS 10場景與iOS 8/9場景看起來相同?

2)如何在從PBR中獲益的同時獲得#1?

iOS的8/9(在模擬器上運行):

enter image description here

iOS的10(用戶設備上運行):

enter image description here

+0

爲了將它設置爲YES,我的SceneKit遊戲看起來與iOS 9完全相同。也許您遇到了該屬性的錯誤或某種邊緣問題,而不是它沒有做到您需要的東西? – Nerrolken

+0

@Nerrolken你使用了什麼類型的燈?我們只有一個環境光和一個方向燈。也許我們設置不正確?你只是從plist中設置它?你有做別的嗎? – Crashalot

+0

對我來說,只有一個Omni,週期性出現的Ambient。是的,我只是把它放在PList中,現在恢復正常了。當你設置該屬性時,你的設置是否改變? – Nerrolken

回答

0

這是Scene Kit中的一個已確認的錯誤。我們在錯誤名記者下錯誤號28459280.問題的報告是金屬總是將locksAmbientWithDiffusetrue iOS上10

根據現場套件工程師之一,解決方法是手動設置locksAmbientWithDiffusetrue爲節點(在這個例子中,地板節點),然後調整iOS 8/9上的照明直到達到所需的外觀。

這應該確保iOS 10場景看起來與iOS 8/9場景相同。

1

可以渲染場景在iOS 10像它是通過改變其墊子的照明模型在iOS 9呈現erials從SCNLightingModelPhysicallyBased到​​。

:如果你只有一個場景中的3D模型:

for(SCNMaterial * mt in model.geometry.materials) 
    mt.lightingModelName = SCNLightingModelBlinn; 

但是通過這樣做,你將不能夠採取PBR的優勢。如果你想繼續使用PBR,那麼你可以使用intensitytemperature屬性SCNLight來實現不同的結果。

+0

謝謝!你在哪裏讀到這個?所以你必須這樣做,並設置SCNDisableLinearSpaceRendering = YES?請注意,這隻發生在設備上。在模擬器上,iOS 10上的燈光看起來很好。 – Crashalot

+0

你的意思是'mt.lightingModel'嗎?在類文檔中似乎沒有'lightingModelName'屬性... – Crashalot

+0

此'floorNode.geometry?.firstMaterial?.lightingModel = SCNMaterial.LightingModel.blinn'連同'SCNDisableLinearSpaceRendering = YES'不幸運行。如果您想嘗試複製,請在場景和拍攝前後更新問題。謝謝! – Crashalot

相關問題