Войти
СайтФорумОбсуждение

Статья по bump mapping

#0
10:10, 22 апр. 2003

Конечно, можно  не писать очень глубокую и серьезную статью. Но, по крайней мере, все утверждения должны быть осмысленными.

Но как получить B и T, если у нас есть только нормаль? Самый простой способ - использовать два векторных произведения. Вначале, берем любой вектор, неколлинеарный нормали, и находим их векторное произведение. В итоге, мы получаем вектор T. Для того, чтобы получить B, достаточно векторно умножить T на N. Вот мы и получили 3 вектора базиса, из которого составляем матрицу трансформации. Умножаем ее на вектор источника света и получаем необходимый вектор.

"Берем любой вектор" - это надо же написать! И получаем _любой_ результат.  Это как в расчете освещенности сказать "берем любой вектор и получаем нормаль". Tangent space тесно связан с текстуными координатами, есть алгоритмы для расчета.


#1
10:14, 22 апр. 2003

IronPeter
Да.. статью ждёт апгрэйд.

#2
10:37, 22 апр. 2003

Формально подход работает для ландшафта, то есть там, где текстурные координаты  выглядят как:

u=x;
v=y;

Тогда, действительно,

    float3 normal    = IN.Normal;
    float3 binormal = cross(float3(1,0,0),normal);
    float3 tang       = cross(normal,binormal);


Правда, для полного счастья я бы написал:

    float3 normal    = IN.Normal;
    float3 binormal = normalize(cross(float3(1,0,0),normal));
    float3 tang       = cross(normal,binormal);

Тогда статья поимеет некоторый познавательный смысл - как делать bm для ландшафта.

#3
16:57, 22 апр. 2003

IronPeter
>Tangent space тесно связан с текстуными координатами, есть алгоритмы для
>расчета.

Может подкинешь чего по этому поводу. Попался, так буду исправлять.

#4
18:15, 22 апр. 2003

Shuher
Вектор бинормали направлен параллельно первому вектору текстурных координат (т.е. если есть текстурные координаты UV, то бинормаль будет совпадаль с вектором U, в пространстве треугольника)

#5
18:46, 22 апр. 2003

CybeRUS
Стоп. Есть вектор N(x1,y1,z1). Есть вектор tex1(U,V). И что?

Я не догоняю связи между нормалью и текст. координатами и тангнет спейс.

#6
12:15, 23 апр. 2003

Shuher
Имеем треугольник ABC, тогда чтобы расчитать бинормаль в вершине A, мы должны из точки A на плоскости треугольника отложить вектор так, чтобы вдоль этого вектора не изменялась координата V (вторая текстурная координата), и этот вектор пересекает ребро BC. Для этого найдём точку H на ребре BC (возможно точка H лежит на продолжении ребра BC) такую, что координата V совпадала с координатой V в точке A. Теперь нормализуем вектор AH, мы получим бинормаль.
Как еще объяснить? :)))

#7
16:34, 23 апр. 2003

CybeRUS
Хе, ну не могу я понять одного. Бинормаль - 3-вектор (x,y,z), текст. координаты - 2-вектор (u,v)....

Как тогда их совмещать

#8
16:43, 23 апр. 2003

Shuher

Представь, что текстурные координаты (U,V,W) и W = 0 !!!

#9
17:22, 23 апр. 2003

badhim
Тоже хорошо

#10
23:28, 26 апр. 2003

Как сделать бамп, когда несколько источников света? И раскажите про разные виды бампа (empbos и dot3). чем отличаются.

#11
23:15, 27 апр. 2003

emboss основан на сдвиге текстурных координат.
в общем вешь страшная и некрасивая.
dot3 рулит.

СайтФорумОбсуждение

Тема в архиве.