J'utilise une vue en perspective avec gluPerspective et gluLookAt et j'ai les coordonnées x, y du monde d'un objet. Comment puis-je déterminer si l'objet est en dehors de la zone visible? Notez que la caméra est toujours en mouvement.Objet caméra externe OpenGL
Répondre
Première chose: OpenGL n'a pas de caméra. Il ne fait que transformer les sommets. Et gluLookAt applique juste une transformation sur les objets qui est inverse à un mouvement d'une caméra de pensée.
La solution avait déjà été donné dans le premier commentaire de Robert Massaioli: Dans OpenGL une transformation en perspective est décrite en termes d'un tronc de cône (gluPerpective calcule simplement les paramètres de tronconiques et les transmet à glFrustum). Ainsi, en déterminant l'élimination frustale de vos objets, c'est-à-dire s'ils sont triés, vous déterminez s'ils sont toujours visibles.
Quand vous dites qu'ils quittent la caméra, voulez-vous dire qu'ils sont hors des côtés parce que vous regardez à une distance fixe? ..ou voulez-vous dire qu'ils disparaissent juste. Si c'est le premier cas (sur les côtés de la photo), vous devriez être capable de calculer à quelle distance du plan x, y vous devez déplacer la caméra en fonction de vos paramètres de perspective actuels.
Si c'est le dernier cas, vous avez probablement juste besoin d'augmenter la profondeur Z maximale pour empêcher leur abattage.
[Modifier 1] Dans le gluPerspective vous appelez l'angle défini de vision et le rapport d'aspect. Vous devez connaître la distance de votre avion et la distance entre votre point central et les voitures afin d'avoir toutes les informations dont vous avez besoin. Tout ce qui reste est un peu de trigonométrie pour déterminer ce qui est visible et ce qui ne l'est pas.
[Edit 2] J'ai trouvé another very useful tutorial qui décrit les différentes façons de faire le tronc de cône culling que vous voulez faire.
C'est le premier cas. La caméra est à une distance fixe mais elle tourne avec les voitures, c'est mon problème principal. –
- 1. Caméra opengl-es peut voir un objet?
- 2. Caméra dans OpenGL ES
- 3. Caméra en mouvement openGL
- 4. Faire un objet suivre la caméra dans OpenGL
- 5. objet tournant par rapport à la caméra dans OpenGL
- 6. Configuration d'une caméra en OpenGL
- 7. Android - Caméra et OpenGL ES
- 8. La caméra OpenGL est laggy
- 9. OpenGL: créer ma propre caméra
- 10. OpenGL caméra jeu de rôle
- 11. OpenGL: Aide à la transformation de caméra
- 12. position opengl caméra sur un texel spécifique
- 13. Rotation de caméra OpenGL ne fonctionne pas
- 14. Mise en œuvre de strafe - Opengl - Caméra
- 15. OpenGL - déplacer la caméra avec la souris
- 16. Conversion d'une caméra orthogonale en perspective OpenGL
- 17. Opengl: déplacement de la caméra "fps style"
- 18. Position de la caméra OpenGL et skybox
- 19. éclairage openGL tourne avec la caméra
- 20. Fréquence d'image de caméra externe Unity3d
- 21. Objet disparaissant dans OpenGL
- 22. comment faire de la caméra suivre un objet 3d dans opengl?
- 23. Comment puis-je dessiner un objet dans openGL qui fait toujours face à la caméra?
- 24. problème d'éclairage OpenGL lors de la rotation de la caméra
- 25. Sérialiser un objet externe
- 26. OpenGL ES et affichage externe sur iOS
- 27. Rotation d'une caméra 3D en OpenGL: comment éviter le vacillement de la caméra?
- 28. Android: caméra à la première personne OpenGL 2.0
- 29. caméra openGL zoom/échelle autour du point et du panoramique
- 30. comment utiliser une caméra Android avec OpenGL ES pour fonctionner?
Frustum Culling est le processus de suppression de tout ce qui n'est pas à l'écran, donc je suggère que le même algorithme peut être utilisé pour trouver le résultat inverse: http://www.flipcode.com/archives/Frustum_Culling.shtml –
Mais Je veux savoir si quelque chose a été enlevé. J'ai deux voitures et la caméra est au milieu d'eux. S'ils sont trop loin (s'ils «quittent» tous les deux la caméra), je dois les remettre au milieu, une idée? –