2016-01-19 2 views
-2

В OpenGL я создал простой куб, который я вращаю. Я вращаю куб, а не камеру!Как избежать света, вращающегося в OpenGL?

Затем я добавил источник света. Свет также вращается вместе с кубом. Как я могу избежать этого?

Может кто-нибудь сказать мне, когда активировать режим матрицы и когда нажать и поместить текущую матрицу. Я пробовал много, много комбинаций и последовательностей, но проклятый свет всегда (!) Следует за вращением.

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

+0

Возможный дубликат [Как зафиксировать источник света в OpenGL при вращении объекта?] (Http://stackoverflow.com/questions/1757958/how-do-i-fixate-a-light-source-in -opengl-while-rotating-an-object) – user463035818

+2

* Я не ожидаю общего ответа, который просто говорит, что имеет какое-то отношение к стеку матрицы. Конкретный короткий пример вращающегося объекта с невращающимся светом был бы большим! *, Так что в основном вы хотите работать пример вместо объяснений? то просто найдите его, есть много в Интернете. С другой стороны, если вы хотите получить помощь, вы можете начать с публикации какого-либо кода или сообщить нам, что * Я вращаю куб * означает с точки зрения кода, чтобы мы могли понять, что вы на самом деле делаете – Guiroux

+0

@ tobi303. Один ответ в нить, о которой вы говорили, кажется, поворачивает камеру (что я не хочу делать!), а другой ответ, похоже, не работает. –

ответ

0

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

Определение нормальных векторов для объектов, определяющих, как отражается свет, может решить проблему.