SceneKit: значение zFar или Far Clipping влияет на направленные источники света и их тени?
Хотелось бы помочь пониманию направленного света и теней в Scene Kit.
Ссылка на класс на SCNLight говорит zFar
представляет собой the maximum distance between the light and a visible surface for casting shadows.
Далее предполагается, что это значение относится только к точечным источникам света.
Однако в Редакторе сцены XCode, под Инспектором Атрибутов, есть поле для Far Clipping
, Изменение этого значения влияет на тени, проецируемые направленным светом, как показано на скриншотах ниже.
Сцены ниже были созданы путем перетаскивания направленного света в сцену и изменения X Euler Angle
значение до -60 и отметьте флажок "Отбрасывает тени". Текстура пола взята из демоверсии WWDC Fox,
Far Clipping - это то же самое, что и zFar? Если нет, то какая разница?
Так как направленные источники света игнорируют свойство position, почему изменение значения Far Clipping влияет на тени, создаваемые направленным источником света?
Цель состоит в том, чтобы осветить всю сцену и спроецировать тени на узлы, как будто солнце было в 3 часа дня в безоблачный день. Можно ли использовать направленный свет для достижения этой цели? До сих пор использование направленных источников света позволяет получить вид, где освещена вся сцена, но не может управлять тенями, а также прожектором.
Снимок экрана № 1: Значение Far Clipping равно 10.
Снимок экрана № 2: Значение Far Clipping равно 30.
1 ответ
Несмотря на то, что говорится в документации Apple, положение направленного света очень важно, когда он отбрасывает тени. zNear
а также zFar
расстояния от положения направленного света.
Чтобы удалить артефакт, который вы видите, вам нужно увеличить zFar
или переместите направленный свет ближе к земле. Артефакт, который вы видите, вызван тем, что затененная часть находится дальше от направленного света, чем zFar
,