Java 3d: невозможно получить свет от воздействия Shape3D - PullRequest
1 голос
/ 11 февраля 2010

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

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

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

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

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

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

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


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

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

1 Ответ

1 голос
/ 11 февраля 2010

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

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

...