У меня есть небольшая проблема расчета нормалей для моей карты высот. Это странное поведение. В верхней и нижней точках нормали хорошо, но в середине они кажутся неправильными. Они освещены точечным светом. Вычисление нормалей для карты высоты
нефиксированной ИСТОЧНИК REMOVED
EDIT: Пробовал 2 новые подходы:
Это за лицом нормальный. Это выглядит прекрасно, но вы видите одинокие лица.
Position normal = crossP(vectorize(pOL, pUR), vectorize(pOR, pUL));
Я также попытался сделать это на вершине таким образом, но также со странным выходом.
Это предложение Нико сделал:
Это выглядит также довольно странно. Возможно, есть ошибка, как я вычисляю пункты помощи.
нефиксированной ИСТОЧНИК REMOVED
EDIT 2: Определение моих точек: О.Л., ИЛИ, UL, UR являются угловые вершины плоскости, должна быть нарисована.
postVertPosZ1 postVertPosZ2
preVertPosX1 pOL pOR postVertPosX1
preVertPosX2 pUL pUR postVertPosX2
preVertPosZ1 preVertPosZ2
EDIT3:
Я решил сейчас. Это была глупая ошибка: Я забыл умножить значение y вспомогательных вершин с помощью множителя высоты и пришлось изменить некоторые значения.
Возможный дубликат [Вычисление нормалей в треугольной сетке] (http://stackoverflow.com/questions/6656358/calculating-normals-in-a-triangle-mesh) – legends2k
Релевантно: https: //en.wikipedia. org/wiki/Sobel_operator – sbabbi