Интерполяция в 3d компьютерной графике
Мне было интересно, если кто-то может помочь с простыми словами объяснить, что такое интерполяция и как она используется в компьютерной графике 3D
4 ответа
Проще говоря: учитывая две точки A и B, найдите точку между ними.
Например, если я хочу переместить что-то вдоль линии от позиции x=1 до x=4 за один шаг:
1-----------------------4
Первый шаг находится в местоположении 1, второй шаг - в местоположении 4, поэтому объект мгновенно перемещается из одного места в другое. Однако, если я хочу, чтобы объект занимал определенное количество времени или количество кадров, чтобы сделать переход, мне нужно уточнить это, найдя промежуточные точки, которые расположены равномерно.
Если я хочу, чтобы объект сделал два шага (или кадры), чтобы перейти от 1 до 4,
1-----------X-----------4
Мне нужно вычислить, что такое новая точка (X), чтобы я мог нарисовать объект там в подходящее время. В этом случае точка X будет
(max-min)
location = min + (current_step) * --------
steps
location
это то, что мы пытаемся найти. min
= 1, max
= 4, и в этом примере steps
=2, так как мы хотим разделить диапазон на два шага:
step: location:
0 1
1 2.5
2 4
1------------(2.5)-----------4
Если мы хотим сделать 4 шага:
step: location:
0 1
1 1.75
2 2.5
3 3.25
4 4
1---(1.75)---(2.5)---(3.25)---4
И так далее. За четыре шага объект перемещается на 25% от общего расстояния на кадр. За 10 шагов, 10% и т. Д. До тошноты.
Для нескольких измерений (когда объект имеет 2- или 3-мерную траекторию), просто примените это к каждой оси X,Y,Z независимо.
Это линейная интерполяция. Есть и другие виды. Как всегда, Google может помочь вам.
Другие приложения включают в себя наложение текстур, сглаживание, сглаживание и масштабирование изображений и т. Д., И, конечно, многие другие применения вне игр и графики.
Примечание: многие фреймворки уже предоставляют это. В XNA, например, это Matrix.Lerp.
Интерполяция - это плавная настройка от одного к другому. Используется в анимации.
Например, если объект находится в местоположении 1, и мы хотим переместить его в местоположение 2 в течение шести секунд, нам нужно медленно интерполировать его местоположение между двумя конечными точками. Интерполяция также относится к любому поиску местоположения на этом пути.
Интерполяция - это "угадывание" точек на основе других точек.
например, когда у вас есть точки (0,0) и (2,2), вы можете "догадаться", что точка (1,1) также принадлежит набору.
Простое приложение - вывести линию из двух точек.
То же самое работает в 3-х или фактически n-размерности.
В 3D графике это будет использоваться
- для анимации, чтобы рассчитать положение вещей на основе начальной и конечной координации
- счетные линии
- градиенты
- масштабирование графики и, возможно, многое другое
Общее определение
Интерполяцию (в математике) можно рассматривать как переход от одного значения к другому. Интерполяция обычно использует значение в диапазоне от 0 до 1, например, в процентах. 0 — это начальное значение, а 1 — конечное значение. Основная цель интерполяции - найти значения между заданными значениями.
Типы интерполяции
Существует много типов интерполяции, используемых в различных программах, наиболее распространенной из которых является линейная интерполяция . Этот тип интерполяции самый простой и понятный; Он используется для поиска значений в сегменте линии между двумя точками или числами. Также есть: кубическая интерполяция , квадратичная интерполяция , билинейная , трилинейная и т.д. Для получения дополнительной информации перейдите сюда: https://en.wikipedia.org/wiki/Interpolation.
Применение в 3D-графике
Интерполяция, особенно линейная, билинейная и трилинейная, важна для вычисления фрагментов геометрии (текстуры и визуальные эффекты геометрии), смешивания объемных текстур, мип-мэппинга (влияние глубины резкости на текстуру) и освещения (например, объемного изображения нереального движка). карты освещения). Результаты интерполяции могут различаться, но потенциально они могут дать очень реалистичные результаты. Это довольно большие вычисления, особенно когда интерполяция выполняется в 3-х измерениях или выше (гиперпространство).
Пример интерполяции
В 1 измерении:
n1 = 1
n2 = 2
i = 0.5
n3 = (n1 - n1 * i) + n2 * i
///////////////////////////////////////
n3
├────────┼────────┼────────┼────────┤
1 1.25 1.5 1.75 2
///////////////////////////////////////
В 2 измерениях:
v1 = {1, 1}
v2 = {1.5, 2}
i = 0.5
d = √((v1.x - v2.x)^2 + (v1.y - v2.y)^2)
v3 = {v1.x + -d * i * ((v1.x - v2.x) / d),v1.y + -d * i * ((v1.y - v2.y) / d)}
///////////////////////////////
2 ┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼ v2
1.5 ┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─●
┼─┼─┼─┼─┼─┼─┼v3─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─●─┼─┼─┼─┼─┼─┼
┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
┼v1─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
●─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼
1 1.5 2
///////////////////////////////