Bonjour,
J’utilise JavaFX pour du rendu 3D et j’ai besoin d’une vue orthographique (présentant une projection orthogonale de la scène),
alors que j’ai actuellement une vue avec perspective.
Vue orthographique : les lignes sont parallèles.
Vue avec perspective : les lignes convergent vers un point de fuite.
JavaFX ne fournit pas de quoi réaliser ce type de rendu. La classe ParallelCamera du toolkit n’est pas utilisable pour de la 3D
car la profondeur de champ est dépendante de la taille de la vue (elle correspond à la moitié du maximum entre largeur et
hauteur de la vue). Cette limitation est évoquée en réponse à cette question sur Stackoverflow.
J’ai tenté (après avoir lu le commentaire de l’auteur de cette question) de conserver le rendu avec perspective en diminuant
fortement le FOV et en éloignant la caméra. Le résultat obtenu n’est pas concluant. Avec un FOV de 0.1 ou inférieur, les faces
ne sont plus triées correctement selon la profondeur : des faces qui sont à l’arrière, normalement non-visibles, se retrouvent
affichées.
J’ai aussi tenté de créer une classe héritant de PerspectiveCamera afin de surcharger la méthode réalisant la projection
(computeProjectionTransform(GeneralTransform3D proj)), dans le but de remplacer la projection avec perspective
par une projection orthogonale. La méthode surchargée est package-private, et j’ai constaté que la méthode de la classe
PerspectiveCamera est toujours appelée, et pas celle de ma classe. La raison est donnée ici : la surcharge de méthodes package-
private n’est prise en compte que si les classes sont chargées par le même ClassLoader.
Avez-vous une solution à me suggérer ?
Merci
Partager