在3d计算机图形中插值

Geo*_*rge 2 3d graphics interpolation x3d

我想知道是否有人可以帮助简单地解释插值是什么以及它在3d计算机图形中的使用方式

3Da*_*ave 11

简单地说:给出两点A和B,找到它们之间的一个点.

例如,如果我想在一个步骤中沿着一条线从一个位置x = 1移动到x = 4:

1-----------------------4
Run Code Online (Sandbox Code Playgroud)

第一步是在位置1,第二步是在位置4,因此对象立即从一个位置移动到另一个位置.但是,如果我希望对象花费一定的时间或帧数来进行转换,我需要通过找到均匀间隔的中间点来改进它.

如果我希望对象采取两个步骤(或帧)从1移动到4,

1-----------X-----------4
Run Code Online (Sandbox Code Playgroud)

我需要计算新点(X)是什么,这样我就可以在适当的时候绘制对象.在这种情况下,点X将是

                                  (max-min)
location = min + (current_step) * --------
                                    steps
Run Code Online (Sandbox Code Playgroud)

location是我们想要找到的.min= 1,max= 4,并且在此示例中steps= 2,因为我们要将跨度分为两个步骤:

step:   location:
0       1
1       2.5
2       4

1------------(2.5)-----------4
Run Code Online (Sandbox Code Playgroud)

如果我们想采取4个步骤:

step:   location:
0       1
1       1.75
2       2.5
3       3.25
4       4

1---(1.75)---(2.5)---(3.25)---4
Run Code Online (Sandbox Code Playgroud)

等等.对于四个步骤,对象移动每帧总距离的25%.对于10个步骤,10%等广告恶心.

对于多个维度(当对象具有2维或3维轨迹时),只需将其单独应用于每个X,Y,Z轴.

这是线性插值.还有其他种类.一如既往,谷歌可以帮助你.

其他应用包括纹理映射,抗锯齿,图像平滑和缩放等,当然还有游戏和图形之外的许多其他用途.

注意:很多框架已经提供了这个.例如,在XNA中,它是Matrix.Lerp.