游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1261|回复: 1

关于骨骼动画的问题

[复制链接]

5

主题

8

帖子

30

积分

注册会员

Rank: 2

积分
30
发表于 2009-5-2 19:37:00 | 显示全部楼层 |阅读模式
本人刚学习骨骼动画,有些问题还没搞清楚.
以下是我的理解,不知道对不对,希望高手指点一下:
1.在.x模型中,一块frame(骨骼)必有一个Mesh(可能为空),对吗?Mesh里的点坐标是相对世界的,还是相对于与它关联的frame的?
2.matrixOffset(骨骼偏移矩阵)的在哪里使用的,好象没看到?它是frame的绝对矩阵的逆矩阵?
3.子骨骼变换矩阵 * 初始网格中坐标 = 在父骨骼坐标系下的坐标对吗?
4.frame的transformationMatrix会改变吗?如果会,那它是由谁改变的?如果不会,那么每个骨骼的combinedTransformationMatrix肯定
  也不变化吧!
5. 这是用来算各个frame在世界坐标系的矩阵转换的吗? (parentMatrix传入的是时间坐标系)
void CXFileEntity::UpdateFrameMatrices(const D3DXFRAME *frameBase, const D3DXMATRIX *parentMatrix)
{
    D3DXFRAME_EXTENDED *currentFrame = (D3DXFRAME_EXTENDED*)frameBase;

        // If parent matrix exists multiply our frame matrix by it
    if (parentMatrix != NULL)
        D3DXMatrixMultiply(&currentFrame->exCombinedTransformationMatrix, &currentFrame->TransformationMatrix, parentMatrix);
    else
        currentFrame->exCombinedTransformationMatrix = currentFrame->TransformationMatrix;

        // If we have a sibling recurse
    if (currentFrame->pFrameSibling != NULL)
        UpdateFrameMatrices(currentFrame->pFrameSibling, parentMatrix);

        // If we have a child recurse
    if (currentFrame->pFrameFirstChild != NULL)
        UpdateFrameMatrices(currentFrame->pFrameFirstChild, &currentFrame->exCombinedTransformationMatrix);
}
   

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-5-3 01:52:00 | 显示全部楼层

Re:关于骨骼动画的问题

原来写的关于骨骼动画的基本原理,希望有用
http://blog.csdn.net/soilwork/archive/2009/03/29/4033147.aspx
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 11:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表