У меня есть структура QUAD, которая хранит 4 указателя на 4 VECTOR3D (который содержит 3 числа с плавающей запятой), чтобы я мог нарисовать четырехугольную сетку.
Из того, что я понимаю, всякий раз, когда я рисую сетку, мне также нужно нормальное, чтобы правильно осветить / затенить сетку, и это относительно легко, когда сетка лежит на плоскости, используя нормаль для грани.
Когда у меня есть 2 на 2 четырехугольные сетки, лежащие по координате XZ, и я попытался поднять его центр (0,0,0) на определенную точку, скажем, (0, 4, 0), он начал бы формировать реальные трехмерные фигуры, тогда мне нужно снова вычислить нормали. Я с трудом понимаю, как и что должно быть в расчете норм. Как и ожидалось, 3D-фигура затеняет, как будто это плоская сетка, поэтому она не представляет реальную форму. В одном из объяснений говорится, что мне нужно вычислять нормали для каждой вершины, а не для грани.
Значит ли это, что мне нужно вычислить нормали для всех углов сетки? как только у меня появятся нормали, что мне делать? Я все еще использовал старые методы glBegin glEnd, но теперь я чувствую, что мне нужно использовать метод DrawArray. Я глубоко сбит с толку и уверен, что не издаю много звука, но я был бы очень признателен за вашу помощь.
Если вам нужна плоская поверхность, то ваши нормали будут нормали к плоскости квадрата. Если вам нужна «мягкая на вид» поверхность, вам нужно смешать (прочитай это и смотри этот классное простое видео) нормали — это добавит градиент.
Других решений пока нет …