1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

dPdu (tangent) на различных типах примитивов

Тема в разделе "RenderMan", создана пользователем stpg, 27 фев 2007.

Модераторы: Moderator.
  1. stpg

    stpg Пользователь сайта

    С нами с:
    10.07.2006
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Для некоторых типов шейдеров необходимо использовать вектор dPdu (его ещё называют tangent).
    В частности без этого вектора нельзя сделать анизотропное освещение.

    Теперь проблема:
    на польгональных моделях dPdu получается дискретным (при сферическом или боксовом UVMap-е) и совершенно ужасным (случайные вектора) при использовании кастомного UV.
    При использовании NURBS - tangent нормально интерполируется.

    Каким образом получить полигональную модель (с кастомными текстурными координатами) у которой tangent вектор будет гладким???

    ЗЫ. Я приблезительно понимаю почему проблема возникает: dPdu - это производная по параметру меша модели. Если это простая полигональная модель (не параметрическая как NURBS) - то в качестве параметров берутся u == s и v == t (тоесть текстурные координаты).

    ЗЫЫ. Я написал простой шейдер чтоб проилюстрировать проблему:
    surface tangent()
    {
    Ci = color(normalize(dPdu));
    Oi = Os;
    }

    Рендер двух торов (Polygons и NURBS) в атаче
     

    Вложения:

    • 198161.jpg
      198161.jpg
      Размер файла:
      43,7 КБ
      Просмотров:
      110
Модераторы: Moderator.

Поделиться этой страницей