JOGL - освещение/камера

Я добавил источник света в свой проект JOGL, который, кажется, работает достаточно хорошо, когда объект неподвижен, когда я перемещаю камеру, она постепенно темнеет по мере вращения, чего я и ожидал, но как только он поворачивается на 90 градусов, экран гаснет. полностью черный, кто-нибудь знает, почему это так? Нужен ли мне другой источник света для другой стороны? Я надеялся, что он будет действовать как солнце, то есть освещать всю сцену, но будет немного темнее, когда камера находится с другой стороны объекта.

Освещение

float light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
float light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float light_position[] = { 1.0f, 1.0f, 1.0f, 0.0f };

gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, light_ambient, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, light_diffuse, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, light_specular, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, light_position, 0);

gl.glEnable(GL2.GL_LIGHTING);
gl.glEnable(GL2.GL_LIGHT0);
gl.glDepthFunc(GL.GL_LESS);
gl.glEnable(GL.GL_DEPTH_TEST);

Во-вторых, когда камера вращается, некоторые формы, кажется, деформируются и выглядят как совершенно другие формы, то есть кубы поворачиваются как подушечки для булавок, стороны невероятно растягиваются, и это делает весь мой объект слегка деформированным. Есть ли простой способ изменить это? Я пытался возиться с gluPerspective, и это, похоже, тоже не меняет того, что я хочу. Есть ли способ обойти это?


person thrash    schedule 20.02.2013    source источник
comment
Разместите SSCCE.   -  person genpfault    schedule 21.02.2013


Ответы (1)


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

Что касается деформированных форм, то это действительно отдельный вопрос, и недостаточно подробностей, чтобы понять, почему это происходит.

person Ben    schedule 27.02.2013