Источник света в комнате действует неожиданно

Я написал несколько приложений для Android, но это мой первый опыт программирования в 3D.

Я создал комнату (4 стены, потолок и пол) с парой объектов внутри и могу перемещать камеру вокруг нее, как будто иду. Я текстурировал все поверхности различными изображениями, и все работало, как ожидалось.

Для контекста, комната имеет ширину 14 единиц и глубину 16 единиц (по центру источника), высоту 3 единицы (1 над источником и 2 под ним). В центре комнаты есть 2 объекта, куб и перевернутая пирамида наверху.

Затем я пошел, чтобы добавить источник света, чтобы затемнить куб и пирамиду. Я прочитал и следил за несколькими портами NeHe, поэтому я взял то, что работал в уроке по освещению, и применил это к моему новому коду.

gl.glEnable(GL10.GL_LIGHTING);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, new float[] { 0.1f, 0.1f, 0.1f, 1f }, 0);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, new float[] { 1f, 1f, 1f, 1f }, 0);
gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, new float[] { -4f, 0.9f, 6f, 1f }, 0);
gl.glEnable(GL10.GL_LIGHT0);

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

Что здесь происходит? Я прочитал много статей об освещении и о том, как оно работает, но я не увидел ничего, что указывало бы на то, почему это не освещает все стороны комнаты, с кубом и пирамидой, затененными в зависимости от положения света. Есть ли какое-то ожидаемое поведение света, потому что он находится «внутри» комнаты? Мне просто не хватает чего-то простого, потому что я новичок?

6
задан genpfault 22 June 2011 в 16:29
поделиться