CSV模型转换工具 (v2)
将OBJ模型转化为供BVE/Hmmsim使用的CSV模型
编程: Zbx1425
转载请注明作者及本页链接
本程序能干什么?
本程序可将草图大师(Sketchup)、水杉建模(Metasequoia)、Blender等软件所导出的Wavefront(.obj)格式模型文件转换为可供BVE/Hmmsim使用的CSV格式模型文件,以便线路开发者使用建模软件更加便捷地制作复杂模型。
本程序需要系统装有 Microsoft .Net Framework 4.6.1 (及以上) 运行环境才可启动。此运行库一般在较新版本的 Windows 10 中均已自带,但版本较老的系统中可能没有。如软件无法启动则请您自行搜索安装。
对此程序的修改及再发布必须按照由 自由软件基金会 (FSF) 发布的 GNU通用公共授权第三版 (The GNU General Public License v3.0, GPLv3) 许可协议进行。如您对该协议的内容有所异议,建议您不要继续使用此程序。您可在此阅览 GPLv3 的 中文版本。
下载 v2.0
从Github获取源代码
较上一版的主要优点
- 增设图形窗口界面,操作及调整配置更便捷
- 对Sketchup支持更佳,转换Sketchup模型不会再有左右颠倒、上下翻转的情况
- 改用更完善的OpenBVE OBJ解析器,模型读取支持更广泛
使用说明
- 软件界面:
- 按按钮选取OBJ文件,或将一个OBJ文件拖拽进日志框中,即可开始转换。
- 透明抠色: 为CSV中所有MeshBuilder使用SetDecalTransparentColor指令,将贴图中同样颜色区域改为透明。
- 单面改双面: 字面意思。不过全改成双面后常会出现深度冲突造成的闪烁问题,所以并不太实用。
- 本机字符编码: 如果出现乱码或"Material ... was not found"错误信息,导致输出模型不正常,可尝试勾选此选项。
- (带法向量): 导出CSV模型时附加法向量。除非您特意调整了模型的面法向量,否则不需勾选。
- 变换功能可帮您在建模软件外进行一些简单的变换操作。顺序为翻转->缩放->旋转->平移。更复杂的变换请用建模软件进行。
- 平移: 分别设定在X、Y、Z轴上平移的距离,单位为米。
- 旋转: 分别设定绕X、Y、Z轴旋转的角度,单位为°(deg,角度)。
- 缩放: 分别设定在X、Y、Z轴上的缩放倍数。
- 翻转: 可分别进行X轴(即对于YZ平面),Y轴(即对于XZ平面),Z轴(即对于XY平面)的镜像翻转。
- 命令行调用:
CsvConvert.exe [file1] [file2] ...
,或直接将模型文件拖拽到程序图标上。
不显示窗口: CsvConvert.exe -nogui [file1] [file2] ...
,请注意在此情况下将不能获取到日志。
建模及导出的注意事项
- SKP/MQO/blend模型、各个贴图文件、及导出时选取的OBJ模型文件名中都不要有中文,如已经有了请改成全英文!
- 请尽量设法控制面数及曲线分段数。如果过于精细或过于追求曲面平滑,这样的模型放到游戏中会卡得要死。
- 日夜间不同材质、自发光面等设定暂不能在软件中完成,您可人工编辑输出的CSV模型来添加这些功能。
对于 草图大师(Sketchup)
- Sketchup中所有的面都有正反之分,白色的一面为正面,灰色的一面为反面。虽然在Sketchup中编辑时两面都能看得见,但实际上每个面导出后都是只能从正面一侧看到的。
因此,建模时请务必确认都是白面朝着玩家所在区域(例如垃圾桶白面朝外,天花板白面朝下,地板白面朝上)。要在贴图之前确认,贴上图之后就分不出来了。如果面的朝向不对,选中它,右键菜单中点击"反转平面(Reverse Faces)"即可翻面。
- 在默认情况下,BVE的 X 轴正方向对应Sketchup的红轴正方向(实线半轴),Y轴正方向对应蓝轴正方向,Z轴正方向对应绿轴正方向。如果在Sketchup中修改了轴向,则对应关系会有所不同。
- 文件->导出->三维模型 (File->Export->3D Model),保存类型选取 *.obj。
对于 水杉建模(Metasequoia)
- 在使用带颜色的材质时,只接受散射光、基本色和材质贴图。如无特殊需求建议把散射光拉满(1.0,不知为何默认是0.8)。
设定纹理映射模式为UV。
- 保存OBJ模型时,请将下图中红箭头所指的设置项同样设置,其他选项按需。
对于 Blender
致谢
- 本程序使用OpenBVE的Wavefront、X、CSV解析器来解析模型,使用OpenBveApi处理模型。主要作者是 leezer3 和 s520。
- 本程序使用yinyue200 移植的 Mozilla Universal Charset Detector以检测字符编码。