Как заставить SCNSphere с рассеянным содержимым UIImage не заботиться о освещении, а просто показать оригинальный UIImage - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь добавить глобальную сферу к моей сцене, к которой применено изображение скайбокса.Проблема заключается в том, что освещение сцены напрямую влияет на ее представление.Я хотел бы, чтобы примененное изображение было представлено точно так, как задумано;по сути, не зависит от освещения.

Я предположил, что могу изменить SCNMaterial, чтобы это работало, но я не могу понять, какие настройки мне следует использовать.Мое альтернативное решение состоит в том, чтобы добавить к сцене тонну точечных SCNLights и направить их на сферу.Я бы хотел этого избежать.

let sphere = SCNSphere(radius: 2000.0)
sphere.firstMaterial?.isDoubleSided = true
sphere.firstMaterial?.diffuse.contents = UIImage(named: "skybox")

let sphereNode = SCNNode(geometry: sphere)
sphereNode.castsShadow = false
sphereNode.position = SCNVector3Make(0, 0, 0)
scene.rootNode.addChildNode(sphereNode)

Я знаю, что это можно решить с помощью SCNScene background.content, но мы используем ортографическую камеру, которая отключает функцию скайбокса по умолчанию.Итак, если вы знаете, как заставить скайбокс по умолчанию работать с орфографической камерой, это также решило бы эту проблему.См. Использование Cube Map Textures для спецификаций скайбокса.

1 Ответ

0 голосов
/ 20 декабря 2018

Оказывается, изображения скайбокса работают с орфографической камерой только на устройстве , а не на симуляторе.Перспективные камеры позволяют изображениям скайбокса работать как на симуляторе, так и на устройстве.Мы предполагали, что на симуляторе все в порядке, так как изображение скайбокса изначально работало, когда у нас была перспективная камера.

TL; DR При запуске приложения на физическом устройстве отображается скайбокс дляорфографическая камера;симулятор не.

...