目录

OBJ 模型格式适配

OBJ 是一个被很多三维建模软件所支持的模型格式。

在使用 OBJ 模型时会用到多种文件,.obj 文件存储着物件的几何形态、各个 部件、及要显示的面到 材质 的对应关系, .mtl 文件存储着各个 材质贴图 路径信息的对应关系,而 .png 文件(下称贴图)是要使用的 贴图。每个面有一个材质名称,而每个材质有一个贴图文件名和一个颜色属性。

OBJ 和 MTL 文件可以使用任意文本编辑软件(如记事本、Notepad3、VSCode)等打开查看内容。

贴图

在 OBJ 文件中,mtllib 指令设定这个 OBJ 文件所使用的 MTL 文件,usemtl 指令设定面和材质的对应关系;在 MTL 文件中,newmtl 创建材质,Kd 设定材质颜色,d 设定材质透明度,map_Kd 设定材质对应的贴图。大多建模软件可选择在导出 OBJ 的同时导出 MTL 文件。

如果 OBJ 内有 mtllib 指令(多数建模软件在导出时选中导出 MTL 会自动添加)的话,会自动解析对应的 MTL 文件。会自动解析相对路径,在 OBJ 里的 mtllib 处不需要写完整的 mtr:…… 资源位置。

和 BBMODEL 只能使用一张贴图不同,MTL 文件本身就有设定贴图的功能。NTE 使用以下方法为模型设定贴图:

UV 坐标

UV 坐标用于解释贴图的哪一部分应当被如何地贴在模型表面上。

将一些模型放入 NTE 时可能发现贴图上下颠倒。这是由于 OBJ 格式没有明确规定 V 坐标正方向应该向上还是向下,NTE 按照 V 坐标正方向向下来读取,而一些建模软件是按照 V 坐标正方向向上来导出 OBJ 的,结果就是上下颠倒了。

在使用 OBJ 模型的地方,NTE 允许指定一个 flipV 设定。在上述的情况下将其打开,NTE 就会反过来读取,让贴图的显示正确。

建模软件 V 正方向 是否需要反转
Blender 向上 需要添加 flipV
Blockbench 向上 需要添加 flipV
Metasequoia 向下 (不勾选反转 V 时) 不需要

部件

OBJ 中可以有 分组 (部件) 信息,如门和车身处于不同分组 (部件),使得可以通过选择部件进行移动来让开门时门独立于车身移动。

在 OBJ 文件中,go 指令设定分组 (部件)。大多建模软件导出 OBJ 时可选择一并导出分组信息。当文件里同时有 go 指令时只会按照先出现的一种进行分组。

渲染阶段

严格来说,NTE 并不像 MTR 本体一样按照阶段依次处理各个分组,所以这个“渲染阶段”的称呼对于 NTE 来说有些不太贴切,但我们仍然沿用这个称法。

MTR 有着 exteriorinteriorinteriortranslucentlight 等多个 渲染阶段 (stage)。具体来说:

这些渲染阶段可以通过和使用 BBMODEL 时相同的方式,在模型属性里对部件进行设置。

特别地,为了方便建模,NTE 额外支持通过 OBJ 的材质名称而不是 MTR 模型属性来设置渲染阶段。在材质名称后加 #渲染阶段 即可为使用了这一材质的面设定渲染阶段。如将材质名设为 mat1#exteriortranslucent 将给使用 mat1#exteriortranslucent 这一材质的所有面添加半透明支持。这对于没有 mtllib 时的情况也有效,届时会将 # 之前的内容作为贴图文件名称。

注意:请只在确实是半透明的表面(如窗户)上设置 ……translucent 属性。为保性能,NTE 默认情况下不精确处理半透明面之间的遮挡关系,多个半透明面之间的互相遮挡关系很多时候都会不正确。