收起左侧

【记录帖】使用deepseek破解帝国时代3的cam文件(部分破解)

[复制链接]
dablive发表于 2025-2-22 19:07:42
最近deepseek好像蛮火的 听说可以用它来辅助解决一些问题 虽然之前我装blender插件出的问题它一个也没解决于是灵坤一动 想到说不定可以让它分析一下之前烂尾的cam文件 还真给它搞出来些东西 故开个帖记录一下方便交流研究(本人能力有限 如有错误请见谅)
(目前研究的成果是使用hxd将cam文件转16进制以后喂给ds后得来的 还好cam文件不大不会超出深度思考的长度)

零、准备工作
随便找一个cam 使用hxd打开如下2025667b9ab5c0240e.png目前来说比较重要的就是图中三色框框中的部分 cam文件里每项占四个字节 可以直接硬修改 比让ds生成的python好用多了 它生成的放游戏里和空文件没有什么两样或者是我打开方式不对?

一、相机位置

相机位置修改目前来看是最简单的 在上图中 红框中是相机位置信息 0000000行0A-0d的部分是相机的x轴位置 0e-00000010行01是y轴位置 02-05是z轴位置 如图1249667b9998141d63.png图中为配合该cam的主城地板模型 模型原点在蓝色圆圈处 红色箭头代表x轴的正方向 绿色箭头代表z轴的正方向 y轴正方向是竖直向上的 图中蓝色线条代表相机平面 可以看出相机在z轴正方向上(绿色箭头方向)且距离较远 在x轴原点(红色箭头起点)差不多平过来的位置 同时在y轴上具有高度(否则相机就贴地了) 根据以上16进制字节还原十进制 可以看出x坐标为-43.33 y坐标为25.57 z坐标为198.01 与图中位置吻合 因此将十进制转为16进制即可修改相机位置(坐标原点为世界原点 与模型原点一致 16进制还原十进制部分见后文四)

二、相机旋转

相机旋转在开头图中蓝框与绿框两部分组成 其中绿框部分为主体 绿框中 前四字节为x分量 最后四字节为z分量 修改此二者可以进行相机的旋转 旋转后如果相机有偏转情况 可以由蓝框中最后四字节进行微调 此部分由于涉及到比较复杂的数学计算 可参考链接OpenGL(九) 摄像机_相机视角方向向量-CSDN博客或直接让ds进行运算(因为我还没找着方便的法子所以暂时没法写

三、fov及分辨率

此部分大概由于源码或引擎限制 修改fov无效 另外 帝国3原版估计为了适配不同的机器 将cam文件分为了普通分辨率及宽屏 以后缀widescreencamera作区分 因此同一个机位会对应两个cam文件 一个主城加上五个卡牌建筑总共是六个机位十二个cam 不过每个机位的两个cam共用一样的文件也可以运行 所以目前来说区分的意义不大了 该部分未做测试

四、16进制修改及ds参考截图

16进制转十进制可使用IEEE-754 浮点转换器(以下称网页一)以及在线字节大端序小端序转换工具(以下称网页二)工具进行转换 要注意的是 hxd中的代码是小端序(一种格式)需要先将十进制在网页一中转换 此时代码为大端序 再由网页二进行转换 即可在hxd中使用

附ds中各位置代码作用(参考用 不完全准确)版本一:9187567b9af09ddf27.png版本二:2533767b9b6ebcecd9.png

由于本人不会编程与图形学 对文件的分析进度较缓 等鸡啄完了米 狗舔完了面以后慢慢补点知识再继续更新

こはね发表于 2025-2-22 19:15:12
6085bc557a519KCq.gif

看不懂

  • dablive : 它这个主要就是算相机的朝向和姿态啥的特别麻烦然后涉及到相机之间转换的部分好像也有说头但是没研究出来其他地方改了又无效 目前只有改位置可以人工 然后再配合ds让它生成相机角度才能用
跳转到