Unity

摄像机边界控制

由于美术场景有限制,所以需要将摄像机限制在一个如下图所示的凸六面体内:

camera_block

那八个顶点的位置根据场景不同而不同,限制摄像机位置的关键在于判定摄像机位置是否在六面体内。而剩下的就是几何知识了。

首先要求出6个平面的方程,取一个平面的三个顶点 V1, V2, V3,分别代入平面方程:

aX+ bY + cZ +d = 0 中然后求出:

 

取一个六面体内的点V0,代入方程中,得出:

P0 = a * V0.x + b * V0.y + c * V0.z + d 。

设待验证的摄像机位置为Vx,同样代入,得出:

Px = a * Vx.x + b * Vx.y + c * Vx.z + d 。

然后对比P0和Px的正负号,如果相同,则证明V0和Vx在同侧。

按照以上算法,验证P0和Px是否同时满足在六个面同侧,是,则说明摄像机在六面体内,否则在六面体外。