首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个模型-视图矩阵之间的插值

两个模型-视图矩阵之间的插值
EN

Stack Overflow用户
提问于 2013-04-06 21:39:06
回答 2查看 2.9K关注 0票数 2

在OpenGL中,给定两个摄像机位置(即模型视图矩阵),我希望它们之间能顺利过渡。也就是说,我想在两个模型视图矩阵之间进行插值。我看到了很多关于使用SLERP在两个旋转矩阵之间插值的资源,但是对于摄像机位置,我们也有一个平移组件。这样做很简单,就像对3x3旋转矩阵使用SLERP,对模型视图矩阵的3x1转换组件使用LERP ?我的直觉告诉我,可能不是这么简单,因为3x1翻译组件不是相机的世界空间位置,对吗?

如果我有每个摄像机位置的实际世界位置,我想我可以将这些步骤分解为两个OpenGL命令:

代码语言:javascript
复制
glMultMatrix(newRotation); // rotation using SLERP
glMultMatrix(newTranslation); // translation using LERP

如果我正确理解的话,在这里,newTranslation不是模型视图矩阵的3x1转换组件,而是相机的世界空间位置。

EN

回答 2

Stack Overflow用户

发布于 2013-04-07 09:57:10

为什么不在摄像机位置/目标之间插入?

代码语言:javascript
复制
startPos = x
endPos = y
startTarget = xx
endTarget = yy

update()

代码语言:javascript
复制
currentPos = interpolate(startPos, endPos, time_param);
currentTarget = interpolate(startTarget, endTarget, time_param);

camera_matrix = lookAt(currentPos, targetPos, upVector);

我认为这样更容易控制摄像机的运动。

以下是更高级的插值方法:http://sol.gfxile.net/interpolation/

票数 2
EN

Stack Overflow用户

发布于 2014-07-07 05:28:38

对于'3x1‘部分来说,线性变换是正确的,为了找出原因,让我们深入讨论矩阵变换函数。

假设我们有模型视图矩阵:

代码语言:javascript
复制
{ a, b, c, 
  d, e, f,
  g, h, i,
  x, y, z }

Where a->i is our 3x3 rotation/scale component
and x->z is the "3x1" part you were talking about.

并让我们使用顶点位置:{ A, B, C }

关于这些矩阵/向量要注意的一点是,它们实际上是' 4x4‘和' 4x1’矩阵的缩写,我们用“恒等”值来代替4x4的缺失部分,用'1‘代替4x1的最后一个值。

这意味着我们的实际工作价值是:

代码语言:javascript
复制
{ a, b, c, 0, 
  d, e, f, 0,
  g, h, i, 0,
  x, y, z, 1 }

and
{ A, B, C, 1 }

现在我们有了很好的匹配矩阵维数,我们可以应用我们的4x4 * 4x1矩阵乘法运算,这将给我们一个4x1结果。

(如果你不知道怎么做,去谷歌搜索,有一堆下降的资源,这是相当简单的)

这给我们的结果是:

代码语言:javascript
复制
{
    A*a + B*d + C*g + 1*x,
    A*b + B*e + C*h + 1*y,
    A*c + B*f + C*i + 1*z,
    A*0 + B*0 + C*0 + 1*1,
}
or (simplified):
{
    A*a + B*d + C*g + x,
    A*b + B*e + C*h + y,
    A*c + B*f + C*i + z,
    1,
}

请注意,每个组件都只添加了xyz,并且这些值不以任何其他方式使用。

对矩阵的'3x1‘值没有什么特殊的处理,它只是将它们添加为位置偏移量,因此,对它们进行线性插值将导致“摄像机”的线性位置运动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15856329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档