骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 98|回复: 1

[经验与教程] 骑砍战团顶点动画制作的所有方法(最全归纳,秘术传承)

[复制链接]

221

主题

1103

回帖

1082

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2893127
第纳尔
14912
精华
0
互助
95
荣誉
21
贡献
325
魅力
1398
注册时间
2017-11-5
鲜花(438) 鸡蛋(0)
发表于 3 天前 | 显示全部楼层 |阅读模式
骑砍战团顶点动画模型动画制作与生成的所有方法(最全归纳,秘术传承)
关于顶点动画过去我在骑砍中文站讲了代码的使用案例以及分享了Noesis这种强大的模型及动画万能格式转换工具,实际上对于顶点动画还有一些其他的工具或手段可以生成处理,现在我来归纳分享给大家,虽然顶点动画对战团游戏引擎的负担相当严重,但是大家可以看到我的若干试验DEMO中,确实是一条模拟其他很多游戏的捷径。或许你们也能想到更多适合这门技术的赛道。
几种顶点动画MD3模型的生成途径介绍如下:
-------------------------------------------------------------------------------------------------------------------------
方法一、obj分解然后openbrf中合成MD3模型
(这种方法最常规,几乎是除了我之外的其他MOD作者的通用或者是唯一做法)
1、要下载的工具或插件
3dmax 2010版本以上推荐2016版本)+exportobjseq.ms】插件
blender
2、基本步骤
*步骤1、导出各帧静态模型的核心工具及用法:
1)、3dmax 2010版本以上推荐2016版本)+exportobjseq.ms】插件
用法:打开3dmax,直接把插件拖到3dmax窗口里可弹窗界面,选择导出静态模型obj的帧数区间即可,生成的模型是命名+数字序号。
2)、blender
用法:blender导出模型为obj格式里,导出设置选项有勾选是否含动画的设置,勾选后会生成导出模型命名+数字序号的多个模型。
3)以上两个方法选其一。
*步骤2openbrf导入各帧静态模型合并生成顶点动画
具体操作:确保各帧静态模型生成的点线面数据一致的前提下,全选要合并动画的静态模型,右键弹出选项,点击选项merge as frames in a vertex ani”,就可以合成。
但是!!!!!!
但是!!!!!!
但是!!!!!!
但是!!!!!!
但是!!!!!!
但是!!!!!!
往往各帧静态模型的点线面数据是不一致的,前人总结的各种导出模型前的设置要求均难以完全解决这个问题,实际上掌握一个关键步骤,能够让你在默认模型导出设置条件下,在openbrf中的合并成功率提高至80%以上,只需要在openbrf里操作,全选要合成动画的各帧静态模型,右键弹出选项,点击选项“抛弃”,再点击扩展选项“normals”,便可以大幅提升合成成功的概率。
*步骤3openbrf里面处理模型帧时刻区间形成等差数列
openbrf里针对顶点动画模型点击“编辑选项”,点击扩展选项“复制帧”,然后对顶点动画模型同样在“编辑选项”中点击“黏贴时间信息”,这一步每个顶点动画生成的最后一步都要这样处理,目的是让动画的帧序号:帧时刻=110,形成等差数列,因为代码实际控制动画控制的是帧时刻,很多时候处理出顶点动画模型后在openbrf里面帧时刻是乱的,你不处理成这种等差数列的数据形式,那么你的动画播放效果就是不匀速或者多个帧数挤占一个时刻而播放不出来。
3、对这一方法的评价(优点及局限分析):
1)这是最蠢的办法,也是最保底的方法
因为所有顶点动画直接转换动画格式一步到位的插件均存在它们转换失败的场合,一旦其他工具都无法处理时,最后可以试一下这种办法
2)不适合多贴图的组合模型或需要配合合并UV贴图处理的能力
如果一个动画模型拥有很多mesh,每个mesh对应不同的贴图,那么你导入brf后会不断提示你是合并模型导入还是分开mesh导入,无论是怎么选,最后都不利于你选择合并,因为mesh会一个个交替排列,你要一个个挑着选择。
如果你能自行将这些多mesh模型的多个贴图合并为一张,那么还好处理一点。
-------------------------------------------------------------------------------------------------------------------------
方法二、Noesis万能解包工具
(强烈推荐的方法)
基本步骤
步骤相当简单,这个软件支持查看预览fbxdae等主流通用动画模型(不能直接支持3dmaxmayablendermax之类的专用格式,优先导出为fbx这种通用格式中转一下),以及雷神之锤、半条命时代的MDLmd2md3等老牌动画模型格式,只要是noesis可以查看预览到动画的模型格式,选中目标模型,右键点击导出,在导出设置选项选择目标格式为MD3即可。
局限性评价:
    部分软件导出的fbx格式哪怕版本号一致,导出模型动画可能产生扭曲、塌陷、马赛克化、拉丝。
解决办法:尽量使用3dmax2016导出fbx2014、二进制版本的fbx,如果是maya等其他模型软件的来源,也尽量导出fbx后,到3dmax2016再导出一遍fbx2014、二进制版本的fbx,然后采用noesis4474及以上版本,可以大幅减少模型动画异常变形等问题。
但是如果发现模型是动画区间基本上半个身子被压扁的塌陷,这个是因为md3面数上限限制问题,实际上上限没有那么低,只是早期游戏的配置使得这些md3导出软件设置了这个处理上限,这时候请选blender插件或obj分解看看能不能解决这个问题,如果不能,放弃这个动画文件。
特殊优点:
因为对半条命、cs、雷神之锤quakedoom系列的动画格式的查看功能,即半条命和CSmdl格式,quake2md2格式等等,进而可以快捷转换这些游戏的动画模型导出为MD3,并且MD3本来和这些游戏的格式是同宗同源的关系,导出效果十分好。
此外这些古老格式支持的配置文件可以对动画数量进行简单删减,可精简去除不用的动画后再进行导出。

-------------------------------------------------------------------------------------------------------------------------
方法三、blenderMD3导出插件 import_bsp
基本步骤
下载blender4.0,加载import_bsp这个插件后,导入支持的动画文件,导出选项md3,可以选择区间范围导出MD3
局限性评价:
1blender3dmaxmaya等其他模型软件导出的fbx动画模型支持度较差,且只能加载fbx7.0 ASCii版本的fbx格式,很多其他软件导出的fbx,要么是在blender里面显示异常,要么是显示正常但是用md3插件导出后拉丝、塌陷异常。
个人感觉这个插件和Noesis差不多能接受一些常规的2010-2016年份版本的动画文件,以及适当处理一些次世代的动画模型(因为支持突破quake系列游戏要求的面数限制选项),对2010之前或者用其他模型软件转换过格式的动画模型支持度较差。

-------------------------------------------------------------------------------------------------------------------------
方法四、3dmax老版本的md3导出插件 export MD3.dle
基本步骤
下载3dmax2010,加载export MD3.dle这个插件后,模型导出选项就有MD3选项,导出时弹框有一些设置内容,请务必勾选最下方的设置,因为这个可以忽略报错,否则无论动画模型如何,会每一帧弹一次报错信息而且还要你点确认框,还不能一次性关闭(手误没勾选就任务管理器强关3dmax吧)
然后这个软件的最大优势就是,可以选择不同动画区间合并后导出MD3,这是所有本次介绍的插件不具备的,也就是动画本来是0-1000帧数,你认为300-500帧数没用,就可以填写“0-299501-1000”来只导出这个范围的动画帧并只生成一个MD3动画模型。
局限性评价:
插件必须在3dmax2010运行,更高版本不再有3dmax版本的md3导出插件,但是用了autodesk旗下产品的,大家都有感觉,20102016是各种autodesk产品的分水岭,版本低和版本高都不好用,最好用的阶段还是2014-2016版本,且不同版本就算可以高版本导出低版本,其表现的东西也可能产生变化甚至扭曲。
所以这个插件只适合用于2010年份左右产出的动画模型,哪怕是那种从高版本转低版本的也不太适合。
但是这个软件也有其非常适用的场合,因为一些老游戏也是只有老版本3dmax才有插件,如魔兽争霸3mdx导入插件。以魔兽争霸3举例,你可以先尝试使用魔兽争霸的mdx导入插件,结合md3插件从3dmax10导出md3看看效果,一旦存在塌陷问题,直接导出max文件(不要导出fbx文件,2010fbx导入20163dmax扭曲率很高),然后用3dmax2016导出一遍2014版本的fbx,再让noesis导出md3,这样md3导出效果会比较好。

-------------------------------------------------------------------------------------------------------------------------
方法五、介绍一些专用雷神之锤这种以MD3作为游戏格式的古老年代用的工具
这种工具很多,并且很多只有十几兆或几十兆而已,但是对于骑马与砍杀来说,用处较低,因为骑马与砍杀需要导入md3,则需要一个先能导入常规动画格式如fbx再便捷转换导出md3的软件,而那些古老软件的时代,连fbx这种通用格式还没有诞生。
不过我主要介绍其中一个稍微有一丢丢作用的产品:
Misfit Model 3D
这个软件能对md2md3这些雷神之锤quake系列老游戏的格式进行导入和特殊处理,但是上述说的用fbx等格式导出的md3文件,这个软件是不识别的,只能识别quake系列按照其引擎规则处理的md3文件,并且对fbx等常规动画模型格式都不支持导入,更谈不上格式转换之说。那对于我们使用素材来说有什么作用呢?
唯一作用就是可以使用quake3系列的人物怪物素材,因为quake3系列把人物是分成upperlowerhead即头、上半身、下半身三个部分的MD3,如果想导入他们的素材,身体无法直接合并在一起,因为连接点不在模型空间的固定坐标点,这时候,你只能通过Misfit Model 3D这个软件,导入身体一部分的md3时,如果身体其他部分及控制帧数、坐标的CFG文件在同一个文件夹内,软件会提示你是否将身体其他部位一起导入,如果选是的话,导入软件中人物身体部位就可以合并一起了,然后可以导出一个MD3出来。

16

主题

132

回帖

204

积分

见习骑士

Rank: 3

UID
3304622
第纳尔
690
精华
0
互助
26
荣誉
3
贡献
0
魅力
168
注册时间
2021-12-28
鲜花(31) 鸡蛋(0)
发表于 3 天前 | 显示全部楼层
可以补充,不少次世代模型动画,动画本身带有位移,可以通过指令批量修改动画模型帧xyz的坐标点全部设定为第一帧的xyz值。这样模型动画的位移就可以在代码中掌控了。
下面是blender的示例代码:
[code]import bpy
# ========== 仅需修改此处的位置目标值(单位:米) ==========
# 填写需要设定的最终位置坐标,脚本会覆盖所有位置关键帧为该值
TARGET_LOCATION = {
    "X": 0.0,      # 自定义X轴目标位置
    "Y": -0.20544, # 自定义Y轴目标位置
    "Z": 3.1551    # 自定义Z轴目标位置
}
# ========================================================

# 获取当前选中的对象
selected_objects = bpy.context.selected_objects
if not selected_objects:
    print("⚠️ 请先选中需要处理的动画对象!")
else:
    for obj in selected_objects:
        # 仅处理绑定了动画数据的对象
        if obj.animation_data and obj.animation_data.action:
            action = obj.animation_data.action
            print(f"\n
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2026-3-10 19:16 , Processed in 0.091887 second(s), 21 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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