Я работаю над процедурной генерации пятен грязи, используя рандомизированные фракталы для видеоигры. Я уже создал карту высот, используя алгоритм смещения средней точки и сохранил ее в текстуре. У меня есть некоторые идеи о том, как превратить это в текстуру нормалей, но некоторые отзывы будут высоко оценены.
Моя текстура высоты в настоящее время представляет собой изображение серого масштаба 257 x 257 (значения высоты масштабируются для целей видимости):
Я считаю, что каждый пиксель изображения представляет собой координату решетки в сетке 256 x 256 (следовательно, высота 257 x 257). Это означало бы, что нормаль в координате (i, j) определяется высотами at (i, j), (i, j + 1), (i + 1, j) и (i + 1, j + 1 ) (назовите эти A, B, C и D соответственно).
Поэтому, учитывая 3D-координаты A, B, C и D, имеет смысл:
- разделите четыре на два треугольника: ABC и BCD
- вычислить нормали этих двух граней через кросс-произведение
- разбивается на два треугольника: ACD и ABD
- вычислить нормали этих двух граней
- в среднем четыре нормали
... или есть гораздо более простой метод, который мне не хватает?