J'ai actuellement un écran composé de deux zones:Calcul FOV pour un tronc de cône PerspectiveCamera
(Les valeurs sont simplement supposées pour cet exemple particulier et peut bien entendu varier en fonction de l'écran).
L'écran au total est 1080x1432px (WxH) et se compose de deux zones, chacune découpée en utilisant glViewPort
. Ceci parce que je veux que la zone (1) ne remplisse pas l'écran lors du zoom.
- Zone de jeu. Peut être zoomé. La taille est 1080x1277px (WxH) et situé en haut.
- Le HUD (objets Pour votre information d'ici peut être déplacé à la zone (1). Non zoomable. La taille est 1080x154 (LxH).
Les deux ont leurs propres caméras.
Zone (1) la largeur est 15f et la hauteur est plus de 15f (peu importe aussi longtemps qu'il est au moins 15f)
Je veux que la zone (2) soit de largeur 7f et de hauteur (pour plus de commodité). pour régler l'appareil photo en conséquence.J'ai essayé de le faire en calculant le FOV:
float size = 1f;
float halfHeight = size * 0.5f;
halfHeight *= (float) 154/(float) 1080;
float fullHeight = 2 * halfHeight;
float halfFovRadians = MathUtils.degreesToRadians * camera.fieldOfView * 0.5f;
float distance = halfHeight/(float) Math.tan(halfFovRadians);
camera.viewportWidth = 1080;
camera.viewportHeight = 154;
camera.position.set(0f, 0, distance);
camera.lookAt(0, 0, 0);
camera.update();
Et créer un objet:
ModelBuilder builder = new ModelBuilder();
builder.begin();
builder.node();
MeshPartBuilder meshBuilder = builder.part("lattice", GL20.GL_TRIANGLES,
VertexAttributes.Usage.Position,
new Material(ColorAttribute.createDiffuse(Color.GRAY)));
BoxShapeBuilder.build(meshBuilder, 0f, 0f, 0f, 7f, 1f, 0f);
Model model = builder.end();
mHudModel = new ModelInstance(model);
Si je tente manuellement régler la distance à 1f je peux voir encore la boîte, mais si je vais ci-dessous 1.0f la boîte ne s'affiche pas. Et la distance calculée est d'environ 0,76f. J'essaie d'utiliser le même concept que https://xoppa.github.io/blog/a-simple-card-game/ pour calculer le champ de vision. Cela fonctionne bien pour la zone (1).
Puis-je ne pas utiliser l'appareil photo comme celui-ci? Est-ce que je calcule incorrectement le champ de vision? Pourquoi mon objet disparaîtrait-il quand je descendrais en dessous de 1f?
Merci.
Quelle est la distance du plan rapproché du tronc de la caméra? Est-il coupé par le plan proche? – Rabbid76
Ah oui j'ai découvert que le plan proche est 1f (et le plan lointain est 100f). Voilà pourquoi ce n'est pas possible. Quand j'ai changé le plan proche pour être le même que la distance, il semble bien fonctionner et j'obtiens la forme attendue. Est-ce une bonne solution ou devrais-je le faire différemment? – Henrik
Oui, tout ce que vous voulez "voir" dans la scène est également inclus dans la gamme du plan proche au plan lointain (voir ma réponse). – Rabbid76