我通过代码生成相机视锥网格,它工作正常。
现在我正在寻找一个解决方案(基于着色器或其他)来限制 相机平截头体网格如果与任何对象相交。正如你在图像中看到的那样,我的平截头体正在穿过不正确的平面。
我该如何控制它?我搜索并尝试应用不同类型的着色器,但似乎没有任何效果。
答案 0 :(得分:2)
获取相机的平截头体。
Plane[] frustumPlanes = GeometryUtility.CalculateFrustumPlanes(Camera.main); //Or whatever camera you are using
对于场景中的每个GameObject,如果有的话,请获取Renderer
组件的bounds
。
Renderer renderer = GetComponent<Renderer>();
if (renderer != null)
{
//get renderer.bounds
}
测试渲染器边界是否与任何平截头体平面相交。
bool canSee = GeometryUtility.TestPlanesAABB(frustumPlanes, renderer.bounds);
if (canSee)
{
//do something
}
这应该是你的相机能否“看到”网格的一个很好的近似值(即截头体是否与任何物体相交)