тагЫе(дг, у, z) = undulate(sin(z + A turb(s, х, у, z))).

Рис. 14.31. Конструирование мраморной текстуры: а) сплайн-кривая; б) невозмущенная мраморная текстура Фаза функции зт( ) смещена в различных местах мрамора на различные величины, что значительно увеличивает реалистичность прожилок. Параметр $ ускоряет или замедляет турбулентность в различных точках, а параметр А определяет величину возмущения. Уатт продемонстрировал, что если функцию ипсЫаг.е( ) заменить обычной прямой линией, то результат будет значительно менее удовлетворительным.

Рис. 14.32. Мраморная текстура: а) А = 1; б) А = 3; в) А = б На рис. 14.32 приведена мраморная текстура, изображенная на грани куба. Она является графиком функции:
g = ипс1и1аг.е(зт(2я.г + А х ШгЬ(5, х, у, г))), где г изменяется от 0 справа до единицы слева, а ось у направлена вверх. На рис. 14.32, а амплитуда А = 1, в результате чего имеет место лишь малая турбулентность. На рис. 14.32, б и в амплитуда А равна соответственно 3 и 6, и турбулентность там намного более значительна.
Значение функции тагЫе( ) можно использовать в качестве коэффициента отражения в уравнении (14.34), чтобы модулировать количество света, возвращаемого из различных точек объекта, кото-
Введение в трассировку лучей
рые посещаются различными лучами. Нетрудно расширить функцию тагЫе( ) так, чтобы она возвращала красный, зеленый и синий компоненты полноцветных трассировщиков лучей. На рис. 14.33 показана сцена, состоящая из нескольких мраморных объектов. Эффект весьма убедителен.

Рис. 14.33. Сцена с мраморными объектами Практические упражнения
14.8.1. Сплайн-функция, подходящая для создания мраморной текстуры
Функция
float Noise"opengl1_981.html">⇐ Предыдущая| |Следующая ⇒