Как отобразить квадратную текстуру в треугольник?

13

Я хочу найти координаты текстуры для точки P. У меня есть вершины треугольника и соответствующие им координаты.

Числа в маленьких квадратах в текстуре представляют значения цвета.

Каковы этапы вычисления ультрафиолетовых координат P?

введите описание изображения здесь

Джон Джон
источник
Существует аффинное преобразование, которое отображает каждый угол на его текстурную координату, вы можете использовать это для отображения P на его uv.
фрик с трещоткой
@ratchetfreak Не могли бы вы дать мне ссылку, плз?
Джон Джон
В этой статье есть хорошая статья о том, как выполнить расчет точки пересечения, а также расчет барицентрического шнура за один раз . По сути это равносильно трансформации треугольника.
Joojaa

Ответы:

14

Это достигается с помощью барицентрической интерполяции .

Сначала находим барицентрические координаты P . Барицентрические координаты представляют, какой вес каждая вершина вносит в точку, и могут использоваться для интерполяции любого значения, которое известно в вершинах по всей поверхности треугольника.

Рассмотрим 3 внутренние треугольники Б Р , Р Б С и Р С А .ABPPBCPCA

введите описание изображения здесь

APPBCABC .

PAпВС становится больше , а два других становятся меньше.

1 . Таким образом, достаточно найти только две из координат, чтобы получить третью.

Метод вычисления барицентрических координат:

ВaрYAзнак равно(ВY-СY)(пИкс-СИкс)+(СИкс-ВИкс)(пY-СY)(ВY-СY)(AИкс-СИкс)+(СИкс-ВИкс)(AY-СY)ВaрYВзнак равно(СY-AY)(пИкс-СИкс)+(AИкс-СИкс)(пY-СY)(ВY-СY)(AИкс-СИкс)+(СИкс-ВИкс)(AY-СY)ВaрYСзнак равно1-ВaрYA-ВaрYВ

Вывод и рассуждения объяснены в статье в Википедии .

п

пUvзнак равноВaрYAAUv+ВaрYВВUv+ВaрYССUv

Обоснование также очень хорошо объясняется в этом презентации.

Также смотрите этот вопрос для эффективных методов расчета.

Rotem
источник
Есть ли ошибка в ? Должен ли первый член быть (ВaрYВ(AY-СY)
@joojaa Я так не думаю. То же самое и в статье в Википедии, и, похоже, это правильно из тестового расчета, который я сделал.
Rotem
ах, так что , было бы неплохо указать, как вы предварительно вычислите A-(AY-СY)AСYзнак равно(AY-СY)
1
п