坎巴拉太空计划吧 关注:81,993贴子:1,881,980

【经验分享】如何打开原版的mbm文件

只看楼主收藏回复


MK1驾驶舱贴图,取自mbm文件


1楼2013-10-19 20:41回复
    由于不会3d建模 有的mod可以直接用原版模型(尺寸不变),但是改贴图需要打开mbm文件。
    据称mbm文件是塞班系统的图形文件,可是用塞班系统的工具没能成功打开。
    lz昨天发现了@姜焱夫 提到的“MBM需要用16位进制修改器把头几个数字改了就可以用mbp格式打开”(引用来源:http://tieba.baidu.com/p/2596860584?pn=1),于是决定改头文件。


    2楼2013-10-19 20:48
    收起回复
      快上教程


      来自Android客户端3楼2013-10-19 20:49
      回复
        涂鸦亮了


        4楼2013-10-19 20:50
        回复
          可是mbp文件不是图形文件啊,lz猜测是bmp文件,正巧lz对bmp文件头研究过。下面上图对比:

          这是mbm文件的头部,其中前面四个字符是“KSP”,我们忽视它。
          后面蓝框内00040000实际上是16进制00004000h=512,于是蓝框里就是纵横的像素数512X512。
          lz没标识的暂不清楚有什么作用,猜测其值用于表示此文件赋予颜色还是透明度。
          绿框是00000020h=32,表示32位编码,于是下面粉框中的数据每4个字节代表一个像素


          6楼2013-10-19 21:07
          收起回复
            其实这些要素已经使得mbm文件可以解读了,我们要做的是把它转化为bmp的格式。
            再看bmp文件:

            和mbm类似,前面有一个小头“BM”,蓝框和绿框的意义和mbm一致。
            棕色的框比较特别,他们表示这个文件的大小。由于KSP wiki上说明了KSP的贴图文件有三种规格:256X256,512X512,1024X1024,而图片文件一般是24位或32位(对应绿框中1800或2000),文件的大小只有六种。
            在这六种情况下,文件大小=文件头(54字节)+数据,使得上面的棕色框中前四位始终为3600(16进制,下同),后面可能的值是03(256 24位),04(256 32位),0C(512 24位),10(512 32位),30(1024 24位),40(1024 32位)。下面的棕框保持第三字节与上面一致就好,前两字节设为0。
            其他部分按照lz设置即可,有兴趣的可以翻百度百科找bmp的格式。


            7楼2013-10-19 21:21
            回复
              如果只有文件头不一样,我们可以只修改头部,直接拷数据就好了,可惜这样得到的结果并不理想:

              这个是SAS的贴图,似乎有哪里不对?
              不错,绿色的部分基本和游戏一致,可是游戏中SAS是黄色条纹的……不过蓝色也很好看不是么


              8楼2013-10-19 21:27
              回复
                考虑到mbm文件据说是加密的,值么简单就破解了不太科学不是么?
                于是lz研究了一下色值,这个蓝色是R21 G165 B232,正常的黄色是红绿为主的,于是lz猜测KSP作者把颜色换了一下位置。
                在24位的图片中,每个颜色是一个字节,每3个字节一个像素,lz将1、3字节对换,终于得到了正常的图:


                9楼2013-10-19 21:33
                回复
                  这个意义非凡


                  10楼2013-10-19 21:35
                  回复


                    11楼2013-10-19 21:36
                    回复
                      技术宅啊


                      12楼2013-10-19 21:37
                      回复
                        32位的bmp文件中4个字节分别是RGBA,其中A是透明度(?如果没记错的话),这样把R和B换一下,其他两个不变,就得到了MK1的图……
                        虽然原理很简单,但是改数据的工作量很大啊!但是,lz也不是手工改的不是,编个小程序就可以了。


                        13楼2013-10-19 21:38
                        收起回复
                          技术贴必须留名!!!


                          14楼2013-10-19 21:49
                          回复
                            lz找到了一些不按套路出牌的mbm……并不是所有的都是256X256,512X512或1024X1024(虽然大多数都是),这么一来bmp的文件大小还是要好好算一下。


                            15楼2013-10-19 21:53
                            收起回复
                              技术贴必须留名!!!


                              19楼2013-10-19 23:00
                              回复