Please, pay attention that now you are in public part of FAQ-Area. Register and find more FAQ-articles in Personal Cabinet.

FAQ#700901: Пересчет текстурных координат в трехмерное пространство.

Keywords: Created: 2015-08-05 15:07:54
Linked Articles: Changed: 2015-08-06 11:18:21

Problem:

Построен объект MbMesh  с текстурными координатами.
Как перевести текстурные координаты в координаты трехмерного пространства?

Solution:

.
Пусть текстурные координаты заданы внутри двумерного прямоугольника,
определяемого четырьмя числами: uMin, uMax,vMin, vMax.
Пусть вершинам двумерного прямоугольника соответствуют четыре точки в трехмерном пространстве:
R1 = R(uMin,vMin), R2 = R(uMax,vMin), R3 = R(uMin,vMax), R4 = R(uMax,vMax)



Тогда двумерной точке с координатами (u v) текстурного пространства можно поставить в соответствие трехмерную точку R, положение которой определяется векторной формулой:
R(u,v) = R1*(1-w)*(1-t) + R2*w*(1-t) + R3*(1-w)*t + R4*w*t.
где w = (u-uMin) / (uMax-uMin),
        t = (v-vMin) / (vMax-vMin).

Точка R имеет координаты:
X = X1*(1-w)*(1-t) + X2*w*(1-t) + X3*(1-w)*t + X4*w*t,
Y = Y1*(1-w)*(1-t) + Y2*w*(1-t) + Y3*(1-w)*t + Y4*w*t,
Z = Z1*(1-w)*(1-t) + Z2*w*(1-t) + Z3*(1-w)*t + Z4*w*t,
где Xi, Yi Zi - координаты точки Ri, i=1,2,3,4.

Описанное соответствие для сеток криволинейных поверхностей будет искажать текстурную картинку в пространстве.

Для уменьшения искажений следует разбить двумерную область и трехмерную сетку на соответствующие подобласти.