Как возмущать нормаль поверхности с карты высот
Я работаю над созданием рельефа в моем собственном 3D-трейсере. И чтобы быть очень коротким - я хочу этот результат:
Я читал страницы и страницы о рельефном отображении, картах высот, картах нормалей,... и я думаю, что понимаю большую часть предмета, разницу между всем вышеперечисленным и т. Д. И т. Д. (Я получил perlin-bumpmapping для работы - результат) Единственное Я не понимаю, как на самом деле возмущать нормаль поверхности объекта с заданным изображением текстуры. Большинство статей и страниц по этой теме более чем немного расплывчаты.
Сначала я решил, что вы просто добавите текстуру изображения к своему объекту, для данного пикселя вы рассчитаете цвет rgb из текстуры, а затем вычислили коэффициент освещенности по значению rgb (что-то вроде значения в градациях серого,...) и возмутил нормальное с ним перед добавлением световых эффектов. - Я хочу (ред), чтобы вычислить нормальное на лету.
Вопрос: если вышеупомянутое вообще возможно: как возмущать нормаль с учетом коэффициента легкости? И если я ошибаюсь, любые советы / ссылки, которые могут помочь мне продвинуться по пути к данному результату, будут с благодарностью.
Вопрос 2: Если вышеприведенное невозможно для любого данного изображения RGB, может ли кто-нибудь объяснить, как возмущать изображение с учетом карты высот? как первое изображение в Википедии Большое спасибо.
PS: я делаю / должен сделать реализацию в Java.
1 ответ
Это учебник по Cg (шейдерному языку) для рельефного отображения от nVidia . Я использовал эту идею несколько раз. При рельефном отображении нормали НЕ возмущены. Они взяты из карты нормалей, которую вы предоставляете. Хитрость заключается в том, как применить отобранную нормаль к свету пространства объекта и вектору половинного угла при расчете освещения. Я считаю, что учебник объясняет это в некоторых деталях.
На карте высот у вас фактически есть расстояние от объекта до камеры / источника света, сохраненное в текстуре, и вы используете его для вычисления окклюзии и т. Д. В дополнение к возмущающим нормалям. В этой главе Gem Gems объясняется, как комбинировать карту высот с картой нормалей, получая одновременно и детали поверхности, и такие вещи, как окклюзия окружающей среды.