2013-05-11 2 views
4

Je comprends que CalculateFrustumPlanes() dans Unity3D retourne un tableau de Plane objets, chacun représentant un plan de tronc de cône différent, mais je ne trouve aucune documentation pour suggérer quel élément est lequel?Camera Frustum avions dans Unity 3D

par exemple

[0] = Front 
[1] = Back 

etc.

je dois calculer si un point dans l'espace (comme le point central d'un volume englobante) est dans la caméra tronc de cône, pour un système d'arbre Quad.

Répondre

3

Quel est exactement l'ordre du Planes dans le tableau retourné n'est pas documenté (et je ne le sais pas).

De toute façon, je pense que vous pouvez le comprendre sans trop d'effort: il suffit de mettre l'appareil photo dans une orientation bien connue et vérifier la valeur normale de chaque Plane.

J'ai besoin de calculer si un point dans l'espace (comme le point central de un volume englobante) est dans la caméra tronc de cône, pour un système d'arbre Quad.

Pour un système d'arbre Quad, je pense que l'intersection entre le tronc et un GameObject « assez s AABB est, donc vous ne même pas besoin de savoir exactement l'ordre des Plane » s dans le tableau pour le calculer. Vous pouvez simplement utiliser GeometryUtility.TestPlanesAABB.

+2

Aussi facile, [Camera.WorldToViewportPoint] (http://docs.unity3d.com/Documentation/ScriptReference/Camera.WorldToViewportPoint.html) (point_centrique) Si viewportPoint x/y sont en dehors de [0,1], le point est pas en tronc (ou si z est négatif) – Jerdak

+0

@Jerdak: Je pense que Camera.WorldToViewPoint pourrait avoir des performances encore meilleures dans ce cas. – Heisenbug

+0

Bien sûr, quelques divisions de moins. J'étais trop paresseux pour taper 'si le point x/y est à l'intérieur de [0,0] à [pixelWidth, pixelHeight].' :) – Jerdak

2

Ordre: gauche, droite, bas, haut, près, loin.