Disegno barre di salute accessibile in una scena Java 3D
-
30-09-2019 - |
Domanda
Quindi, sto lavorando su un gioco in Java 3D e sto attuazione di barre di salute che si librano sopra unità.
Ho iniziato disegnando un quad in un punto 3D sopra la posizione dell'unità e applicando un comportamento Billboard per renderlo sempre di fronte alla telecamera.
Ma il problema mi sono bloccato con è che le barre di salute sono a volte oscurati da altri scenari.
Così sto considerando le seguenti opzioni:
-
Override del valore del buffer Z / profondità per i pixel barra della salute per fare il renderer pensano di essere più vicino alla fotocamera di ogni altra cosa rende in seguito.
ho provato
renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS)
. Mentre fa il renderer disegnare la barra della salute sulla parte superiore di qualsiasi cosa che ha attirato nella stessa area in precedenza, non aiuta quando l'altro scenario è disegnato sulla parte superiore della barra di salute in seguito.C'è un modo migliore per fare questo in Java 3D?
-
Proiezione le posizioni 3D delle barre di salute su un piano 2D di fronte alla telecamera. Suoni fattibile, ma prima che partii reinventare tutti i calcoli necessari per questo, forse qualcuno può indicare una soluzione esistente.
-
Il passaggio da Java 3D a qualcosa come LWJGL o jMonkeyEngine (non solo per questo problema, ma lamentele generali sulla Java 3D essendo morto, ecc). Anche se io non sono nemmeno sicuro se sono più flessibili per questo particolare problema. E da quello che ho letto, uno dei peggiori errori nel gioco dev sta passando il motore a metà dello sviluppo.
Soluzione
Utilizza la del pittore algoritmo : disegnare le barre di salute dopo che hai disegnato il resto della scena (e con i test Z spento, ovviamente).