Отражательные характеристики графических объектов

Зеркальное и диффузное отражение

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

Также см. material команда для удобного способа создать определенные подсветкой эффекты.

Можно контролировать количество зеркального и диффузного отражения от поверхности объекта путем установки SpecularStrength и DiffuseStrength свойства. Этот рисунок иллюстрирует различные настройки.

Окружающий свет

Окружающий свет является бессветным светом, который равномерно светит на всех объектах сцены. Окружающий свет видим только, когда в осях есть световые объекты. Существует два свойства, которые управляют окружающим светом - AmbientLightColor - свойство оси, которое устанавливает цвет, и AmbientStrength является свойством закрашенной фигуры и поверхностных объектов, которое определяет интенсивность окружающего света на конкретном объекте.

Этот рисунок показывает три различных цвета окружающего света при различной интенсивности. Сфера красная, и присутствует белый световой объект.

Зеленый [0 1 0] окружающий свет не влияет на сцену, потому что нет красного компонента в зеленом свете. Однако цвет, заданный значениями RGB [.5 0 1], имеет красный компонент, поэтому он способствует свету на сфере (но меньше, чем белый [1 1 1] окружающий свет).

Зеркальная экспонента

Размер зеркального пятна подсветки зависит от значения закрашенной фигуры и поверхности объекта SpecularExponent свойство. Типичные значения для этого свойства варьируются от 1 до 500, при этом нормальные объекты имеют значения в области значений от 5 до 20.

Этот рисунок показывает красную сферу, освещенную белым светом с тремя различными значениями для SpecularExponent свойство.

Зеркальное отражение цвета

Цвет зеркально отраженного света может варьироваться от комбинации цвета объекта и цвета источника света до цвета только источника света. Закрашенная фигура и поверхностные SpecularColorReflectance свойство контролирует этот цвет. Этот рисунок показывает красную сферу, освещенную белым светом. Значения SpecularColorReflectance свойство варьируется от 0 (объект и светлый цвет) до 1 (светлый цвет).

Освещение задней поверхности

Подсветка задней грани полезно для отображения различия между внутренними и внешними гранями. Эти изображения вырезанных цилиндрических поверхностей иллюстрируют эффекты подсветки задней поверхности.

Значение по умолчанию для BackFaceLighting является reverselit. Эта настройка изменяет направление нормалей вершины, которые обращены в сторону от камеры, заставляя внутреннюю поверхность отражать свет в сторону камеры. Настройка BackFaceLighting на unlit отключает подсветку на гранях с нормалями, указывающими от камеры.

Можно также использовать BackFaceLighting для удаления эффектов ребра для замкнутых объектов. Эти эффекты происходят, когда BackFaceLighting установлено в reverselit пиксели вдоль ребра замкнутого объекта освещаются так, как если бы их вершинные нормали обращались к камере. Это создает неправильно освещенный пиксель, потому что пиксель видим, но действительно обращен от камеры.

Чтобы проиллюстрировать этот эффект, на следующем рисунке показан взрыв ребра освещенной сферы. Настройка BackFaceLighting на lit предотвращает неправильную подсветку пикселей.

Позиционирование источников света в пространстве данных

Этот пример создает сферу и кубик и освещается затем двумя источниками света. Световые объекты расположены в бесконечности, но в направлениях, заданных их векторами положения.

% Create a sphere
sphere(36);
axis([-3 3 -3 3 -3 3]) 
hold on
% Create a cube
fac = [1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
vert = [1 1 1;1 2 1;2 2 1;2 1 1;1 1 2;1 2 2;2 2 2;2 1 2];
patch('faces',fac,'vertices',vert,'FaceColor','y');
% Add lights
light('Position',[1 3 2]);
light('Position',[-3 -1 3]);
hold off

The light функции задают два световых объекта, расположенных в бесконечности в направлении, заданном Position векторы. Эти векторы заданы в координатах осей [x, y, z].