使用斜视锥体

视锥体默认围绕相机的中心线对称分布,但并非必须。视锥体可以“倾斜”,即一边与中心线的夹角小于对边与中心线的夹角。效果很像被切掉一边的打印照片。这使得图像一边的视图缩在一起,造成观看者离物体可见边很近的效果。例如在赛车游戏中使用时,视锥体的底部边缘被弄平整。让观看者看起来更接近路面,强调速度感。

虽然相机 (camera) 类中没有设置视锥体斜度的函数,但可以通过更改投影矩阵轻松进行:-

function SetObliqueness(horizObl: float, vertObl: float;) {
	var mat: Matrix4x4 = camera.projectionMatrix;
	mat[0, 2] = horizObl;
	mat[1, 2] = vertObl;
	camera.projectionMatrix = mat;
}

幸好我们不必了解投影矩阵如何利用这一点进行工作。horizObl 值和 vertObl 值分别设置水平和垂直倾斜度。值为零表示不倾斜。值为正数表示向右或向上移动视锥体,使左边或底面变得平坦。值为负数表示向左或向下移动视锥体,使右边或上部变得平坦。如果将该脚本添加到相机 (camera) 中且游戏运行时切换到场景视图可直接看到效果;相机视锥体的线框图描述会随检视器中 horizObl 和 vertObl 值的变化而变化。在一个变量中值为 1 或 -1 表示视锥体的一面相对于中心线完全是扁平的。虽然很少情况下必须使用该范围外的值,但还是有可能的。

Page last updated: 2013-07-01