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:

  1. 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?

  2. 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.

  3. 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.

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top