조명 개요
조명 명령
MATLAB® 그래픽스 환경에서는 광원을 배치하고 조명을 반사하는 객체의 특성을 조정할 수 있는 명령을 제공합니다. 다음과 같은 명령들이 있습니다.
명령 | 용도 |
---|---|
카메라 위치를 기준으로 조명 생성 또는 이동 | |
구면 좌표에 조명 생성 또는 배치 | |
light 객체 생성 | |
조명 방식 선택 | |
조명을 받는 객체의 반사율 속성 설정 |
특정한 결과를 얻기 위해 조명 속성과 조명을 받는 객체 속성을 설정할 수 있습니다. 이 항목 영역에 제공된 자료 외에도, 시각화에 사용할 수 있는 조명을 소개하는 조명 예제를 살펴볼 수 있습니다.
light 객체
light
함수를 사용하여 light 객체를 생성할 수 있습니다. 다음 세 가지 light 객체 속성이 중요합니다.
Color
속성은 광원에서 나오는 방향성 조명의 색을 결정합니다. 장면에 표시되는 객체의 색은 객체 자체의 색과 광원의 색으로 결정됩니다.
Style
속성은 광원이 지정된 위치에서 모든 방향으로 방사되는 점 광원인지(Style
이 local
로 설정됨), 또는 무한대의 거리에 떨어진 곳에 배치되어 있어 지정된 위치의 방향에서 평행 광선으로 비치는 광원인지(Style
이 infinite
로 설정됨)를 결정합니다.
Position
속성은 좌표축 데이터 단위에서 광원의 위치를 지정합니다. 무한대의 거리에 떨어져 있는 광원의 경우, Position
은 광원에 대한 방향을 지정합니다.
조명은 조명과 같은 좌표축에 있는 surface 객체와 patch 객체에 영향을 미칩니다. 이러한 객체에는 조명을 비추면 모습이 변하는 여러 가지 속성이 있습니다.
조명에 영향을 미치는 속성
light 객체 자체를 볼 수는 없지만, 조명이 포함된 좌표축에 있는 patch 객체와 surface 객체에 작용하는 light 객체의 효과는 볼 수 있습니다. surface
, patch
, surf
, mesh
, pcolor
, fill
, fill3
함수 등 여러 가지 함수가 이러한 객체를 생성합니다.
다양한 axes, light, patch, surface 객체 속성을 설정하여 조명 효과를 제어할 수 있습니다. 모든 속성에는 일반적으로 바람직한 결과를 생성하는 디폴트 값이 있습니다. 하지만 이러한 속성의 값을 조정하면 사용자가 구체적으로 원하는 특정 효과를 얻을 수 있습니다.
속성 | 효과 |
---|---|
| 장면에서 배경 조명의 색을 지정하는 axes 속성으로, 배경 조명은 방향이 없고 모든 객체에 균일한 영향을 미칩니다. 주변광 효과는 좌표축상에 보이는 light 객체가 있을 때만 발생합니다. |
| patch와 surface의 속성으로, 객체에서 반사되는 조명의 주변 성분의 명암을 결정합니다. |
| patch와 surface의 속성으로, 객체에서 반사되는 조명의 확산 성분의 명암을 결정합니다. |
| patch와 surface의 속성으로, 객체에서 반사되는 조명의 정반사 성분의 명암을 결정합니다. |
| patch와 surface의 속성으로, 반사면의 크기를 결정합니다. |
| patch와 surface의 속성으로, 정반사가 객체 색 또는 광원 색으로 채색되는 정도를 결정합니다. |
| patch와 surface의 속성으로, 객체의 면에 작용하는 조명의 효과를 계산하는 데 사용되는 방법을 결정합니다. 무조명(no lighting), 단순(flat) 조명 또는 구로(Gouraud) 조명 알고리즘 중에서 선택할 수 있습니다. |
| patch와 surface의 속성으로, 객체의 가장자리에 작용하는 조명의 효과를 계산하는 데 사용되는 방법을 결정합니다. 무조명, 단순 조명 또는 구로 조명 알고리즘 중에서 선택할 수 있습니다. |
| patch와 surface의 속성으로, 면의 꼭짓점 법선이 카메라에서 멀어지는 쪽을 가리킬 때 면에 조명을 비추는 방식을 결정합니다. 이 속성은 객체의 내부 곡면과 외부 곡면을 구분하는 데 유용합니다. |
| patch와 surface의 속성으로, 객체 면의 색을 지정합니다. |
| patch와 surface의 속성으로, 객체 가장자리의 색을 지정합니다. |
| patch와 surface의 속성으로, 객체의 각 꼭짓점에 대한 법선 벡터를 포함합니다. MATLAB은 꼭짓점 법선 벡터를 사용하여 조명 계산을 수행합니다. MATLAB이 이 데이터를 자동으로 생성하지만, 사용자가 따로 꼭짓점 법선을 지정할 수도 있습니다. |
| patch와 surface의 속성으로, MATLAB에서 사용자가 객체 데이터를 변경할 경우 꼭짓점 법선을 다시 계산할지( |
자세한 내용은 Axes 속성, Surface 속성, Patch 속성를 참조하십시오.
조명 제어 예제
조명은 그래픽 장면에 사실성을 더하기 위한 기법입니다. 자연광(예: 태양의 직사광선)을 받는 객체에서 발생하는 명암을 시뮬레이션합니다. 조명 효과를 창출하기 위해, MATLAB은 light라는 그래픽스 객체를 정의합니다. MATLAB은 surface 객체와 patch 객체에 조명을 적용합니다.
예제 — 장면에 조명 추가하기
이 예제에서는 멤브레인 곡면을 표시하고 카메라 위치의 오른쪽에서 발산하는 광원으로 이 곡면에 조명 효과를 줍니다.
membrane camlight
조명을 만들면 주변광과 같은 특성을 제어하는 여러 가지 조명 관련 속성과 객체의 반사율 속성이 활성화됩니다.
예제 — 수학 함수에 조명 효과 주기
조명으로 수학 함수의 곡면 그래프를 향상할 수 있습니다. 예를 들어, ezsurf
명령을 사용하여 -6π에서 6π까지의 영역에 대해 다음 표현식을 계산합니다.
h = fsurf(@(x,y) sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2), ... [-6*pi,6*pi]);
이제 방위각과 고도 값으로 표현한 조명 위치를 수용하는 lightangle
함수를 사용하여 조명을 추가합니다.
view(0,75) shading interp lightangle(-45,30) h.FaceLighting = 'gouraud'; h.AmbientStrength = 0.3; h.DiffuseStrength = 0.8; h.SpecularStrength = 0.9; h.SpecularExponent = 25; h.BackFaceLighting = 'unlit';
findobj
를 사용하여 surface 객체의 핸들을 얻은 후에는 곡면에서 조명이 반사되는 방식에 영향을 주는 속성을 설정할 수 있습니다. 이러한 속성에 대한 자세한 설명은 조명에 영향을 미치는 속성 항목을 참조하십시오.