导入导出Virtools文档

这是实验性内容

原生导入导出Virtools文档是BBP插件的试验性内容,它可能存在许多问题,请参阅报告问题章节来了解更多。当遇到问题时,请及时汇报。BBP插件的作者不对因BBP插件问题导致的任何后果负责。

导入Virtools文档

点击File - Import - Virtools File可以导入Virtools文档。导入支持CMO,VMO,NMO文件。点击后会弹出文件打开界面,并在侧边栏展示导入设置。首先你需要选择导入的Virtools文档,然后在侧边栏配置导入设置,配置完导入设置后即可点击导入开始导入,并等待Blender下方提示导入完成即可。

冲突解决选项

Conflict Options(冲突解决选项)章节指示了当导入器遇到物体名称重复的情况时,该如何处理。分为4个等级,分别针对Object(物体),Mesh(网格),Material(材质),Texture(贴图)。处理方式则有2种:Rename(重命名)和Use Current(使用当前)。选择重命名后,当遇到重复名称时,将会自动为其添加名称后缀使其名称唯一化。而选择使用当前,则会忽略从文件中导入此项,转而使用Blender文档中已经存在的同名的项目。

与Virtools冲突解决的不同

相比较于在Virtools的冲突解决对话框,BBP插件提供的冲突解决选项不支持替换功能,同时其粒度也不支持精细到单个实例,只能针对一整个类型进行设定。因此你无法单独为每一个冲突的实例设置不同的冲突解决方案。但目前这种设置已经能满足绝大对数的使用场景了。

冲突解决选项章节里的选项的默认值是通常导入时会选择的解决方案。当然针对特殊导入情况需要特殊设置,例如正在从外部导入一个从原版中导出的机关模型,则可能连材质选项都可以选择使用当前,而无需复制一份。正确使用冲突解决选项是制图经验所给予的,本手册不会对此进行教学。

Virtools参数

众所周知,Virtools使用基于系统的多字节字符编码来处理文档,因而很容易出现所谓乱码问题。Blender本身不会出现乱码问题,然而如果我们不能以正确的编码读取Virtools文档,则当Virtools文档被导入Blender时,其中存储的字符仍然可能会呈现乱码状态。Virtools Params(Virtools参数)章节的Encodings(编码)属性用于指定读取Virtools文档的编码。可以指定多个编码,多个编码之间用;(分号)分隔。下面列出一些常用的编码:

  • cp1252:Ballance所用的西欧编码
  • gb2312:中文Windows系统默认编码

编码属性非常重要,如果设置了错误的编码,导入Blender的各类物体的名称会出现不可认知的情况,又或者会导致程序出错。

有哪些编码可以使用?

自BBP 4.1版本后,我们使用编码的名字基本上就是照抄Python的编码名。大多数Python中常用的编码名都有映射,只有一些特别罕见的编码没有支持,对于具体支持的编码则需要查看源码。有关Python支持的编码,请查看Python相关文档。编码名不区分大小写。

从旧版本迁移的警告

自BBP 4.1版本开始,BBP的Virtools文档导入模块使用的底层库LibCmo版本号提升为0.2。在此版本前,编码属性是一个平台相关的设定。在Windows下,这里需要填写的是Windows代码页数字。而在其它操作系统下,LibCmo使用iconv进行字符编码解码,因此需要使用合法的iconv编码标识符

这一切在LibCmo 0.2后发生了改变,从这个版本开始,LibCmo采用了类似Python的统一编码名。它是平台无关的,你不再需要检查你正在使用的操作系统是Windows还是Linux,所有平台的编码字符均为相同的字符串。这也就意味着如果您之前自定义过编码设置,你需要注意将他们转换到新的统一编码名,因为旧的编码名可能在统一编码名下没有对应映射,例如之前在Windows上指定的1252,在新的统一编码名下应当被书写为cp1252,原编码在新系统下无法被正确识别。

导出Virtools文档

点击File - Export - Virtools File可以导出Virtools文档。点击后会弹出文件打开界面,并在侧边栏展示导出设置。首先你需要选择导出的Virtools文档的位置,然后在侧边栏配置导出设置,配置完导出设置后即可点击导出开始导出,并等待Blender下方提示导出完成即可。

导出目标

Export Target(导出目标)章节用于决定你需要将哪写物体导出到Virtools文档中。你可以选择导出一个集合或一个物体,并在下面选择对应的集合或物体。需要注意的是,选择集合的时候,会将内部集合中的物体也一起导出,即支持嵌套集合的导出。

Virtools参数

Virtools Params(Virtools参数)章节与导入Virtools文档中的类似。Encodings(编码)属性决定了导出Virtools文档时所用的编码。

Global Texture Save Option(全局贴图保存选项)决定了那些设置了Use Global(使用全局设定)的贴图的真实保存方式。通常而言,设置为Raw Data(原始数据)则可以100%保证保存的Virtools文档可以包含正确贴图,但是其体积也可能会变大,设置为External(外部数据)则可以尽可能减少文件大小,但可能会出现导出的文档找不到贴图文件的问题。我们建议你在进行材质设置时就对每个材质单独指定应该如何保存,而不是依赖全局选项来设置。这个选项是给那些依赖全局贴图保存选项的旧地图的再编辑来使用的。还需要注意的是,尽管这个选项里有Use Global选项,但请 不要 选择,否则会导致错误,因为显然你不能让一个全局选项再去使用全局选项的设置。

Use Compress(使用压缩)属性指定保存的文档是否压缩存储。压缩可以显著减少文档体积,且在现代计算机平台上,压缩所造成的性能损失几乎可以忽略不计。当选择使用压缩后,一个额外的Compress Level(压缩等级)属性将会显示,用于指定压缩的级别,数值越高,压缩率越大,文件越小。

Ballance参数

Ballance Params(Ballance参数)章节包含针对Ballance特有内容,对导出过程进行优化的参数。

Successive Sector(小节连续)是一个解决导出小节组时出现的Bug的选项。由于某些原因,如果一个小节中没有任何机关(实际上是某小节组中没有归入任何物体),导出插件会认为该小节组不存在,因而遗漏导出。且由于Ballance对最终小节,即飞船出现小节的判定是从1开始递增寻找最后一个存在的小节组,所以二者叠加,会导致Ballance错误地认定地图的小节数,从而在错误的小节显示飞船,这也就是导出Bug。当勾选此选项后,导出文档时会预先按照当前Blender文件中Ballance地图信息中指定的小节数预先创建所有小节组,然后再进行导出,这样就不会遗漏创建某些小节组,飞船也会在正确的小节显示。

这个选项通常在导出可游玩的地图时选中,如果你只是想导出一些模型,那么需要关闭此选项,否则会在最终文件中产生许多无用的小节组。