Это связано с проблемой, описанной в другом вопросе (изображения там):
Проблемы шейдера Opengl - странные артефакты отражения света
У меня есть импортер .obj, который создает структуру данных и вычисляет касательные и битангенсы. Вот данные для первого треугольника в моем объекте:
Мое понимание касательного пространства состоит в том, что нормаль указывает наружу от вершины, касательная перпендикулярна (ортогональна?) к вектору нормали и указывает в направлении положительного S в текстуре, а бикасательная перпендикулярна обоим. Я не уверен, как вы это называете, но я думал, что эти 3 вектора образуют то, что будет выглядеть как повернутая или преобразованная ось x, y, z. Это не будут 3 случайно ориентированных вектора, верно?
Также мое понимание: нормали на карте нормалей обеспечивают новый вектор нормалей. Но в текстурных картах касательного пространства нет встроенной ориентации между нормалью, закодированной в rgb, и нормалью для каждой вершины. Таким образом, вы используете матрицу TBN, чтобы преодолеть разрыв и разместить их в одном и том же пространстве (или получить освещение в нужном месте).
Но потом я увидел данные объекта... Моя структура имеет 270 вершин, и все они имеют 0 для касательной Y. Верно ли это для данных касательной? Являются ли эти касательные нормальным пространством вершин или что-то в этом роде? Или они просто выглядят совершенно неправильно? Или я не понимаю, как это работает, и мои данные верны?
Чтобы приблизиться к решению моей проблемы в другом вопросе, мне нужно убедиться, что мои данные верны, и мое понимание того, как работает математика освещения касательного пространства.