Рисование незанятых баров здоровья в 3D-сцене Java - PullRequest
4 голосов
/ 03 декабря 2010

Итак, я работаю над игрой в Java 3D и реализую столбики здоровья, которые находятся над единицами.

Я начал с того, что нарисовал четырехугольник в 3D-точке над местоположением отряда и применил Billboardчтобы он всегда смотрел в камеру.

Но проблема, с которой я застрял, заключается в том, что полосы здоровья иногда скрываются другими пейзажами.

Поэтому я рассматриваю следующие варианты:

  1. Переопределение значения буфера Z / глубины для пикселей индикатора работоспособности, чтобы заставить рендерер думать, что они ближе к камере, чем все, что визуализируется впоследствии.

    Я пыталсяrenderingAttributes.setDepthTestFunction(RenderingAttributes.ALWAYS).Хотя он заставляет рендерера рисовать полосу здоровья поверх всего, что он рисовал в той же области ранее, это не помогает, когда другие декорации рисуются поверх полосы здоровья позже.

    Есть ли лучшеспособ сделать это в Java 3D?

  2. Проецирование трехмерных местоположений баров здоровья на двухмерную плоскость перед камерой.Звучит выполнимо, но прежде чем я начну заново изобретать все математические средства, необходимые для этого, возможно, кто-то может указать на существующее решение.

  3. Переключение с Java 3D на что-то вроде LWJGL или jMonkeyEngine (не толькодля этой проблемы, но общие жалобы о смерти Java 3D и т. д.).Хотя я даже не уверен, являются ли они более гибкими для этой конкретной проблемы.И из того, что я прочитал, одна из худших ошибок в разработке игр - переключение движка в середине разработки.

1 Ответ

3 голосов
/ 03 декабря 2010

Используйте алгоритм художника : нарисуйте столбики здоровья после того, как вы нарисовали остальную часть сцены (и, конечно, с отключенным Z-тестированием).

...