Хорошо, теперь у вас есть основные знания. Теперь мы можем поговорить об освещении. Мы будем работать на одном примере, более сложном чем 'сфера над плоскостью', посмотрим, чего мы можем достигнуть в реалистичном освещении, используя Blender.
Обратимся к сцене на Рис 25. Фигура в сцене это Корнелиус, младший братик Сюзанны. У него светло-коричневый блестящий материал (R=0.8, G=0.704, B=0.584, Ref=0.7 Spec=0.444, Hard=10 - Да, не совсем как у настоящей обезьянки, но мы говорим об освещении, а не о материалах!) и стоит он на синей плоскости (R=0.275,G=0.5,B=1.0, Ref=0.8, Spec=0.5, Hard=50). Сейчас он освещен единственным светом типа Spot (Energy=1.0, R=G=B=1.0, SpotSi=45.0, SpotBl=0.15 ClipSta=0.1,ClipEnd=100,Samples=3,Soft=3, Bias=1.0, ShadowBufferSize=512).
Рендеринг Корнелиуса с этими настройками, с OSA=8 и включенной кнопкой Shadows выдаст результат как на Рис 26. Результат ужасный. Имеем очень черные, нереалистичные тени на Корнелиусе, а тень, созданная самим Корнелиусом - недопустима.
Вначале подстроим ClipStart и ClipEnd, если они откорректированы, так чтобы охватить сцену настолько, насколько возможно (ClipSta=5, ClipEnd=20) результаты будут определенно лучше, по крайней мере для проектируемой тени. Собственная тень Корнелиуса все еще слишком темная (Рис 27).
Для установки правильных значения для ClipStart и ClipEnd, есть хороший прием: Любой объект в Blender'е, может действовать как камера в 3D-виде. Следовательно, вы можете выбрать лампу Spot и переключится на вид из неё, нажатием CTRL + NUM 0. То, что вы увидели бы в теневом режиме, показано на Рис 28.
Всё что ближе к Spot, чем к ClipSta и дальше от Spot чем от ClipEnd - вовсе не отображается. Следовательно, вы можете точно подстроить эти параметры, проверяя, чтобы была видна вся тень, отбрасываемая объектом.
Рис 28. Настройка света Spot с разными дистанциями. Слева: ClipSta слишком завышен; В центре: Хорошо; Справа: ClipEnd слишком низкий.
Чего еще действительно не хватает -так это физического явления диффузии(распространение). Освещенное тело излучает свет от самого себя, следовательно, тени не могут быть полностью черными, потому что есть некая утечка света из соседних освещенных областей.
Эта диффузия света, правильно рассчитывается в Ray Tracer'е, и в Blender'е тоже, посредством движка Radiosity. Но есть настройки, которые могут моделировать это явление приемлемым способом.
Мы рассмотрим их, методом от простого к более сложному.
Освещение методом трёх точек - это очень простая, классическая схема для получения обильного, мягкого освещения в сцене. Наша лампа Spot будет основная, или Ключевая, лампа в сцене которая создает тень. Мы добавим еще две лампы для эмуляции диффузии.
Следующая лампа, которая нам понадобится, называется 'Задний свет'. И расположим ее позади Корнелиуса (Рис 29). Это осветит скрытую часть нашего персонажа, и позволит нам отделить передний план нашей картинки от фона, а также даст ощущение глубины. Обычно, Задний свет, такой же силы как и Ключевой, если не сильнее. Здесь мы использовали свет типа Lamp с параметром Energy=1 (Рис 30).
Результат уже намного лучше. Наконец, третья лампа это 'Заполняющая'. Цель Заполняющей лампы - это осветить тени на передней части Корнелиуса. Мы разместим Заполняющую лампу, точно там, где и камера, с параметром Energy ниже, чем самый низкий из параметров у Ключевой лампы и Заднего света (Рис 31). Для данного примера параметр Energy=0.75 (Рис 32).
Заполняющий свет, делает видимыми те части модели, которые находятся в темноте при использовании только Ключевого и Заднего света.
![]() |
"Просачивание" цвета |
---|---|
Схема из трех точек, может быть расширена добавлением четвертой лампы, особенно при наличии ярко-окрашенного пола, как в данном случае. Если есть ярко-окрашенный пол, наш глаз ожидает, что пол распространит часть света вокруг, и что часть этого света осядет на модель. Чтобы смоделировать этот эффект, мы размещаем вторую лампу Spot, относительно пола, точно в зеркальном отражении к Ключевой лампе. Это означает, что если пол горизонтален и z=0, как в нашем примере, а Ключевая лампа находится в точке (x = -5, y = -5, z= 10), тогда разбрасываемый полом свет, должен быть размещен в (x = -5, y = -5, z = -10), и направлен вверх (Рис 33). Энергия этой лампы должна быть меньше, чем у Ключевой (в этом случае 0.8) и её цвет, должен полностью совпадать с цветом пола (в этом примере R=0.25, G=0.5, B=1.0). Результат на Рис 34 Пожалуйста, обратите внимание, что мы использовали лампу Spot, а не простую Lamp, её свет будет полностью блокирован (затенен), если не будет выключена соответствующая кнопка Shadow. На самом деле, мы могли бы использовать просто Lamp, но если пол блестящий он больше отражает, чем распространяет свет. Отраженный свет, физически, это свет идущий от зеркально расположенного источника. |
Использование лампы Spot как Ключевой свет, в первом примере, ее настройки строго привязаны для использования внутри помещения или, максимум, снаружи, но в ночное время. Это из-за того что Ключевой свет ограничен дистанцией, его лучи расходятся и пол неравномерно освещается.
Если бы мы были снаружи, в ясный солнечный день, весь пол был бы равномерно освещен, и присутствовали бы тени.
Чтобы получить равномерное освещение по всему полу, свет Sun как раз подойдет. А если мы добавим свет Hemi для эмуляции света идущего со всех точек неба (как на Рис 8 в разделе Свет типа Hemi) мы получим отличное освещение... но, не будет теней!
Установки: Ключевой свет (свет Sun, R=1.0, G=0.95, B=0.9, Energy=1.0) и Заполняющий/Задний свет (Свет Hemi, R=0.8, G=0.9,B=1.0, Energy=0.6) показаны на Рис 35, а соответствующий отрендеренный Рис 36
Недостаток тени, делает Корнелиуса как бы плавающим в пространстве. Для того чтобы получить тень, давайте разместим лампу Spot, так, чтобы она совпадала с лампой Sun и имела такое же направление. А также сделаем Spot без тени (нажмите кнопку OnlyShadow). Снизим Energy на 0.9, а все остальные настройки оставим такими же как и в предыдущем примере (ShadowBufferSize=512, Samples=3 Soft=3 Bias=1 ClipSta=5, ClipEnd=20), результат на одном из Рис 37 (в центре).
Тень слегка блокирована, потому, что Корнелиус имеет много четких мелких деталей, а значение ShadowBufferSize слишком маленькое, значение Samples также низкое, чтобы вычислить все эти детали. Если ShadowBufferSize повысить на 2560, а Samples на 6 и Bias на 3.0 то результат будет как на Рис 37 (справа). Более гладкая тень.
Концепция света, идущего из точки - это приближение. Источник света нереального мира безразмерный. Весь свет излучается поверхностями, но не точкой.
Это имеет пару интересных значений, главным образом для тени:
Точных теней не существует: тени имеют размытые края
Расплывчатость края тени зависит от относительных позиций и размеров освещения, от объекта дающего тень и объекта, получающего тень.
Первый из этих вопросов это приблизительные настройки 'Soft' для лампы Spot , но второй нет. Чтобы ясно понять этот пункт, вообразите себе высокий тонкий шест, по середине плоской поверхности, освещенной Солнцем.
Солнце - это не точка, оно имеет размеры. Если вы посмотрите на тень, вы заметите, что она очень точная в основе шеста и размывается по направлению к его верхушке. Если шест очень высокий и тонкий, то его тень исчезает.
Чтобы лучше понять эту концепцию, посмотрите на Рис 38. Солнце излучает свет, объект по середине перекрывает солнечные лучи только в темно-синей зоне. Для точки в светло-синей зоне, солнечный свет частично доступен, а это значит, что каждая из этих точек освещена.
Светло-синяя зона это частично затененная область, где освещение понижается плавно, от полного света до полной тени. Это также очевидно, из Рис 38 чем эта область перехода меньше, рядом с объектом создающим тень, тем она становится больше дальше от него. Кроме того, если объект создающий тень меньше, чем объект дающий свет (и если объект дающий свет это Солнце , это часто бывает) есть дистанция, на которой только частично остается тень Рис 39.
В Blender'е, если мы разместим одну лампу Spot на фиксированном расстоянии от первой плоскости, и посмотрим на тень упавшую на вторую плоскость и будем отдалять вторую плоскость дальше, мы заметим что тень становится больше, но не мягче (Рис 40).
Чтобы в Blender'е симулировать пространственный свет, нам нужно использовать несколько ламп Spot, как будто мы создаем область дающую свет из многих точек.
Для этого в Blender'e есть лампа типа Area, но этого можно добиться или разместив несколько ламп spot вручную или использовать инструмент Blender'а - DupliVert (создание дубликатов объекта на каждой вершине), который более эффективен.
Добавьте Меш-решетку 4x4, там где расположена лампа Spot, убедитесь, что нормали смотрят вниз (Рис 41). Привяжите лампу Spot к меш-решетке, способом "Родтель-ребенок" (CTRL+P), выберите решетку и в кнопках управления объектом (F7), на панели Anim settings, нажмите DupliVert и Rot. Кнопка Rot необязательна, но потом она поможет вам в позиционировании области света. У вас получится набор ламп Spot как на Рис 42.
Затем уменьшите значение Energy для Spot. Если для одной лампы Spot, вы использовали определенное количество энергии, теперь вам нужно разделить эту энергию на количество дубликатов ламп. У нас получилось 16 ламп Spot, значит каждая лампа должна иметь 1/16 от значения Energy основной лампы(то есть Energy=0.0625).
Такие же как и вышеупомянутые два рисунка, освещенные новым способом, уступят результатам на Рис 43. Результат далек от ожидаемого, потому что область света слишком грубая. Но с другой стороны, повысить качество освещенного участка, можно увеличив число дубликатов лампы Spots и тем самым, увеличить время рендеринга.
Намного лучший результат можно получить смягчив световое пятно лампы Spot, вот параметры для SpotBl=0.45, Sample=12, Soft=24 и Bias=1.5 (Рис 44)
И наконец, Рис 45 показывает как выглядит Корнелиус, после замены Ключевого света на 65 дубликатов Spot с Energy=0.0154 и с кольцевым шаблоном. Пожалуйста, обратите внимание, как тень плавно переходит от точной к более мягкой и мягкой.
Вышеупомянутые методы работают хорошо, когда есть единственный источник или так или иначе ограниченное количество источников света, отбрасывающие отчетливые тени.
Единственные исключения - это наружный свет, где свет Hemi эмулирует свет идущий с неба и настройка пространственного света, где множество точек эмулируют источник света с ограниченным расширением.
Первые два очень хорошо подходят для наружного освещения, где не важно, что свет Hemi не отбрасывает теней , а следовательно, вы не получите реалистичный результат.
Чтобы получить настоящий наружный свет, особенно при дневной облачной погоде, вам понадобится свет, идущий со всех точек неба, да еще и с тенями!
Этого можно добится используя туже методику, что и для пространственного света, но используя полу-сферу как родительский меш. Обычно это называется как " Глобальное Освещение ".
Вы можете использовать или UVsphere или IcoSphere, последняя имеет равномерно распределенные вершины, в то время как первая имеет большую концентрацию вершин на полюсах. Использование IcoSphere , даст больше "однородного" освещения, излучение всех точек неба имееют одинаковую интенсивность; UVsphere, дает больше света от полюсов. Лично я рекомендую IcoSphere.
Давайте все приготовим, возьмем плоскость и несколько примитивов, как на Рис 46. Мы будем использовать простые формы, чтобы легче было оценить результаты.
Переключитесь на вид сверху и добавьте IcoSphere, уровень подразделения 2 для IcoSphere обычно достаточный, а уровень 3 даст более мягкий результат. Увеличте IcoSphere так, чтобы она полностью свободно покрывала всю сцену. Переключитесь на вид спереди и в режиме редактирования удалите нижнюю часть IcoSphere (рис 47). Это будет наш "купол", где на каждой вершине мы разместим лампы типа Spot, при помощи инструмента DupliVert.
Снова перейдите на вид сверху и добавьте свет Spot, привяжите его к половинке IcoSphere, способом parent и нажмите кнопки DupliVert и Rot также как и в предыдущем примере. Результат при виде спереди на Рис 48.
Но это не то, что нам надо, все источники света направлены наружу и сцена не освещена. Это из-за того что нормали IcoSphere смотрят тоже наружу. Чтобы изменить направление нормалей, в режиме редактирования, выберите все вершины и в окне кнопок редактирования (панель Mesh Tools) нажмите кнопку "Flip Normals" (Рис 49).
Это приведет к результату как на Рис 50.
Чтобы получить хороший результат, выберите основную лампу Spot и измените параметры следующим образом: SpotSi=70.0, SpotBl=0.5, ClipStart: в нашем случае 5 и ClipEnd: 30, повысьте значение Samples: на 6 и Soft:12. Уменьшите значение Energy на 0.1; таким образом, будут настроены все остальные дубликаты Spot. (Рис 51).
Теперь можно сделать рендеринг. Если добавлены какие-либо материалы и настроен World (окружающая среда), результат будет как на Рис 52. Обратите внимание на мягкие тени и 'всенаправленный' свет. Еще лучших результатов можно достигнуть, если использовать IcoSphere с уровнем подразделением 3.
Эта методика глобального освещения эффективно заменяет, для наружного освещения, лампу Hemi, но ценой высокой вычислительной мощности.
Можно добавить направленный источник света, чтобы эмулировать Солнце, или с помощью одиночной лампы Spot или Area.
Альтернативный способ чтобы сделать IcoSphere более неравномерной, это подразделить одну из ее граней, как это сделано на Рис 53. Выберите одну грань и нажмите кнопку "Subdivide", затем, снимите выбор и снова выберите маленькую внутреннюю грань и подразделите ее и т.д.
В результате получим очень мягкий направленный свет, вместе с глобальным освещением (Анизотропный купол ) (Рис 54 ). Это достаточно хороший свет для облачной погоды, но не подходит для ясного солнечного дня. Чтобы получить освещение ясного солнечного дня, освещение купола необходимо отделить от солнечного света, чтобы можно было назначить им разные цвета.