Обертывание текстур вокруг поверхностей Нам нужен способ связывания точек (х, у, z) на поверхности базового объекта с текстурными координатами (и, v). Как показано на рис. 14.34, дизайнер просто выбирает на плоскости «окно» (со своими четырьмя границами: left, top, right, bottom), и если луч соударяется с плоскостью в пределах этого окна, то легко вычислить, какую точку (и, v) текстуры следует использовать. В частности, если точка соударения (х, у, 0) задана в базовых координатах, то соответствующие текстурные координаты имеют вид:
M = _jc-left_> р_ y-bottom right-left top-bottom
Кроме этого, дизайнеру следует решить, как обрабатывать те точки соударения, которые находятся вне заданного окна. В таких случаях обычно задают некоторое постоянное значение, которое используют для текстуры.
Рис. 14.34. Отображение текстуры на квадрат или плоскость
Пример 14.8.3. Текстуры для цилиндра Обертывать текстуры вокруг цилиндра почти так же легко, как наклеивать их на квадрат или на плоскость. (Вспомните обсуждение этой задачи в разделе «Обертывание текстуры вокруг криволинейных поверхностей» главы 8.) На рис. 14.35 изображен базовый конический цилиндр с выделенным на его поверхности «окном». Это окно простирается по азимуту от а, до а2 и по г от zx до г2. Когда луч соударяется с цилиндром в точке (х, у, г), мы просто вычисляем ее азимут"images/tmp8E4A-928.png" alt="Обертывание текстуры вокруг цилиндра">
Рис. 14.35. Обертывание текстуры вокруг цилиндра Практические упражнения
14.8.3. Наложение текстуры на крышку и основание цилиндра