思路
先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos,
如果满足这两个条件:
- 0<viewPos.x < 1
- 0<viewPos.y < 1
则可以认为物体是在相机视口范围内的。然后还需要满足一个深度的问题,即
- camera.nearClipPlane <.viewPos.z < camera.farClipPlane
视口坐标viewPos的z值也是有意义的,表示距离相机的深度。需要满足 深度在近裁剪面/远裁剪面之间,才可见
代码
/// <summary>
/// 判断物体是否在相机范围内(准备来说,是判断一个点是否在相机范围内)
/// </summary>
/// <param name="testCamera">相机</param>
/// <param name="testGo">物体</param>
/// <returns>是否在相机范围内</returns>