游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2495|回复: 3

ID3DXAnimationController 中的SetTrackPosition 不起作用

[复制链接]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2007-3-13 18:01:00 | 显示全部楼层 |阅读模式
我现在制作一个动画。,控制0-20帧显示人物走动,21-40显示跳跃。导出.x文件,
用ID3DXAnimationController载入,代码没有错误,我跟踪了一下,发现执行都是正确的,返回都是S_OK。
但是发现SetTrackPosition就是不起作用,不能起到定位位置的作用.
AdvanceTime 因为不能起定位作用,所以只能用SetTrackPosition.


代码如下:

LPD3DXANIMATIONSET pAS;
UINT dwNewTrack = 0;
g_pAnimController->GetAnimationSet(dwNewTrack,&pAS);
g_pAnimController->SetTrackAnimationSet( dwNewTrack, pAS );                               
g_pAnimController->SetTrackEnable( dwNewTrack, TRUE );
g_pAnimController->SetTrackPosition( dwNewTrack, 0.0 );
g_pAnimController->ResetTime();

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2007-3-13 18:03:00 | 显示全部楼层

Re: ID3DXAnimationController 中的SetTrackPosition 不起作用

这是完整代码:

void CALLBACK KeyboardProc( UINT nChar, bool bKeyDown, bool bAltDown, void* pUserContext )
{
    if( bKeyDown )
    {
        switch( nChar )
        {
            case VK_F1: g_bShowHelp = !g_bShowHelp; break;
                        case VK_F8: g_pAnimController->AdvanceTime( 0.01, NULL ); break;
                        case VK_F9: g_pAnimController->AdvanceTime( 2.001, NULL ); break;
                        case VK_F10:

                                LPD3DXANIMATIONSET pAS;
                                UINT dwNewTrack = 0;

                                g_pAnimController->GetAnimationSet(dwNewTrack,&pAS);

                                DOUBLE Total_time = pAS->GetPeriod();

                                DOUBLE nowtime = g_pAnimController->GetTime();
                                g_pAnimController->ResetTime();
                                DOUBLE step = Total_time - nowtime;

                                HRESULT  ss;

                                ss = g_pAnimController->SetTrackAnimationSet( dwNewTrack, pAS );
                               
                                ss =  g_pAnimController->SetTrackEnable( dwNewTrack, TRUE );
                                ss =  g_pAnimController->SetTrackPosition( dwNewTrack, step );
                                g_pAnimController->ResetTime();

                                int oo=0;

                                break;
        }
    }
}

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2007-3-14 12:08:00 | 显示全部楼层

Re: ID3DXAnimationController 中的SetTrackPosition 不起作用

有人知道吗?顶一顶

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2007-3-14 13:17:00 | 显示全部楼层

Re: ID3DXAnimationController 中的SetTrackPosition 不起作用

找到原因了,一定要加一句 g_pAnimController->AdvanceTime(0.0,NULL);
呵呵。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 16:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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