芙蕖吧 关注:498贴子:2,677

节点版本blender30插件V2.1.0古剑奇谭游戏数据加载插件

只看楼主收藏回复

一楼祭天


IP属地:北京1楼2022-03-27 19:13回复
    简体pan点baidu点com斜杠s斜杠100Mns8a6eLguL19pwPfv9g
    版本为io_scene_烛龙数据V2.1.0
    ========================
    主要特性:
    支持古剑1模型及动画导入,支持的格式 .nif、.kf
    支持古剑2模型及动画导入,支持的格式 .xac、.xsm、.vmesh、.model
    支持古剑3模型导入, 支持的格式 .model、.avatar,不支持古剑3动画导入
    ========================
    主要问题:
    古剑1动画中裙子和头发,有时会发生过旋转,暂时找不到办法处理,提供选项,可选不导入这部分动画,只导入主体动画。
    古剑1中 .kf文件,大部分主体只有一个姿势不变,其他都为裙子及头发动画,古剑1的动画量挺少的,不如古剑2多。
    古剑1的 .nif场景文件,部分场景贴图会少导入。
    ========================
    其他说明:
    古剑3 .avatar是角色文件,记录的角色的各个模型的地址和角色眼睛的材质贴图地址
    ========================
    简记:
    动画的导入,像神的恩赐一样,
    在按照我自己的思路,尝试到再无思路,在我折腾C++代码转python,思路是对的,代码一一对应是对的,却无正确的结果,其中还有无法处理的矩阵边缘情况,需要再次深入寻找代码,无果的时候。
    不经意之间,发现不用我自己C++代码转python,blender居然有对应的python接口,
    没错就是他,directe, roll = bpy.types.Bone.AxisRollFromMatrix()
    之前查过blender文档,也有看过这个函数,但从来没查到,这个函数是 文件 bone space 转blender bone space的关键,
    网页上的资料大抵是基础的东西,很少有告诉基础之上如何相互组合... ...
    。。。 。。。
    古剑3的动画导入,目前文件的二进制解析没有思路,
    我自己预估,估计得再写个新的辅助解析工具,才有办法突破这个瓶颈,旧的解析辅助工具有点不想用。
    旧的解析辅助工具,以现在的眼光看,除了有各种缺点,居然还可以,先用着试着解析... ...
    古剑3的动画导入,估计得 long long long time later之后了... ...
    。。。 。。。


    IP属地:北京2楼2022-03-27 20:04
    收起回复
      膜拜大佬,太强了!!!真的非常感谢您


      IP属地:四川3楼2022-03-28 18:31
      回复
        更新了!!


        IP属地:广东来自Android客户端4楼2022-04-16 22:58
        回复
          打扰芙蕖大佬了!!
          我在blender3.12启用了新版插件之后,导入模型但是只导入了空集。这是版本问题吗还是什么?


          IP属地:广东来自Android客户端5楼2022-05-01 13:56
          收起回复
            Python: Traceback (most recent call last):
            File "E:\serect\blender-3.1.2-windows-x64\3.1\scripts\modules\bpy_extras\io_utils.py", line 81, in invoke
            self . filepath = blend_filepath + self.filename_ext
            File "E:\serect\blender-3.1.2-windows-x64\3.1\scripts\modules\bpy_types.py", line 772, in __getattribute__
            return super().__getattribute__(attr)
            AttributeError: '类' object has no attribute 'filename_ext'
            location: <unknown location>:-1


            IP属地:广东来自Android客户端6楼2022-05-02 14:01
            收起回复
              楼主你好,想要提取古剑3的模型制作其他游戏的mod还需要使用这个工具吗,倒腾一晚上没找到教程


              7楼2022-05-02 23:34
              收起回复
                问一下大佬,这个插件能读取古剑网络版的model吗


                8楼2022-05-03 07:42
                收起回复
                  膜拜大佬


                  白银星玩家
                  百度星玩家累积成长值为1,去领取
                  活动截止:2100-01-01
                  去徽章馆》
                  IP属地:河北9楼2022-05-13 19:04
                  回复
                    古剑2可以参照下这位
                    https://forum.xentax.com/viewtopic.php?t=12641
                    然后古剑1的kf动画文件是没有解析完全吗?
                    我想看导入角色主体的动画,游戏内有动作,外边就肯定能拆出来
                    最后膜拜大佬


                    IP属地:广东10楼2022-05-14 16:12
                    收起回复
                      稳定版本io_scene_烛龙数据V2.5.1,
                      新增特性是支持导入古剑三hka动画(旋转部分)、以及修复了之前遗留下来的大量bug。
                      到这个版本,插件的主体功能基本稳定,框架也不会再变化。
                      只剩下解决古剑3位移动画、古剑三navmesh、部分Fbx2015.1toHavok2014.1.0.model.hkx生成的hkx文件导入缺失功能,古剑2的hkt文件,古剑2的model文件。
                      这些剩余功能主要关心古剑3位移动画、navmesh。
                      有点想不到,古剑3的位移动画居然比旋转动画还要复杂。


                      IP属地:北京11楼2022-05-29 21:12
                      回复








                        IP属地:北京15楼2022-05-31 14:47
                        回复
                          二、版本特性 Release Notes
                          - 完整支持古剑1模型、表情和动画的导入。(.nif,.kf)
                          - 完整支持古剑2模型、表情和动画的导入。(.xac,.xsm,.vmesh)
                          - 完整支持古剑3模型、表情导入;支持hka动画文件中旋转动画的导入,暂时不支持hka动画文件中位移动画。(.model,.hka, .avatar,.morph)
                          - 未支持古剑3场景模型navmesh格式文件。
                          - 其他特性:
                          - 到V2.5.1版本,插件的重构告一段落,本版本解决了之前遗留的许多bug,如古剑1场景贴图错误,古剑1古剑2部分UV翻转错误等问题。
                          - 插件目前自动处理了,模型及动画的缩放、坐标系变换,和旋转,基本实现了只需在blender导入界面点击选择要导入的文件,再点击加载按钮即可,可以不用理会加载窗口右侧的属性设置,除了古剑3目前因为blender31不支持古剑三dds的原因,需要额外选择 “导入贴图为png” 这一项设置。
                          - 插件导入到blender中的自动处理行为,包括自动缩小角色模型100倍,以符合blender的基本单位m,现在导入后,角色模型的身高基本在1.7m左右;变换不同模型和动画的左右坐标系到blender坐标系,使模型骨骼的方向正常;自动旋转角色模型到正面面对屏幕。
                          - 惊讶于旋转模型并不会影响动画的导入,神奇的矩阵。选择实现插件自动缩放处理的另一个原因是,在blender中应用缩放,模型没有正确按比例缩小,模型网格有缺陷。
                          - 古剑1和古剑2材质导入blender后,十分接近古剑游戏中的效果,想要更好的表现效果则需要手动处理;古剑3则还需另外探索材质的处理方式。
                          - 由于blender31不能全部识别古剑3的dds贴图,之前找到的微软发布的dds转png开源DirecTex软件,DirecTex软件对古剑三dds文件识别不全;这次找到了kopaka1822' s ImageViewer开源软件,ImageViewer软件能够完整识别古剑3的dds贴图。现在古剑3的贴图终于能正常导入到blender中了。
                          - 裙子类双面网格(重叠网格),插件无法程序识别内侧网格,不能对其处理,需要手动首选缩小内侧网格,以使渲染正常。
                          - 插件并没有对导入的文件版本进行版本判断,默认导入的文件都是古剑123的游戏数据文件,导入其他版本的游戏数据文件,可能会出错,可以自行尝试。


                          IP属地:北京16楼2022-05-31 14:54
                          回复
                            四、如何使用?
                              插件安装好后,导入古剑1模型文件nif,在blender加载窗口选择要导入的文件,然后直接点击加载按钮即可,可以不用理会窗口右侧的各项属性设置。导入古剑1动画文件kf,则需要先在blender中3DView视图中选中骨架对象,在blender加载窗口选择要导入的文件,再点击加载按钮导入,同样可以不用理会窗口右侧的各项属性设置。可以把 .kf、.xsm、.hka动画文件加载到不同的骨架对象上,但不是对应的骨架,结果可能不正确,想探索可以自行尝试。
                              导入古剑2的模型文件xac、vmesh和动画文件xsm,和古剑1是一样的操作,同样可以不用理会窗口右侧的各项属性设置。
                              古剑3的模型文件model, 动画文件hka, 角色文件avatar的导入,和古剑1是同样的流程,但导入古剑3模型model文件和角色avatar文件需要1项额外的设置,需要设置blender加载窗口右侧选项 “模型导入的贴图格式” 为png(imageviewer),之后在点击加载按钮即可。blender31至今依然不识别古剑3的dds贴图,好在终于找到能够完整支持古剑三dds贴图的文件转换器imageviewer。
                              需要说明,目前有3个问题,插件无法处理,需要手动处理:
                              ①古剑2和古剑3导入模型之后,双面网格(重叠网格)的处理。这个问题在古剑2阿阮默认服装和古剑3小樱子的冬天外衣上表现十分明显,古剑2阿阮裙子的内侧衣服颜色直接覆盖了外侧的衣服颜色,而古剑3小樱子的冬天外衣上则是内侧和外侧一格一格交错显示,并有玻璃反光效果。这个问题的根源是游戏使用2层网格重叠表示双面网格,他们靠得太近,导致blender渲染在深度裁剪环节上出了问题,产生的错误的渲染结果,解决方法就是把内侧面缩小,使内侧面网格和外侧面网格的顶点不重叠在一起,内侧面和外侧面有合适的微小距离,这样渲染结果就正常了。这个双面网格没有任何的数据标识,插件无法程序处理,只能靠人工处理。当前插件是默认缩小100倍导入blender,即使在没有缩小的情况下,双面网格的问题依然存在。而放大导入blender没有意义,blender默认的渲染距离是1000m,放大渲染距离,我的电脑上的blender在拖动操作时会有噪点产生。
                              操作上是,blender界面上方点击UV Editing,在右边网格编辑界面选中网格对象,tab进入编辑模式,在左侧UV编辑界面的左上方,点击双向箭头按钮,打开UV顶点与网格顶点联动编辑功能,在UV这边选择内侧面贴图区域内的所有UV顶点,之后鼠标直接移到网格编辑器界面,键盘按下s(缩放),之后键盘数字输入0.95回车。这样内侧面和外侧面就分离了,阿阮外侧衣服颜色正常显示,小樱子的衣服也不会有奇怪的反光效果。
                              目前导入古剑2阿阮的模型数据,可以看到她们的网格划分有破碎,我追溯过这个问题,这个属于数据便是这样存储的,虽然编辑网格时会让人难受,但只要处理了内侧面的缩小问题,她的显示依然是正常的。我通过blender的按键按下p-按选中项分离网格和ctrl+j合并网格,把破碎的面合并成完整的内侧面,在缩放缩小,这样处理后不会影响动画的导入,动画播放网格正常变化。
                              ②古剑3的材质节点需要手动设置节点连接。古剑1和古剑2只有2张贴图(基本颜色贴图和法向贴图),因此导入blender后效果显示正常,十分接近游戏中的效果,Alpha透明效果也正常,不用再处理。但古剑3有4张贴图,插件目前只处理了2张贴图(基本颜色贴图和法向贴图)的材质连接,剩下的2张贴图,只导入到材质节点中,没有进行材质连接,需要手动连接处理。
                              除此之外,古剑3的角色眼睛的渲染方式与古剑3的正常的渲染方式不一样。古剑3的正常渲染方式是基于物理的pbr渲染的方式,类似于blender的EEVEE渲染,而古剑3眼睛渲染则是另一种完整而逼真的眼睛渲染体系《剖析Unreal Engine超真实人类的渲染技术Part 2 - 眼球渲染》。
                              我试过几种连线方式,效果离古剑3的游戏效果太远。因此古剑3的材质,现阶段就只能连接2张贴图,等到有合适的材质连接方案出现,到时再使用插件自动连接剩下的2张贴图。现在导入到blender材质界面里的节点全部都重叠在一起,需要手动移开,后续看能不能实现节点的自动树状布局。
                              ③古剑123,导入的动画,好像在中间的某一帧会出现问题,所有帧都正常,就这一帧错误,原因暂时不明,需要在blender自行删除这一帧。另一个可能相关的问题是在关闭骨架显示(隐藏该骨架)的情况下,选中这个隐藏的骨架,再导入动画会出现需要清楚动画数据的错误异常,暂时不清楚发生的原因,解决方法是重新显示,选择骨架对象,右键,清楚动画数据,在重新导入动画便正常了。


                            IP属地:北京17楼2022-05-31 14:55
                            回复
                              五、支持的文件格式
                              古剑1
                                《古剑奇谭:琴心剑魄今何在》的游戏引擎使用gamebryo游戏引擎,引擎版本V20.6.0.0,文件版本同样是V20.6.0.0。目前支持的古剑1的游戏是nif文件和kf文件。插件在导入处理上,默认要导入的nif、kf都是古剑1的游戏文件,因此没有对其进行文件版本判断。理论上即使gamebryo是更新的游戏引擎版本,只要文件版本内容与V20.6.0.0版本一样是能正常导入的。
                              nif: 文件存储了游戏角色的模型和表情,武器、场景部件以及完整的游戏场景。
                              kf:  kf储存角色的动画。
                              完整的古剑1动画被拆分开成几个kf进行存储,单个kf只存储身体动画,单个kf只存储头发和裙子动画,少部分kf存储完整动画。
                              目前推测剧情动画估计是完整的,而回合制战斗动画则是读取几个kf组合成完整动画使用。
                              古剑2
                                《古剑奇谭二:永夜初晗凝碧天》的游戏引擎使用Vision Engine游戏引擎,引擎版本V8.0,文件版本则是复杂的多了,从文件上看,古剑2的文件使用了Emotion Fx模型及动画插件、havok模型插件,havok动画插件3种文件版本。havok模型插件我把它单列出来,是作者认为model、vmesh应该是havok新开发的产品系列,他和原来的模型文件场景文件hko、hkx、hkt等文件有很大的不同。
                                目前古剑2使用的Emotion Fx插件版本具体不清楚,xac,xsm目前来看也是单一文件版本,没有其他的xac和xsm文件版本。古剑2的model、vmesh的版本都为1,看样子古剑2是havok新产品系列的第一批使用者。
                              xac: Emotion Fx模型文件,存储了角色模型和表情,以及游戏场景部件模型。
                              xsm:  Emotion Fx动画文件,储存角色的完整动画。
                              vmesh:  havok静态场景部件模型,相比于model,少了骨骼及权重数据部分的数据,主体存储格式一致。
                              model:  havok角色模型,古剑2使用到它地方基本没有,文件十分少,目前插件未支持该文件版本。
                              hkt:  推测为havok静态场景模型,存储了游戏场景部件模型,目前插件未支持该文件格式。
                              古剑3
                                   《古剑奇谭三:梦付千秋星垂野》的游戏引擎同样是Vision Engine游戏引擎,引擎版本不清楚,相比古剑2,文件版本变得简单,少了Emotion Fx文件,只使用havok模型插件,havok动画插件2种,havok二进制文件(havok binary file)模型仅使用model, 动画仅使用hka。但相比古剑2,model的版本则升级到了版本5,少了vmesh,但使用了新的navmesh存储游戏场景。hka的文件版本为hk_2014.1.0。
                                目前古剑3的hka对应的Havok Content Tools(Anarchy) 版本是hk_2014_1_0,需要说明的是低于这个版本或者高于这个版本的HavokContentTools生成的文件,插件不支持,即使是Havok Content Tools_2014_1_1如此接近的版本,我看了生成的文件hkx, 感觉不一样,插件没导入成。
                                我测试了几个Havok Content Tools版本,最后才发现Havok Content Tools (Anarchy) _2014_1_0生成的hkx文件和hka文件是一致的。简单的理解,hkx文件包含了hka文件完整的内容,而且存储的内容比hka多。估计想办法把hkx里面有关于hka的部分提取出来的,就是hka文件了。hka动画的复杂在于havok hkx/hka binary file 中的hkaSplineCompressedAnimation中的data数据部分,简单的理解是hka文件中又嵌套了data文件,他们之间的巨大区别可以算他们是2个不同的文件,解析1个hka文件实际是解析2个文件。
                              model: 模型文件,存储了角色模型,以及游戏场景部件模型。
                              morph:  表情文件,存储了角色表情,遇到... ... morphface.model文件插件会自动导入对应的表情文件。
                              avatar:  角色文件,存储了角色各个模型部件的文件路径地址,以及角色眼睛的材质以及眼睛贴图地址。
                              hka:  动画文件,储存角色的动画,目前插件仅支持其中的选择动画,位移动画目前还未支持。
                              navmesh:  推测为havok场景模型,目前插件未支持该文件格式。
                              hkx:  不是古剑3使用的文件,为Havok_Anarchy_2014_1_0版本的手机移动游戏引擎使用的角色模型、动画、场景模型文件。
                              当时为了解决hka动画文件的解析与导入,使用了fbx转成model加hkx,使用同一个fbx文件作为导入基准,从而能够判断插件导入hkx动画到blender中的差距在哪里。
                              过程使用hkx文件为中转,hkx/hka使用Havok Content Tools (Anarchy) _2014_1_0转成havok的xml动画文本文件(havok tag file),从而能够一一对应解析清楚了hka数据类的属性内容,因此hkx也随hka文件,插件一起支持了。
                              插件仅支持Havok Content Tools (Anarchy) _2014_1_0生成的作为动画使用的hkx文件,其他的hkx文件不支持,如骨骼hkx文件,场景hkx文件等。其他版本的hkx文件也不支持,插件并没有对导入的文件版本进行判断,默认是导入的文件是(Anarchy) _2014_1_0版本


                              IP属地:北京18楼2022-05-31 14:57
                              回复