光照命令

MATLAB提供了几个用于设置光源位置和材质的命令,如表3-2中所示。

表3-2 设置光源位置和材质的命令

命 令 功 能
camlight 相对于相机位置创建或移动Light对象
lightangle 在球坐标中创建或放置一个Light对象
light 创建一个Light对象
lighting 选择一种光照方法
material 设置对象的材质

1.light函数

该函数在当前坐标系中创建一个光照对象,该函数的调用格式为:

light('PorpertyName',PropertyValue,…) 创建一个光照对象,并给指定属性赋值。默认条件下,MATLAB将当前坐标系作为光照对象的父对象,除非用Parent属性指定另一个坐标系。

handle=light(…) 返回所创建的光照对象的句柄。

注意:光照对象只能用于Patch对象和Surface对象。光照对象本身是看不到的,但可以在Patch对象和Surface对象上看到光照效果。

下面的代码演示位置为无穷远,方向由[1 0 1]定义的黄色光源在peaks数据定义的曲面上的光照效果。

code.matlab
>> h=surf(peaks);
>> set(h,'FaceLighting','phong','FaceColor','interp', 'AmbientStrength',0.5)
>> light('Position',[1 0 1],'Style','infinite','Color','y');

生成图3-9。

Document Image
\[\]

图3-9 给peaks曲面添加光照

2.lightangle函数

该函数在球面坐标系中创建一个光照对象。该函数的调用格式为:

lightangle(az,el) 创建光照对象,该对象的位置用方位角和仰角确定。az为方位角,el为仰角。

light_handle=lightangle(az,el) 创建一个光照对象并将该对象的句柄返回到light_handle中。

lightangle(light_handle,az,el) 设置句柄为light_handle的光照对象的位置。

[az,el]=lightangle(light_handle) 返回light_handle指定的光照对象的方位角和仰角。

下面的动画给peaks曲面添加光照并变化光照对象的方位角。

code.matlab
>> surf(peaks)
>> axis vis3d
>> h=light;
>> for az=-50:50
    lightangle(h,az,30)
    drawnow
end

3.lighting函数

利用该函数选择光照算法,调用格式为:

lighting flat 选择刻面光照。

lighting gouraud 选择gouraud光照。

lighting phong 选择phong光照。

lighting none 取消光照。