光照概述
光照命令
MATLAB® 图形环境提供的命令允许您放置光源并调整反射光线的对象的特性。这些命令如下。
命令 | 用途 |
---|---|
相对于相机位置创建或移动光源 | |
在球面坐标中创建或放置光源 | |
创建光源对象 | |
选择光照方法 | |
设置被照亮对象的反射属性 |
您可以设置光源和被照亮对象的属性,以获得特定的结果。除了本主题中的材料外,您还可以通过学习光照示例来了解光照在可视化中的应用。
光源对象
您可以使用 light
函数创建光源对象。有三个重要的光源对象属性:
Color
属性决定来自光源的定向光的颜色。场景中对象的颜色由对象和光源的颜色共同决定。
Style
属性决定光源是从指定位置向所有方向发光的点源(Style
设置为 local
),还是放置在无限远处,从指定位置的方向发出平行光线的光源(Style
设置为 infinite
)。
Position
属性以坐标区数据单位指定光源的位置。在光源无限远的情况下,Position
指定光源的方向。
光源影响与其在同一坐标区内的曲面和补片对象。这些对象有许多属性,可在被光源照亮时改变对象的外观。
影响光照的属性
您看不到光源对象本身,但可以看到它们照射在位于相同坐标区内的任何补片和曲面对象上的效果。有许多函数可以创建这些对象,包括 surf
、mesh
、pcolor
、fill
和 fill3
以及 surface
和 patch
函数。
您可以通过设置各种坐标区、光源、补片和曲面对象属性来控制光照效果。所有属性都具有默认值,它们一般情况下可以产生理想的结果。但是,您可以通过调整这些属性的值来实现想要的特定效果。
属性 | 作用 |
---|---|
| 坐标区属性,指定场景中背景光源的颜色,没有方向,均匀地影响所有对象。仅当坐标区内存在可见的光源对象时,才会出现环境光效果。 |
| 补片和曲面属性,决定从对象反射的环境光分量的强度。 |
| 补片和曲面属性,决定从对象反射的散射光分量的强度。 |
| 补片和曲面属性,决定从对象反射的镜面反射光分量的强度。 |
| 补片和曲面属性,决定镜面反射光的大小。 |
| 补片和曲面属性,决定镜面反射按对象颜色或光源颜色进行着色的程度。 |
| 补片和曲面属性,决定用来计算对象面上的光照效果的方法。选项包括无光照、均一光照或 Gouraud 光照算法。 |
| 补片和曲面属性,决定用来计算对象边上的光照效果的方法。选项包括无光照、均一光照或 Gouraud 光照算法。 |
| 补片和曲面属性,决定当顶点法线远离相机时如何照亮对象的面。此属性对于区分对象的内表面和外表面很有用。 |
| 补片和曲面属性,指定对象面的颜色。 |
| 补片和曲面属性,指定对象边的颜色。 |
| 补片和曲面属性,包含对象每个顶点的法向量。MATLAB 使用顶点法向量执行光照计算。虽然 MATLAB 会自动生成此数据,但您也可以指定自己的顶点法向。 |
| 补片和曲面属性,决定当您更改对象数据后 MATLAB 是重新计算顶点法向 ( |
有关详细信息,请参阅 Axes 属性、Surface 属性 和 Patch 属性。
光照控制示例
光照是为图形场景增加真实感的一种方式。它通过模拟自然光(例如来自太阳的定向光)照射下对象上出现的高光区和黑暗区来实现。为了产生光照效果,MATLAB 定义了一个图形对象,称为光源。MATLAB 将光照应用于曲面对象和补片对象。
示例 - 在场景中添加光源
此示例显示膜表面,并使用从相机位置右侧发出的光源照亮它。
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
获取曲面对象的句柄后,可以设置影响曲面的反射光的属性。有关这些属性的详细说明,请参阅影响光照的属性。