Java 3d: невозможно получить свет от воздействия Shape3D на свет

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

Форма имеет геометрию, которая является IndexedQuadArray, с установленным и примененным флагом NORMAL, гарантируя, что нормальные векторы применяются к правильным вершинам - используя индексированные векторы

Я дал Внешний вид Материал (как с указанными цветами и блеском, так и без)
Я также поставил свет на то же BranchGroup как форма, но она все еще не работает.

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

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

Чтобы проверить огни на самом деле, я положил в Sphere рядом с формой, и сфера была затронута и освещена правильно, но форма все еще не была. Оба были на одном BranchGroup

[Небольшая странность - если я перевожу сферу, она исчезнет, ​​если я переместу ее больше, чем на 31 в любом направлении... [мой взгляд отодвинут на 700 градусов назад, когда я имею дело с объектами размером до 600 в ширину]


Изменить: нашел это в официальных уроках, которые, вероятно, связаны

Визуальный объект, правильно заданный для затенения (т. Е. Объект с объектом Material) в живом графе сцены, но за пределами влияющих границ всех объектов-источников света, становится черным.

1 ответ

Решение

Огни setInfluencingBounds() был установлен неправильно, поэтому фигуры в сцене не были включены в границы.

Это было исправлено установкой BoundingBox охватить всю область и распределить ее по границам влияния

Другие вопросы по тегам