интерполяция в 3d компьютерной графике - PullRequest
2 голосов
/ 09 января 2011

Мне было интересно, может ли кто-нибудь помочь объяснить простыми словами, что такое интерполяция и как она используется в компьютерной 3D-графике

Ответы [ 3 ]

10 голосов
/ 09 января 2011

Проще говоря: учитывая две точки 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 .

2 голосов
/ 09 января 2011

Интерполяция - это плавная настройка от одного к другому.Он используется в анимации.

Например, если объект находится в местоположении 1 и мы хотим переместить его в местоположение 2 в течение шести секунд, нам нужно медленно интерполировать его местоположение между двумя конечными точками,Интерполяция также относится к любому поиску местоположения по этому пути.

0 голосов
/ 09 января 2011

Интерполяция - это «угадывание» точек на основе других точек.

например, когда у вас есть точки (0,0) и (2,2), вы можете «догадаться», что точка (1,1) также принадлежит набору.

Простое приложение - вывести линию из двух точек.

То же самое работает в 3-х или фактически n-мерном измерении.

В 3D графике будет использоваться

  • для анимации, для расчета положения вещей на основе начальной и конечной координат
  • счетные строки
  • градиенты * * 1016
  • масштабирование графики и, вероятно, еще много
...