游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2293|回复: 7

看蒙皮动画遇到的问题,求教

[复制链接]

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2007-10-11 23:27:00 | 显示全部楼层 |阅读模式
看骨骼动画时遇到的问题

在导入模型的函数D3DXLoadMeshHierarchyFromX和创建初始化一个frame的函数HRESULT CAllocateHierarchy::CreateFrame以及创建网格容器的函数HRESULT CAllocateHierarchy::CreateMeshContainer 三处设置的断点
发现是在调用了D3DXLoadMeshHierarchyFromX之后多次调用CAllocateHierarchy::CreateFrame来创建整个骨骼系统的二叉树架构
的(很多书上也是这么写的)。
可是在CAllocateHierarchy::CreateFrame函数中除了初始化了FRAME的名字之外,把用来存储frame的D3DXFRAME_DERIVE结构里的三个指针都设为空了,如下:

    pFrame->pMeshContainer = NULL;
    pFrame->pFrameSibling = NULL;
    pFrame->pFrameFirstChild = NULL;

这样怎么建立的树型结构呢,虽然在反复的调用CAllocateHierarchy::CreateFrame函数来建立骨骼,可是父亲frame和孩子frame没有联系呀(至少在指针方面没有看出来)。
   
   我想了很久,有一种不成熟的想法。函数原形HRESULT CAllocateHierarchy::CreateFrame( LPCSTR Name, LPD3DXFRAME *ppNewFrame ) 第一个参数是本次要建立的frame的名字,而第二个参数*ppNewFrame 是指向本次要建立的frame的指针(其实在函数中是作为返回值的)。我想是不是在本次调用CAllocateHierarchy::CreateFrame时把上次调用这个函数的pFrameFirstChild或pFrameSibling当做第二个参数的实参传了进来。这样本次创建并初始化的frame就是上次建立frame的孩子或者兄弟,这样就有联系的建立起来骨骼的树形结构。
   但这只是我的推测,代码中没有显式的调用这个函数并传递参数。不知道我的推测是否正确,请各位指点一二了。


谢谢


54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
 楼主| 发表于 2007-10-19 17:15:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

没有哪位热心的高手指导一下么?

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
 楼主| 发表于 2007-10-23 19:39:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

自己顶一下

20

主题

222

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2007-10-23 22:43:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

帮你顶一下,
哎,没研究过自带的骨骼系统,要学习的话,自己从头做一个还好理解点

0

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2007-10-24 09:30:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

我的理解为,程序调用D3DXLoadMeshHierarchyFromX载入x文件时,先创建网格容器,获得网格容器指针,再创建多个空的frame结构,获得对应的frame名和frame指针数组,然后用for语句从文件读取骨骼矩阵数据和把网格容器指针填充新创建的frame结构,并根据各个frame名再用for语句寻找并填充剩余的兄弟frame指针成员和子frame指针成员.这样就可以创建整个骨骼系统的二叉树架构.

不过我不明白为什么他new了新的frame又马上delete?

20

主题

222

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2007-10-26 07:57:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

有点不明白,为何用2叉树呢?骨骼系统并不是一个2叉树结构呀?

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
 楼主| 发表于 2007-10-27 10:33:00 | 显示全部楼层

Re:看蒙皮动画遇到的问题,求教

因为我看例子里遍历这个树的时候就是只有一个孩子,一个兄弟。就相当于二叉的了

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
 楼主| 发表于 2007-10-27 10:35:00 | 显示全部楼层

Re: Re:看蒙皮动画遇到的问题,求教

独孤伤: Re:看蒙皮动画遇到的问题,求教

我的理解为,程序调用D3DXLoadMeshHierarchyFromX载入x文件时,先创建网格容器,获得网格容器指针,再创建多个空...


我在CreateFrame 和 CreateMeshContainer做了断点,的确是先执行的CreateFrame ,然后只调用了一次CreateMeshContainer(因为tiny.x里只有一个Mesh).接下来就是一系列CreateFrame 的调用阿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-19 22:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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