Pregunta

Así que estoy trabajando en un juego en Java 3D y estoy poniendo en práctica las barras de salud que se ciernen por encima de unidades.

Me empezó dibujando un quad en un punto 3D por encima de la ubicación de la unidad y la aplicación de un comportamiento de la cartelera para que sea siempre frente a la cámara.

Pero el problema que estoy atascado con es que las barras de salud a veces son oscurecidos por otros paisajes.

Así que estoy teniendo en cuenta las siguientes opciones:

  1. Reemplazar el valor del buffer Z / profundidad de los píxeles de la barra de salud para hacer el render creo que están más cerca de la cámara que todo lo que hace después.

    Me trató renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS). Mientras que tiene el procesador de dibujar la barra de salud en la parte superior de todo lo que dibujó en la misma zona antes, no ayuda cuando el otro escenario se dibuja en la parte superior de la barra de salud más adelante.

    ¿Hay una mejor manera de hacer esto en Java 3D?

  2. Proyección de los lugares en 3D de las barras de salud sobre un plano 2D en frente de la cámara. Sonidos factible, pero antes de partir reinventar todas las matemáticas requerido para esto, tal vez alguien puede señalar una solución existente.

  3. El cambio de Java 3D a algo así como LWJGL o jMonkeyEngine (no sólo para este problema, pero las quejas generales sobre Java 3D estar muerto, etc). A pesar de que ni siquiera estoy seguro si son más flexibles para este problema en particular. Y por lo que he leído, uno de los peores errores en dev juego es cambiar el motor a mediados de desarrollo.

¿Fue útil?

Solución

Utilice el de pintor algoritmo : sacar las barras de salud después que ha dibujado el resto de la escena (y con la prueba de Z desactivado, por supuesto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top