управление освещением для объектов внутри объектов

По сути, я пишу программу на C ++ для рисования объектов в мире, и у меня возникают трудности с освещением, когда я вращаю / перемещаю объект, который состоит из нескольких объектов (например, объект дерева состоит из объекта цилиндра для ствол и объекты пирамиды для листьев).

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

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

Изменить: Есть много файлов с этим проектом, и было бы трудно выкинуть достаточно здесь, чтобы дать полную картину. По сути, мои шаги:

  1. Создайте мир с работающим источником света opengl.
  2. Создайте объект формы, с которым связана матрица преобразования.
  3. Используя форму и ее матрицу, рассчитайте ее нормали, чтобы использовать ее для затенения.
  4. Теперь создайте новый объект формы, который состоит из других объектов формы, и бросьте его в мир, чтобы освещение вступило в силу.
  5. Теперь проблема происходит здесь. Если я поворачиваю родительский объект, освещение в порядке, но если я вращаю дочерний объект, освещение становится случайным.

1

Решение

Я нашел проблему в своем коде. Я слишком часто обновлял нормали, поэтому у освещения opengl были плохие нормали.

Спасибо всем за помощь!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]