看到还有人不知道怎么分割地图的 ytd 贴图文件,所以就写了这个教程。
其实原理还是很简单的,大致上和分割车辆的贴图差不多。
确定文件大小
首先看看你的 ytd 多大,例如我的 ytd 有 40MB,拆分为每个 16MB 以下的话,一共要拆成 3 个(40 / 16 ≈ 3),确定完成之后,先将这几个 ytd 新建出来,例如原来的 ytd 叫 yamaga.ytd
,那么你就新建三个这样的 ytd:
- yamaga.ytd
- yamaga_2.ytd
- yamaga_3.ytd
新建完成之后放一边,接下来开始拆分贴图。
拆分贴图文件
我们打开原来的 ytd 文件,选择导出所有贴图,然后找一个干净的位置新建一个文件夹,名字可以随意起,主要是方便记住,例如叫 yamaga_1
,然后把所有贴图导出 dds 格式放进去。
接着,打开刚刚新建的文件夹,看看里面的文件一共多大,例如我这里导出来所有贴图总大小有 122MB,除以 3 之后就大概是 40MB 左右。把文件夹排序改为按照大小排序,大的靠前。
接着从上往下选,选到 40MB 左右的时候就可以了,把这 40MB 文件剪切,返回上一层文件夹,然后再新建一个文件夹,叫 yamaga_2
,进去,粘贴。
完成之后再返回 yamaga_1
文件夹,继续选择 40MB 文件,返回上一层,新建 yamaga_3
文件夹,进去粘贴。完成之后,你就会得到三个文件夹,里面的文件大小都是一样的,到这一步拆分就完成了。
导回贴图文件
回到 OpenIV,打开新建的空的 yamaga.ytd
,然后把刚刚拆分完的 yamaga_1
文件夹里的所有贴图导入,然后是 yamaga_2.ytd
,以此类推,全部导入完成之后,看看有无 ytd 文件超过 16MB 的,如果有,就进入对应文件夹,随便选几个贴图,放到其他没超过的 ytd 里,直到所有 ytd 都小于 16MB。
编写 gtxd 元数据文件
在资源目录(__resource.lua
或 fxmanifest.lua
同目录下)新建一个 gtxd.meta
文件,打开并输入以下内容
<?xml version="1.0" encoding="utf-8"?>
<CMapParentTxds>
<txdRelationships>
<item>
<parent>yamaga_3</parent>
<child>yamaga_2</child>
</item>
<item>
<parent>yamaga_2</parent>
<child>yamaga</child>
</item>
</txdRelationships>
</CMapParentTxds>
这个格式应该很好理解,parent
是父级贴图,child
是子级贴图,子级会继承父级贴图的文件内容,从大到小排序下来就可以了,例如这里 yamaga_3
的子级是 yamaga_2
,然后 yamaga_2
的子级是 yamaga
,最终游戏在读取 yamaga.ytd
的时候就会顺带读取 2 和 3,实现拆分贴图。
设置资源参数
最后一步,也是关键一步,在你的 __resource.lua
或 fxmanifest.lua
里面写入以下内容
files {
"gtxd.meta"
}
data_file 'GTXD_PARENTING_DATA' 'gtxd.meta'
这样游戏就会加载 gtxd.meta
文件了。再次注意:gtxd.meta
一定是放在资源根目录,和 __resource.lua
或者 fxmanifest.lua
在一起,不是放在 stream
里面,放错位置会导致无法加载。
到此贴图拆分就完成了。