gpt4 book ai didi

c++ - OpenGL 中 DirectX 文件的骨骼动画

转载 作者:搜寻专家 更新时间:2023-10-31 00:15:28 27 4
gpt4 key购买 nike

我正在尝试将 *.x 文件导入我的引擎并使用 OpenGL 为它们制作动画(目前没有着色器,但现在这并不真正相关)。我在 MSDN 上找到了格式引用,但它对解决问题没有多大帮助。

所以 - 基本上 - 我已经创建了一个文件,其中包含一个简单的动画,该文件包含一个具有 7 根骨头(主骨头、2 根尾部和 4 根腿)的恶魔般的生物,其中只有 2 根(在右腿)现在是动画的。我已经在 DXViewer 中测试了网格,它似乎在那里工作得很好,所以问题一定出在我的代码方面。

当我导出网格时,我得到一个包含大量信息的文件,其中有 3 个骨骼动画的重要位置(以下所有矩阵都是针对 RLeg2 骨骼的):

  1. 蒙皮权重 - 矩阵偏移

    -0.361238,  -0.932141, -0.024957,  0.000000,
    0.081428, -0.004872, -0.996669, 0.000000,
    0.928913, -0.362066, 0.077663, 0.000000,
    0.139213, -0.057892, -0.009323, 1.000000
  2. 帧变换矩阵

    0.913144,  0.000000, -0.407637,  0.000000,
    0.069999, 0.985146, 0.156804, 0.000000,
    0.401582, -0.171719, 0.899580, 0.000000,
    0.000000, -0.000000, 0.398344, 1.000000
  3. 绑定(bind)姿势中的AnimationKey矩阵

    0.913144,  0.000000, -0.407637,  0.000000, 
    0.069999, 0.985146, 0.156804, 0.000000,
    0.401582, -0.171719, 0.899580, 0.000000,
    0.000000, -0.000000, 0.398344, 1.000000

我的问题是 - 我究竟要用这些矩阵做什么?我在纽卡斯尔大学网站 (http://research.ncl.ac.uk/game/mastersdegree/graphicsforgames/skeletalanimation/) 上找到了一个方程式,但那里只有 1 个矩阵。问题是 - 如何组合这些矩阵以获得顶点变换矩阵

最佳答案

这篇文章不是假装是一个完整的答案,而是一组有用的链接。

如何获取动画所需的所有信息

问题是如何导入网格,以及为什么要这样做。你可以和 .x 网格战斗几个月,但这没有任何意义,因为 .x 是一种非常基础、陈旧且确实不够好的格式。您在 StackOverflow 上找不到很多 .x 格式的粉丝。 =)

.x 文件以一种巧妙的方式存储动画数据。它旨在通过一组 D3DX*() 函数加载。但是,要手动从中获取骨骼和权重,您必须预处理加载的数据。很多东西要编码。这是一篇大文章,解释了如何:

Loading and displaying .X files without DirectX

做事情的好方法就是切换到一些网格加载库。最受欢迎和通用的是 Assimp .至少,看看他们的docs和/或源代码,关于它们如何处理加载和预处理,以及乳清作为输出的内容。另外,这里有一个很好的解释:

Tutorial 38 - Skeletal Animation With Assimp

因此,借助 assimp,您可以立即停止战斗并开始制作动画。也许稍后,当您了解它的工作原理时,您可以编写自己的加载器。

当您获得动画所需的所有信息时

骨骼动画是一个基本主题,在整个网络中都有详细解释。

希望对您有所帮助!

关于c++ - OpenGL 中 DirectX 文件的骨骼动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19323192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com