7. BelleIsle DXG&MRB格式解析

294 阅读3分钟

dxg是模型 骨骼等信息 mrb是动画

一、DxgReader

先放一个开源的地址:github.com/lang2858/Dx…

这块首先要解析文件解读流程,同样是在读取到该文件的地方下断点,前面说了因为游戏到登陆界面无法进去,因为服务器已经连接不上了, 客户端的下一个界面记得不错的话是创建角色等流程, 我开始想到是让在调试过程中直接让他全部强制跳到下一个界面,登陆的返回是网络等待结果,这里是一个异步的等待过程,几乎找不到处理这块逻辑的地方。

不过还好,发现在登陆界面之前他有解析了某个dxg文件,所以这里我们直接断点在这里然后看他逐个字节的解析过程。 然后去猜测对应的作用,这里要对lta的结构也要一些了解,因为我将其转换为了lta格式,其实转成fbx也行,从dxg的设计角度来说,只要将其信息解析成功后,然后转成各种格式都行。但存在一些浮点支持,矩阵变换等差异, 特别是在 dxg/mrb和lta中到Fbx时候一些 角度换算 ,比如到欧拉角的换算中会存在一些不确定结果,导致动画时候可能一只脚反转的情况。

而dxg等设计更贴近lta的,所以我直接转换为了lta格式。 另外在lt引擎工具中有lta的查看器,可以直接预览效果。

image.png

image.png

其中modeledit可以直接打开lta和ltc文件进行查看模型,骨骼,以及anim等。

二、DxgMaxPlugin

在这个研究过程中,我其实首先尝试的是将dxg直接用3dsmax插件方式解析到max中,因为这样不需要熟悉lta等格式。 只要看下max的基本接口就行了,可以加速专注研究dxg的格式。我过程中也确实是这样做的,可以快速的产生结果,查看解析的文件到模型是否正确。 这个工程的代码就是过程代码主要是逐步实现 DxgReader这个类,先存下来记录下,因为这里我记得当时稍微学习了下max插件开发。 git代码地址为:github.com/lang2858/Dx…

三、LTB2FBX

在资源中有些是LTA,有些是LTB,其实根据lt引擎来看,ltb是lta的一种二进制压缩格式,后续文章中我会对dxg lta等格式进一步解释。 我们已经将dxg和mrb成功转成了lta,lta可以转成ltb,那么如果用lt引擎来加载这些资源的话是ok了的。

但是毕竟lt引擎比较落伍了,如果我们用ue或者u3d等引擎呢,那么最好是转成fbx格式较为合适。

所以这里我又做了一个 ltb2FBX,这里根据前面的知识来说,主要是了解fbx的格式,并且需要对应生成相关的骨骼和动画。

fbx格式的文档 FBX SDK Programmer’s Guide.pdf ,生成这种格式化我安装了一个fbx的sdk fbx20161_fbxsdk_vs2010_win.exe 进行操作。

image.png

中间可能有些代码还很不成熟和漂亮,但是经过验证很多个dxg经过转到fbx,然后到ue中能成功使用,先备份到 git : github.com/lang2858/LT…

下一篇写下dxg格式和lta格式的解释,其实代码里面已经有了。