Question

Alors je travaille sur un jeu en Java 3D et je suis mise en œuvre des barres de santé qui planent au-dessus des unités.

J'ai commencé par dessiner un quad à un point 3D au-dessus de l'emplacement de l'unité et l'application d'un comportement Billboard pour en faire toujours face à la caméra.

Mais le problème que je suis coincé avec est que les barres de santé sont parfois masquées par d'autres paysages.

J'envisage les options suivantes:

  1. Outrepasser la valeur tampon Z / profondeur pour les pixels de la barre de santé pour faire le renderer pense qu'ils sont plus proches de la caméra que tout ce qu'elle rend par la suite.

    J'ai essayé renderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS). Alors qu'il fait le moteur de rendu tirer la barre de santé au-dessus de tout ce qu'il a tiré dans la même zone plus tôt, il ne l'aide quand l'autre paysage est dessiné au-dessus de la barre de santé plus tard.

    Y at-il une meilleure façon de le faire en Java 3D?

  2. Projeter les emplacements 3D des barres de santé sur un plan 2D en face de la caméra. Sons faisables, mais avant que je pars réinvente tous les calculs nécessaires pour cela, peut-être quelqu'un peut signaler une solution existante.

  3. Le passage de Java 3D à quelque chose comme LWJGL ou jmonkey engine (pas seulement pour cette question, mais les plaintes générales au sujet d'être Java 3D mort, etc.). Bien que je ne suis même pas sûr qu'ils soient plus souples pour ce problème particulier. Et de ce que je l'ai lu, l'une des pires erreurs dans le jeu dev est le moteur de commutation à la mi-développement.

Était-ce utile?

La solution

Utilisez le algorithme de peintre : dessiner les barres de santé après vous avez dessiné le reste de la scène (et avec le test Z désactivé, bien sûr).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top