游戏开发论坛

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

请教md5的skinning

[复制链接]

46

主题

281

帖子

313

积分

中级会员

Rank: 3Rank: 3

积分
313
QQ
发表于 2004-11-12 21:28:00 | 显示全部楼层 |阅读模式
看了一下格式说明,md5中顶点的xyz坐标保存在weight中,任何一个顶点的位置都要用好几个weights混合求得,不存在我们平时习惯的唯一的原始xyz坐标。这样一来,法线也要等到顶点求出来之后才能得到。每一桢我们都要重新计算法线,而不是通过变换。要是有像素光照,切线和次法线全都要重新计算,又很难放到VS中,这样岂不是太杀CPU了?
各位大侠都是怎样实现的?请指教~

40

主题

211

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
QQ
发表于 2004-11-13 14:36:00 | 显示全部楼层

Re:请教md5的skinning

法线和坐标的变换不是差不多吗?
下面就是dx里骨络动画的部分代码
不知在md5里能不能用?(我还没见过md5的结构和代码) [em10]
//===========================================================================================
// SkinVector
// Applies 4 matrix skinning to a vector.  The vector passed in is changed as well as returned.
//
float3 SkinVector( inout float3 io_value, float4x4 blendMats[60], int4 indices, float4 weights)
{
    int i;
    float3 incoming_io_value = io_value;

     if(weights[0] != -1 )
    {
        io_value = 0;
        
        // skin
        for(i=0; i <4 ; i++)
        {
            io_value  += mul( incoming_io_value, blendMats[indices]) * weights;
        }
   
        io_value = normalize(io_value);
    }

    return io_value;
}

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-11-13 16:47:00 | 显示全部楼层

Re:请教md5的skinning

如果你想用MD5 ,只能这样
法线,切线计算,这些都可以放在GPU里算
麻烦的在于你生成shadowvolume的时候,还是要算一遍位置和法线
而且id的美工作出来的模型,有一个点被6个骨头混合的,这样对于做到GPU
里也是个麻烦的事情

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-11-14 00:09:00 | 显示全部楼层

Re:请教md5的skinning

不只是 md5, skinned animation 技术就是这么做的。至于 GPU,你要相信它的能力,该做的就让它作。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 07:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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