主要内容

了解视图投影

两种投影类型

MATLAB® 图形支持通过正交投影和透视投影两种类型来显示三维图形。具体选择哪一种取决于您要显示的图形类型:

  • orthographic 将观察体投影为矩形平行六面体(即有六个矩形面的长方体)。与相机之间的相对距离不影响对象的大小。当需要保持对象的实际大小以及对象之间的角度时,这种投影方式非常有用。

  • perspective 将观察体投影为棱锥的截头锥体(平行于底部截掉头部的棱锥)。距离会产生前缩透视效果,距相机越远的对象越小。当您要显示真实对象的逼真视图时,这种投影方式非常有用。

默认情况下,MATLAB 使用正交投影方式来显示对象。您可以使用 camproj 命令设置投影类型。

下图显示了自卸车的绘图(使用 patch 创建)和数学函数的曲面图,二者都使用正交投影。

如果测量自卸车箱体前后面的宽度,您会发现二者相等。这张图看起来不自然,因为它缺少观察具有景深的真实对象时能够看到的明显透视效果。曲面图则能精确表示矩形空间内的函数值。

现在观察同样的图形对象在添加透视之后的效果。自卸车看起来自然多了,因为距离观察者较远的卡车部分看起来更小。这种投影模拟了人类视觉的工作原理。曲面图看起来则失真了。

投影类型和相机位置

默认情况下,MATLAB 会调整坐标区的 CameraPositionCameraTargetCameraViewAngle 属性,使相机指向场景中心并包含坐标区内的所有图形对象。如果您放置的相机位置导致一些图形对象在相机后面,则显示的场景受到坐标区的 Projection 属性值的影响。如果 Projection 属性的值为 "orthographic",则 CameraViewAngle 属性确定相机目标处的场景范围。如果 Projection 属性的值为 "perspective",则 CameraViewAngle 属性确定从相机位置到无限远的场景范围。

下图说明使用正交投影时的可见区域(灰显)。相机前面的所有对象都可见。

Orthographic projection illustration, with a target set up in front of the camera. All objects in front of the camera, including objects outside of the camera's angle of view, are visible.

当您使用透视投影时,您只能看到相机视角锥形区域内可见的对象。

Perspective projection illustration, with a target set up in front of the camera. Only the objects within the camera's angle of view are visible.

打印和导出三维场景

上一节中所述的相同效果适用于打印的硬拷贝输出和导出的三维场景图像。

如果您要将场景导出为矢量图文件,请考虑 Projection 属性的效果:

  • "orthographic" 投影显示所有对象,无论相机位置如何。

  • 当图形对象位于相机位置后面时,不推荐使用 "perspective" 投影。

另请参阅

属性