복잡한 3차원 객체 표시
이 예제에서는 복잡한 3차원 객체를 만들고 표시하며 이 객체의 모양을 제어하는 방법을 보여줍니다.
객체의 기하(Geometry) 가져오기
이 예제에서는 뉴얼 티포트(Newell teapot)라는 그래픽스 객체를 사용합니다. 티포트의 꼭짓점, 면, 색 인덱스 데이터는 teapotData
함수에 의해 계산됩니다. 티포트는 복잡한 기하학 모양이므로, 많은 수의 꼭짓점(4608개)과 면(3872개)이 이 함수에서 반환됩니다.
[verts, faces, cindex] = teapotGeometry;
티포트 patch 객체 생성
patch
명령을 사용하여 기하학 데이터를 이용해서 티포트를 그립니다. patch
명령은 patch 객체를 생성합니다.
figure p = patch('Faces',faces,'Vertices',verts,'FaceVertexCData',cindex,'FaceColor','interp')
p = Patch with properties: FaceColor: 'interp' FaceAlpha: 1 EdgeColor: [0 0 0] LineStyle: '-' Faces: [3872x4 double] Vertices: [4608x3 double] Use GET to show all properties
view
명령을 사용하여 객체의 방향을 변경합니다.
view(-151,30) % change the orientation axis equal off % make the axes equal and invisible
투명도 조정
patch 객체의 FaceAlpha
속성을 사용하여 객체를 투명하게 만듭니다.
p.FaceAlpha = 0.3; % make the object semi-transparent
FaceColor
속성이 'none'으로 설정되어 있으면 객체가 와이어프레임 다이어그램으로 나타납니다.
p.FaceColor = 'none'; % turn off the colors
컬러맵 변경
colormap
함수를 사용하여 객체의 색을 변경합니다.
p.FaceAlpha = 1; % remove the transparency p.FaceColor = 'interp'; % set the face colors to be interpolated p.LineStyle = 'none'; % remove the lines colormap(copper) % change the colormap
객체에 조명 비추기
조명을 추가하여 객체를 좀 더 사실적으로 표현할 수 있습니다.
l = light('Position',[-0.4 0.2 0.9],'Style','infinite')
l = Light with properties: Color: [1 1 1] Style: 'infinite' Position: [-0.4000 0.2000 0.9000] Visible: on Use GET to show all properties
lighting gouraud
patch 객체의 다음 속성은 조명의 강도와 객체의 반사 속성에 영향을 미칩니다.
AmbientStrength
- 주변광의 강도 제어DiffuseStrength
- 확산광의 강도 제어SpecularStrength
- 반사광의 강도 제어SpecularExponent
- 반사광의 거칠기 제어SpecularColorReflectance
- 반사된 색의 계산 방법 제어.
이러한 속성을 개별적으로 설정할 수 있습니다. 이러한 속성을 금속, 반짝이는 물질 또는 윤기 없는 물질의 모양에 근접한 미리 지정한 값 세트로 설정하려면 material
명령을 사용하십시오.
material shiny
조명의 Position
속성을 사용하여 조명 위치를 조정합니다. 위치는 x, y, z 좌표로 표시됩니다.
l.Position = [-0.1 0.6 0.8]
l = Light with properties: Color: [1 1 1] Style: 'infinite' Position: [-0.1000 0.6000 0.8000] Visible: on Use GET to show all properties