最近deepseek好像蛮火的 听说可以用它来辅助解决一些问题 虽然之前我装blender插件出的问题它一个也没解决 于是灵坤一动 想到说不定可以让它分析一下之前烂尾的cam文件 还真给它搞出来些东西 故开个帖记录一下方便交流研究 (本人能力有限 如有错误请见谅) (目前研究的成果是使用hxd将cam文件转16进制以后喂给ds后得来的 还好cam文件不大不会超出深度思考的长度)
零、准备工作 随便找一个cam 使用hxd打开如下 目前来说比较重要的就是图中三色框框中的部分 cam文件里每项占四个字节 可以直接硬修改 比让ds生成的python好用多了 它生成的放游戏里和空文件没有什么两样或者是我打开方式不对?
一、相机位置
相机位置修改目前来看是最简单的 在上图中 红框中是相机位置信息 0000000行0A-0d的部分是相机的x轴位置 0e-00000010行01是y轴位置 02-05是z轴位置 如图 图中为配合该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中各位置代码作用(参考用 不完全准确)版本一: 版本二:
由于本人不会编程与图形学 对文件的分析进度较缓 等鸡啄完了米 狗舔完了面以后慢慢补点知识再继续更新
|