Main Content

조명 개요

조명 명령

MATLAB® 그래픽스 환경에서는 광원을 배치하고 조명을 반사하는 객체의 특성을 조정할 수 있는 명령을 제공합니다. 다음과 같은 명령들이 있습니다.

명령

용도

camlight

카메라 위치를 기준으로 조명 생성 또는 이동

lightangle

구면 좌표에 조명 생성 또는 배치

light

light 객체 생성

lighting

조명 방식 선택

material

조명을 받는 객체의 반사율 속성 설정

특정한 결과를 얻기 위해 조명 속성과 조명을 받는 객체 속성을 설정할 수 있습니다. 이 항목 영역에 제공된 자료 외에도, 시각화에 사용할 수 있는 조명을 소개하는 조명 예제를 살펴볼 수 있습니다.

light 객체

light 함수를 사용하여 light 객체를 생성할 수 있습니다. 다음 세 가지 light 객체 속성이 중요합니다.

  • Color — light 객체에서 나오는 조명의 색

  • Style — 무한히 멀리 떨어져 있음(디폴트 값) 또는 로컬

  • Position — 방향(무한대 광원의 경우) 또는 위치(로컬 광원의 경우)

Color 속성은 광원에서 나오는 방향성 조명의 색을 결정합니다. 장면에 표시되는 객체의 색은 객체 자체의 색과 광원의 색으로 결정됩니다.

Style 속성은 광원이 지정된 위치에서 모든 방향으로 방사되는 점 광원인지(Stylelocal로 설정됨), 또는 무한대의 거리에 떨어진 곳에 배치되어 있어 지정된 위치의 방향에서 평행 광선으로 비치는 광원인지(Styleinfinite로 설정됨)를 결정합니다.

Position 속성은 좌표축 데이터 단위에서 광원의 위치를 지정합니다. 무한대의 거리에 떨어져 있는 광원의 경우, Position은 광원에 대한 방향을 지정합니다.

조명은 조명과 같은 좌표축에 있는 surface 객체와 patch 객체에 영향을 미칩니다. 이러한 객체에는 조명을 비추면 모습이 변하는 여러 가지 속성이 있습니다.

조명에 영향을 미치는 속성

light 객체 자체를 볼 수는 없지만, 조명이 포함된 좌표축에 있는 patch 객체와 surface 객체에 작용하는 light 객체의 효과는 볼 수 있습니다. surface, patch, surf, mesh, pcolor, fill, fill3 함수 등 여러 가지 함수가 이러한 객체를 생성합니다.

다양한 axes, light, patch, surface 객체 속성을 설정하여 조명 효과를 제어할 수 있습니다. 모든 속성에는 일반적으로 바람직한 결과를 생성하는 디폴트 값이 있습니다. 하지만 이러한 속성의 값을 조정하면 사용자가 구체적으로 원하는 특정 효과를 얻을 수 있습니다.

속성

효과

AmbientLightColor

장면에서 배경 조명의 색을 지정하는 axes 속성으로, 배경 조명은 방향이 없고 모든 객체에 균일한 영향을 미칩니다. 주변광 효과는 좌표축상에 보이는 light 객체가 있을 때만 발생합니다.

AmbientStrength

patch와 surface의 속성으로, 객체에서 반사되는 조명의 주변 성분의 명암을 결정합니다.

DiffuseStrength

patch와 surface의 속성으로, 객체에서 반사되는 조명의 확산 성분의 명암을 결정합니다.

SpecularStrength

patch와 surface의 속성으로, 객체에서 반사되는 조명의 정반사 성분의 명암을 결정합니다.

SpecularExponent

patch와 surface의 속성으로, 반사면의 크기를 결정합니다.

SpecularColorReflectance

patch와 surface의 속성으로, 정반사가 객체 색 또는 광원 색으로 채색되는 정도를 결정합니다.

FaceLighting

patch와 surface의 속성으로, 객체의 면에 작용하는 조명의 효과를 계산하는 데 사용되는 방법을 결정합니다. 무조명(no lighting), 단순(flat) 조명 또는 구로(Gouraud) 조명 알고리즘 중에서 선택할 수 있습니다.

EdgeLighting

patch와 surface의 속성으로, 객체의 가장자리에 작용하는 조명의 효과를 계산하는 데 사용되는 방법을 결정합니다. 무조명, 단순 조명 또는 구로 조명 알고리즘 중에서 선택할 수 있습니다.

BackFaceLighting

patch와 surface의 속성으로, 면의 꼭짓점 법선이 카메라에서 멀어지는 쪽을 가리킬 때 면에 조명을 비추는 방식을 결정합니다. 이 속성은 객체의 내부 곡면과 외부 곡면을 구분하는 데 유용합니다.

FaceColor

patch와 surface의 속성으로, 객체 면의 색을 지정합니다.

EdgeColor

patch와 surface의 속성으로, 객체 가장자리의 색을 지정합니다.

VertexNormals

patch와 surface의 속성으로, 객체의 각 꼭짓점에 대한 법선 벡터를 포함합니다. MATLAB은 꼭짓점 법선 벡터를 사용하여 조명 계산을 수행합니다. MATLAB이 이 데이터를 자동으로 생성하지만, 사용자가 따로 꼭짓점 법선을 지정할 수도 있습니다.

NormalMode

patch와 surface의 속성으로, MATLAB에서 사용자가 객체 데이터를 변경할 경우 꼭짓점 법선을 다시 계산할지(auto) 아니면 VertexNormals 속성의 현재 값(manual)을 사용할지를 결정합니다. VertexNormals의 값을 지정하면 MATLAB이 이 속성을 manual로 설정합니다.

자세한 내용은 Axes 속성, Surface 속성, Patch 속성를 참조하십시오.

조명 제어 예제

조명은 그래픽 장면에 사실성을 더하기 위한 기법입니다. 자연광(예: 태양의 직사광선)을 받는 객체에서 발생하는 명암을 시뮬레이션합니다. 조명 효과를 창출하기 위해, MATLAB은 light라는 그래픽스 객체를 정의합니다. MATLAB은 surface 객체와 patch 객체에 조명을 적용합니다.

예제 — 장면에 조명 추가하기

이 예제에서는 멤브레인 곡면을 표시하고 카메라 위치의 오른쪽에서 발산하는 광원으로 이 곡면에 조명 효과를 줍니다.

membrane
camlight

조명을 만들면 주변광과 같은 특성을 제어하는 여러 가지 조명 관련 속성과 객체의 반사율 속성이 활성화됩니다.

Surface plot with lighting. The surface has a reflective appearance.

예제 — 수학 함수에 조명 효과 주기

조명으로 수학 함수의 곡면 그래프를 향상할 수 있습니다. 예를 들어, ezsurf 명령을 사용하여 -6π에서 6π까지의 영역에 대해 다음 표현식을 계산합니다.

sin(x2+y2)÷(x2+y2)

h = fsurf(@(x,y) sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2), ...
[-6*pi,6*pi]);

Surface plot with default appearance

이제 방위각과 고도 값으로 표현한 조명 위치를 수용하는 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';

Surface plot shown from a different angle with lighting to give it a reflective appearance

findobj를 사용하여 surface 객체의 핸들을 얻은 후에는 곡면에서 조명이 반사되는 방식에 영향을 주는 속성을 설정할 수 있습니다. 이러한 속성에 대한 자세한 설명은 조명에 영향을 미치는 속성 항목을 참조하십시오.