Самоучитель по 3dsmax 7

         

ТЕКСТУРИРОВАНИЕ Параболическое


ТЕКСТУРИРОВАНИЕ
4.4. Параболическое

Этот метод основан на приближении u, v квадратичными функциями - параболами, то есть. Для каждой строки строится приближающие u, v квадратичные функции, дальше с их помощью они интерполируются по строке. Для этого нам понадобятся точные значения u, v в трех точках - начале, середине и конце строки. Их считаем точно так же, как в 4.3.

Итак, пусть у нас есть точные значения u в начале, середине и конце строки, то есть на расстоянии 0, length/2 и length пикселов от начала этой строки, обозначим их как ua, ub, и uc соответственно. Мы пытаемся приблизить u квадратичной функцией, то есть полагаем, что

u = A*x*x + B*x + C,

где x - расстояние от текущей точки до начала строки. Тогда, подставив в формулу ua, ub, uc и соответствующие им x, получаем:

ua = C,
ub = A*(length*length)/4 + B*length/2 + C,
uc = A*(length*length) + B*length + C.

Т.о. C = ua, а для A и B имеем систему уравнений:

A*(length*length)/4 + B*length/2 = ub - ua,
A*(length*length) + B*length = uc - ua.

Умножим первое уравнение на четыре, вычтем из него второе:

4*A*(length*length)/4 + 4*B*length/2 - A*(length*length - B*length =
4*(ub - ua) - (uc - ua),

B*length = 4*(ub - ua) - (uc - ua),
B = (4*(ub - ua) - (uc - ua)) / length.

Умножим первое уравнение на два, вычтем его из второго:

A*(length*length) + B*length - 2*A*(length*length)/4 - 2*B*length/2 =
(uc - ua) - 2*(ub - ua),

A*(length*length)/2 = (uc - ua) - 2*(ub - ua),
A = (2*(uc - ua) - 4*(ub - ua)) / (length*length).

Получили формулы для A, B, C.



Содержание раздела