Значит, задача была поставленна в таком виде.
Есть три вершины, образующие треугольную грань, для каждой из которых известны её 3d коорлинаты и UV координаты текстуры.
Есть вершина внутри грани(лежит в её плоскости ) с известными 3d координатами.
КАК найти, какие будут у этой вершины UV?
B
.
/ \
/ \
/ \
/ .D \
/ \
.-----------.
A C
Решено было так.
Vector3 A = new Vector3(1, 0, 0); Vector2 Auv = new Vector2(0, 0);
Vector3 B = new Vector3(10f, 4f, 4f); Vector2 Buv = new Vector2(1, 0);
Vector3 C = new Vector3(0, 6f, 13f); Vector2 Cuv = new Vector2(0.5f, 1);
Vector3 D = new Vector3(4, 3, 5);
Vector3 N = Vector3.Normalize(Vector3.Cross(B - A, C - A));
float AreaABC = Vector3.Dot(N, Vector3.Cross(B - A, C - A));
float AreaPBC = Vector3.Dot(N, Vector3.Cross(B - D, C - D));
float AreaPCA = Vector3.Dot(N, Vector3.Cross(C - D, A - D));
float b = AreaPCA / AreaABC;float a = AreaPBC / AreaABC;
float c = 1.0f - a - b;
Vector2 Duv = a * Auv + b * Buv + c * Cuv;
Внимание вопрос. Что сдесь вообще происходит?)
Понял что решение идет через барицентрические координаты.
Впринцепе можно это представить в формате кода блитза, тогда я сам все пойму
