【问题】
DGN格式有可能转成OSGB格式吗?
【解决方法】
目前没找到直接将DGN转成OSGB格式的工具,但是发现 GitHub有一个开源工具能够将FBX,OBJ,DEA (collada)格式导出OSGB,工具名字叫 osgconv.exe,并且可以使用同一个安装包内的 osgviewer.exe 工具来查看导出的osgb文件内的模型。
也就是可以先将 DGN转FBX,然后再将FBX转成OSGB格式。
测试了一下,FBX内的材质信息也可以被一起转到OSGB文件中,但是需要将FBX文件使用的材质图片jpg文件都放到FBX文件内记录的正确目录位置下。目前发现这个工具对中文文件名的支持不是很好,所以文件名和路径名最好都是英文,不要有中文,这点应该是GitHub开源代码没有考虑多语言支持的原因。
这两个工具:osgconv.exe和osgviewer.exe,可以从GitHub官网直接下载,下载方法文章后面有说明。
【将DGN转成FBX】
MicroStation或者基于MicroStation的一些专业软件(OpenBuildings Designer, OpenPlant Modeler, OpenRoads Designer等)都可以将DGN转成FBX文件:
通过如下菜单可以找到导出FBX的选项:
菜单 File> Export> Exchange File Types> FBX
关于导出FBX,可以参考此Wiki:导出FBX文件后坐标值与原来DGN不匹配
【将FBX转成OSGB格式的方法】
使用DOS窗口执行以下这个osgconv.exe命令就能将FBX转OSGB,语法如下:
osgconv input.fbx output.osgb
其中input.fbx是要转换的FBX文件,output.osgb是生成的OSGB文件名,要包括正确的文件路径,比如要将文件:myfile.FBX转成myfile.osgb,输入的命令如下:
osgconv.exe D:\Temp-new\osgb\myfile.FBX D:\Temp-new\osgb\myfile.osgb
【查看生成的OSGB文件】
生成的osgb文件可以使用如下命令查看osgb文件内的模型:
osgviewer.exe filename.osgb
例如,要查看刚才生成的myfile.osgb文件的话,就是如下命令:
osgviewer.exe D:\Temp-new\osgb\myfile.osgb
【工具 osgconv.exe,osgviewer.exe 的下载方法】
可以从GitHub官网直接下载osgconv.exe和osgviewer.exe 这两个工具,两个工具都在一个安装包内,解压缩后通过DOS黑窗口执行就可以,GitHub的官网下载地址:
点击下面的二进制编译好的下载包:(选择二进制编译好的安装包就行不需要源代码,开发人员才需要选择源代码)
Binaries :
Windows Binaries provided by OBJEXX Engineering
会跳转到如下下载地址:https://objexx.com/OpenSceneGraph.html
可以下载这个 OpenSceneGraph 3.6.5 -- Visual C++ 2022 -- 64-bit -- Release 版本,我这里测试就是使用的这个版本。
下载后的文件名字是:OpenSceneGraph-3.6.5-VC2022-64-Release-2023-01.7z,可以将此文件直接解压缩到C盘根目录下,然后在如下文件夹下能够找到 osgconv.exe和osgviewer.exe 这两个工具
C:\OpenSceneGraph-3.6.5-VC2022-64-Release-2023-01\bin
打开DOS窗口的时候,可以在如上目录的资源管理器上部的输入栏直接输入 cmd 命令后按回车键,就能直接打开DOS窗口,并且位于此目录下,这样就可以直接输入osgconv.exe 命令,而不用使用dos的cd命令去更换目录了。
如下是一个带材质的FBX文件和生成的OSGB文件的显示效果示例:
FBX文件的显示:
生成的OSGB文件的显示:
一些辅助知识:
来源于网络的一些辅助知识:(osgconv.exe 的详细语法可以百度或者去官网GitHub查看)
osgconv.exe是一个用于读取3D数据库并对它们实施简单操作的实用应用程序,支持多种3D格式文件的转换。 它可以将OSGB、OBJ、FBX等格式的文件转换为OSG支持的格式,如.osg和.ive。
基本用法
使用osgconv.exe进行格式转换的基本命令格式如下:
text
Copy Code
osgconv [options] infile1 [infile2 ...] outfile
例如,将多个OSGB文件合并为一个OBJ文件,可以使用以下命令:
text
Copy Code
osgconv -O OutputTextureFiles OSGB文件1 OSGB文件2 OSGB文件3 输出的OBJ文件
例如,将cow.obj转换为cow.ive并压缩自动生成映射纹理,可以使用以下命令:
text
Copy Code
osgconv --compressed cow.obj cow.ive
查看osgconv支持的操作,可以使用以下命令:
text
Copy Code
osgconv --help