Я больше знаком с OpenGL, поэтому, к сожалению, этот ответ - только теоретический урок. Я бы не подумал, что это «встроенная» функция Java3D (любой может поправить меня, если это так). Вы должны сделать несколько проходов рендеринга, чтобы выполнить это. Из небольшого поиска, который я только что сделал по этой теме, похоже, что Java3D не имеет такой большой поддержки. Возможно, вы захотите взглянуть на использование низкоуровневого API, такого как OpenGL, особенно если учесть, что вы сказали, что это «сильно настроенное приложение для 3d-моделирования». Вы получите намного больший контроль над тем, как все отображается на экране.
Это, как говорится. Вот попытка ответа на высоком уровне. Вы хотите, чтобы все отображались линии или только те линии, которые не скрыты за другими полигонами?
Отображать только невидимые линии
Для каждого кадра необходимо:
- Визуализация сетки с
POLYGON_FILL
.
- Без очистки буфера глубины, визуализируйте сетку снова с помощью
POLYGON_LINE
.
Буфер глубины определяет, должен ли пиксель быть нарисован или нет, основываясь на расстоянии многоугольника от зрителя. Тест глубины по умолчанию для Java3D, согласно javadoc , равен LESS_OR_EQUAL
, поэтому это должно привести к рисованию линий поверх текстур.
Визуализация всех линий
Это то же самое, что и выше, но вам нужно очистить буфер глубины между двумя проходами рендеринга.