2016-09-16 11 views
4

As this thread на форумах Apple упоминает, что индикаторы на iOS 10 теперь слабее и меняют, как выглядят сцены.SceneKit: как воспроизвести цветной эффект освещения iOS 9 (одно направленный, один окружающий) на iOS 10 без отключения PBR?

Нить предлагает установить 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.

Наше приложение позволяет пользователям настраивать цвет направленного света. Цель состоит в том, чтобы воспроизвести одно и то же настроенное освещение с сцены iOS 9 в сцене iOS 10, используя преимущества PBR.

1) Как мы можем гарантировать, что сцены с iOS 10 выглядят идентичными сценариям iOS 8/9?

2) Как вы можете достичь # 1 при использовании PBR?

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

Это подтвержденная ошибка в наборе сцен. Мы подали отчет в Bug Reporter при ошибке числе 28459280. Проблема в том, металл всегда устанавливает locksAmbientWithDiffuse в true на прошивке 10.

По словам одного из инженеров Scene Kit, обходной путь, чтобы вручную установить locksAmbientWithDiffuse в true для узлов (в этом примере - узел пола), затем отрегулируйте освещение на iOS 8/9 до тех пор, пока не будет достигнут желаемый внешний вид.

Это должно обеспечить, чтобы сцены в iOS 10 выглядели так же, как сцены с iOS 8/9.

1

Вы можете сделать вашу сцену на iOS 10, как это делается на iOS 9, изменив модель освещения его коврика от SCNLightingModelPhysicallyBased до SCNLightingModelBlinn.

Пример: Если у вас есть только одна 3D модель в сцене:

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

Однако, делая это, вы не сможете воспользоваться PBR. Если вы хотите продолжать использовать PBR, то вы можете играть с intensity и temperature свойствами SCNLight для достижения разных результатов.

+0

Спасибо! Где вы это читали? Итак, вы должны сделать это и установить SCNDisableLinearSpaceRendering = YES? Обратите внимание, что это происходит только на устройстве. На симуляторе свет выглядит отлично на iOS 10. – Crashalot

+0

Вы имеете в виду 'mt.lightingModel'? Кажется, что в классе docs нет свойства 'lightingModelName' ... – Crashalot

+0

Этот' floorNode.geometry? .FirstMaterial? .LightingModel = SCNMaterial.LightingModel.blinn' вместе с 'SCNDisableLinearSpaceRendering = YES' не работал, к сожалению. Будет обновлен вопрос со сценой и перед/после съемки, если вы хотите попробовать воспроизвести. Благодаря! – Crashalot