Main Content

그래픽스 객체의 반사율 특성

정반사와 난반사

patch 객체와 surface 객체의 반사율 특성을 지정하고 이를 통해 장면에 조명을 적용할 때 이들 객체의 보여지는 모습에 영향을 줄 수 있습니다. 특정 결과를 생성하기 위해 이러한 특성들을 같이 조정할 경우가 꽤 있을 것입니다.

편리하게 특정 조명 효과를 생성하는 방법을 보려면 material 명령도 참조하십시오.

SpecularStrength 속성과 DiffuseStrength 속성을 설정하여 객체의 곡면에서 정반사와 난반사의 양을 제어할 수 있습니다. 다음 그림은 다양한 설정값들을 보여줍니다.

주변광

주변광은 장면 내 모든 객체에 균일하게 비추는 방향성이 없는 빛입니다. 주변광은 좌표축에 light 객체가 있을 때만 볼 수 있습니다. 주변광을 제어하는 속성은 두 가지가 있습니다. AmbientLightColor는 색을 설정하는 axes 속성이고 AmbientStrength는 특정 객체에 비치는 주변광의 명암을 결정하는 patch 객체와 surface 객체의 속성입니다.

다음 그림은 다양한 명암에서 세 가지 다른 주변광 색을 보여줍니다. 구는 빨간색이며 장면에는 하나의 흰색 light 객체가 있습니다.

녹색 조명에는 빨간색 성분이 없으므로 녹색 [0 1 0] 주변광은 장면에 영향을 주지 않습니다. 하지만 RGB 값 [.5 0 1]로 정의된 색은 빨간색 성분을 포함하므로 구에 비치는 조명에 영향을 미칩니다(단, 흰색 [1 1 1] 주변광보다는 그 영향력이 덜함).

정반사 지수

반사면 지점의 크기는 patch 객체와 surface 객체의 SpecularExponent 속성값에 따라 결정됩니다. 이 속성의 일반적인 값 범위는 1~500이며, 일반적인 객체는 5~20 범위의 값을 갖습니다.

다음 그림은 세 가지 다른 SpecularExponent 속성값으로 흰색 조명을 비춘 빨간색 구를 보여줍니다.

색상 정반사율

정반사되는 조명의 색 범위는 객체 색과 광원 색의 조합부터 광원 색만 사용하는 것까지 다양할 수 있습니다. patch와 surface의 SpecularColorReflectance 속성은 이 색을 제어합니다. 다음 그림은 흰색 조명을 비춘 빨간색 구를 보여줍니다. SpecularColorReflectance 속성값의 범위는 0(객체 색과 조명 색)부터 1(조명 색)까지입니다.

후면 조명

후면 조명은 내부 면과 외부 면 사이의 차이를 보여 주는 데 유용합니다. 아래 잘려진 원통면 그림은 후면 조명의 효과를 보여줍니다.

BackFaceLighting의 디폴트 값은 reverselit입니다. 이 설정은 카메라 반대쪽을 향하는 꼭짓점 법선의 방향을 반전함으로써 내부 곡면이 카메라 쪽으로 조명을 반사하도록 합니다. BackFaceLightingunlit로 설정하면 카메라 반대쪽을 가리키는 법선을 가진 면에 대한 조명이 비활성화됩니다.

데이터 공간에 조명 배치하기

이 예제에서는 구와 정육면체를 만든 후 두 개의 광원으로 조명을 비춥니다. light 객체는 무한에 위치하고 있지만, 이들 객체의 위치 벡터로 지정되는 방향에 있습니다.

% 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

light 함수는 Position 벡터로 지정되는 방향으로 무한에 위치한 두 개의 light 객체를 정의합니다. 이 벡터는 좌표축 좌표 [x, y, z]로 정의됩니다.