文档

照明的概述

照明的命令

MATLAB®图形环境提供命令,使您能够定位光源和调整反射光线的对象的特征。这些命令包括以下内容。

命令

目的

camlight

创建或移动一个光相对于相机的位置

lightangle

在球坐标中创建或定位一个光

创建一个轻对象

照明

选择一种照明方法

材料

设置点亮物体的反射率属性

您可以设置灯光和灯光对象属性来实现特定的结果。除了本主题区域的材料之外,您还可以探索照明示例,作为可视化照明的介绍。

轻的物体

属性创建光对象函数。三个重要的光物体属性是

  • 颜色-由发光物体投射的光的颜色

  • 风格-无限远(默认值)或本地

  • 位置-方向(无限光源)或位置(局部光源)

颜色属性决定了来自光源的方向光的颜色。场景中物体的颜色是由物体的颜色和光源决定的。

风格属性确定光源是否为点源(风格设置为当地的),从指定位置向各个方向辐射,或放置在无限远处的光源(风格设置为无限),以平行光线从指定位置的方向照射。

位置属性指定光源在轴数据单位中的位置。在无穷远的光源的情况下,位置指定光源的方向。

光影响与光在同一轴上的表面和补丁物体。这些物体有许多属性,可以改变它们被灯光照亮时的样子。

影响照明的属性

你不能看到光的物体本身,但你可以看到它们对任何补丁和表面物体的影响,在包含光的轴上。有许多函数可以创建这些对象,包括冲浪pcolor填满,fill3以及表面而且补丁功能。

您可以通过设置各种轴、光、补丁和表面对象属性来控制灯光效果。所有属性都有缺省值,通常会产生理想的结果。但是,您可以通过调整这些属性的值来实现您想要的特定效果。

财产

效果

AmbientLightColor

一个轴属性,用于指定场景中背景光的颜色,它没有方向,并且均匀地影响所有对象。只有当轴上有可见光物体时,环境光效果才会发生。

AmbientStrength

一个补丁和表面属性,它决定了从物体反射的光的环境成分的强度。

DiffuseStrength

一种斑块和表面特性,它决定从物体反射的光的漫反射成分的强度。

SpecularStrength

一种斑块和表面特性,它决定从物体反射的光的镜面成分的强度。

SpecularExponent

决定高光大小的补丁和表面属性。

SpecularColorReflectance

一种补丁和表面特性,它决定了反射光被物体颜色或光源颜色着色的程度。

FaceLighting

一种补丁和表面属性,它决定了用于计算光在物体表面上的效果的方法。选择要么不照明,平照明,要么高劳照明算法。

EdgeLighting

一个补丁和表面属性,它决定了用于计算光在物体边缘上的效果的方法。选择是不照明、平照明或高劳照明算法。

BackFaceLighting

一个补丁和表面属性,用于确定当面的顶点法线指向远离相机时,面如何被点亮。此属性用于区分对象的内部表面和外部表面。

FaceColor

指定对象表面颜色的补丁和表面属性。

EdgeColor

指定对象边缘颜色的补丁和表面属性。

VertexNormals

一个补丁和面属性,包含对象每个顶点的法向量。MATLAB使用顶点法向量进行光照计算。当MATLAB自动生成这些数据时,您也可以指定自己的顶点法线。

NormalMode

一个补丁和面属性,用于确定如果更改对象数据(汽车类的当前值VertexNormals属性(手册)。的值VertexNormals, MATLAB将此属性设置为手册

有关更多信息,请参见轴属性表面性质,块的属性

照明控制的例子

照明是一种为图形场景增加真实感的技术。它通过模拟自然光照下物体上的高光和暗区(例如,来自太阳的方向光)来实现这一点。为了创建灯光效果,MATLAB定义了一个名为light的图形对象。MATLAB将光照应用于表面和补丁对象。

示例-在场景中添加灯光

此示例显示膜表面,并用从相机位置右侧的位置发出的光源照亮它。

膜camlight

创建一盏灯会激活许多与照明相关的属性,例如环境光和物体的反射率属性。

例子-阐释数学函数

光照可以增强数学函数的曲面。例如,使用ezsurf命令对表达式求值

x 2 + y 2 ÷ x 2 + y 2

在区域-6上π到6π

h = ezsurf(“罪(√x ^ 2 + y ^ 2)) /√(x ^ 2 + y ^ 2)”,[6 *π,6 *π]);

现在添加照明使用lightangle函数,它根据方位角和仰角接受光的位置。

h.FaceLighting = 'gouraud';h.AmbientStrength = 0.3;h. diffusstrength = 0.8;h.SpecularStrength = 0.9;h.SpecularExponent = 25;h.BackFaceLighting = '未点亮';

在获取表面对象的句柄后使用findobj,可以设置影响光线从表面反射的属性。看到影响照明的属性获取这些属性的更详细描述。

这个话题有用吗?