Фара или понимание того, как работает свет

Я разрабатываю проект 3D лабиринта с OpenGL. Несмотря на мои слабые познания в программировании, мне удалось его построить, добавить текстуры и рулевое управление мышью и клавиатурой (правда, по большей части украденные из сети). Теперь я застрял с освещением.

Моя идея (похожая на известную игру SCP-087) состояла в том, чтобы сделать фару с ближним светом. Я много читал об освещении в OpenGL и нормах, но свет все еще действует странно и отчасти случайно.

У меня есть функции, которые перемещают (переводят) мой мир вокруг камеры. Я понимаю, что, если я помещаю свой light0 в начало кода, перед переводами в функции Render(), этот свет должен быть "все еще помещен" с камерой, и мир будет двигаться вокруг них - это звучит просто. Но это не похоже на работу. Большинство стен освещены, когда я стою к ним боком (и совершенно темно, когда я поворачиваюсь к ним с другой стороны).

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

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

В настоящее время я понятия не имею, где искать и что читать об освещении в OpenGL. Я хотел бы сделать его супер простым, без дополнительных библиотек (кроме glu.h). Можете ли вы помочь мне с этой проблемой или отослать меня к какому-либо полезному источнику знаний (нужны простые примеры...)?

0 ответов

Другие вопросы по тегам