Java 3d: невозможно получить свет от воздействия Shape3D на свет
Я пытаюсь получить кастом Shape3D
быть затронутым DirectedLight
в Java 3D, но ничего, что я делаю, похоже, не работает.
Форма имеет геометрию, которая является IndexedQuadArray
, с установленным и примененным флагом NORMAL, гарантируя, что нормальные векторы применяются к правильным вершинам - используя индексированные векторы
Я дал Внешний вид Материал (как с указанными цветами и блеском, так и без)
Я также поставил свет на то же BranchGroup
как форма, но она все еще не работает.
На самом деле, когда я добавляю нормали к фигуре, объект, кажется, исчезает - без них он имеет плоский оттенок, поэтому все грани имеют одинаковый оттенок.
Я могу только думать, что я забыл включить что-то смехотворно простое, или сделал что-то не так.
Чтобы проверить огни на самом деле, я положил в Sphere
рядом с формой, и сфера была затронута и освещена правильно, но форма все еще не была. Оба были на одном BranchGroup
[Небольшая странность - если я перевожу сферу, она исчезнет, если я переместу ее больше, чем на 31 в любом направлении... [мой взгляд отодвинут на 700 градусов назад, когда я имею дело с объектами размером до 600 в ширину]
Изменить: нашел это в официальных уроках, которые, вероятно, связаны
Визуальный объект, правильно заданный для затенения (т. Е. Объект с объектом Material) в живом графе сцены, но за пределами влияющих границ всех объектов-источников света, становится черным.
1 ответ
Огни setInfluencingBounds()
был установлен неправильно, поэтому фигуры в сцене не были включены в границы.
Это было исправлено установкой BoundingBox
охватить всю область и распределить ее по границам влияния