2013-05-11 2 views
4

Я понимаю, что CalculateFrustumPlanes() в Unity3D возвращает массив объектов Plane, каждый из которых представляет другую плоскость усечения, но я не могу найти какую-либо документацию, чтобы предположить, какой элемент это?Camera Frustum Planes in Unity 3D

, например

[0] = Front 
[1] = Back 

т.д.

мне нужно рассчитать ли точка в пространстве (например, в центральной точке объема ограничительного) находится в усеченной камере, для системы дерева Quad.

ответ

3

Что именно порядок Planes в возвращаемом массиве не документирован (и я его не знаю).

В любом случае, я думаю, вы можете понять это без особых усилий: вам просто нужно поместить камеру в хорошо известную ориентацию и проверить нормальное значение каждого Plane.

Мне нужно вычислить ли точка в пространстве (например, в центральной точке объема габаритного) находится в усеченной камере для системы дерева Quad.

Для системы Quad дерева, я думаю, что пересечение между усеченным и GameObjectАА достаточно, так что вам даже не нужно точно знать порядок Plane-й в массиве чтобы вычислить его. Вы можете использовать только GeometryUtility.TestPlanesAABB.

+2

Также легко, [Camera.WorldToViewportPoint] (http://docs.unity3d.com/Documentation/ScriptReference/Camera.WorldToViewportPoint.html) (center_point) Если viewportPoint x/y находится вне [0,1], точка не в усеченном состоянии (или если z отрицательно) – Jerdak

+0

@ Джердак: Я думаю, что Camera.WorldToViewPoint может иметь даже лучшие характеристики в этом случае. – Heisenbug

+0

Конечно, пара меньше подразделений. Я был слишком ленив, чтобы напечатать «если точка x/y находится внутри [0,0] до [pixelWidth, pixelHeight]». :) – Jerdak

2

Порядок: левый, правый, нижний, верхний, ближний, дальний.