Paw*_*arz 2 c++ opengl directx animation
我正在尝试将*.x文件导入我的引擎并使用OpenGL动画它们(目前没有着色器,但现在这并不是真正相关).我在MSDN上找到了格式参考,但它在问题上没有多大帮助.
所以 - 基本上 - 我已经创建了一个文件,其中包含一个类似恶魔的简单动画,有7个骨骼(主要,尾部2个,腿部4个),其中只有2个(右腿)现在是动画.我已经在DXViewer中测试了网格,它似乎在那里工作得很好,所以问题必须是我的代码的一面.
当我导出网格物体时,我得到一个包含大量信息的文件,其中有三个重要的位置用于骨架动画(以下所有矩阵都用于RLeg2骨骼):
SkinWeights - matrixOffset
-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
Run Code Online (Sandbox Code Playgroud)FrameTransformMatrix
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
Run Code Online (Sandbox Code Playgroud)绑定姿势中的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
Run Code Online (Sandbox Code Playgroud)我的问题是 - 我对这些矩阵做了什么?我在纽卡斯尔大学网站上找到了一个等式(http://research.ncl.ac.uk/game/mastersdegree/graphicsforgames/skeletalanimation/),但那里只有一个矩阵.问题是 - 如何组合这些矩阵来获得顶点变换矩阵?
这篇文章并不是一个完整的答案,而是一组有用的链接.
如何获取动画所需的所有信息
问题是如何导入网格,为什么要这样做.你可以用.x网格战斗一个月,但这没有任何意义,因为这.x是一个非常基本的,旧的,非常不够好的格式.您.x在StackOverflow上找不到很多格式的粉丝.=)
.x文件以棘手的方式存储动画数据.它旨在通过一组D3DX*()功能加载.但是,要手动获取骨骼和权重,您必须预处理加载的数据.很多东西要编码.这是一篇很重要的文章,解释了如何:
做事的好方法就是切换到一些网格加载库.最流行和最普遍的是Assimp.至少,看看他们的文档和/或源代码,他们如何处理加载和预处理,以及什么乳清作为输出.另外,这里有一个很好的解释:
所以,有了assimp你可以停止战斗并立即开始制作动画.也许以后,当你知道它是如何工作的时候,你可以编写自己的装载机.
当你获得动画所需的所有信息时
骨骼动画是一个基本主题,在网络上详细解释.
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
3095 次 |
| 最近记录: |