开源跨平台三维模型轻量化软件osgGISPlugins-1、简介

下一篇文章:开源跨平台三维模型轻量化软件osgGISPlugins-2、如何编译

1、仓库地址

github地址:https://github.com/newpeople123/osgGISPlugins
gitee地址:https://gitee.com/wtyhz/osg-gis-plugins

2、项目简介

osg引擎的gis插件,能够读取、显示3dmax导出的具有PBR材质的fbx文件、导出gltf/glb/b3dm/i3dm文件、读取/导出ktx2格式图片、读取/导出webp格式图片。同时提供了如下子工具:

  • b3dm转gltf/glb
  • 3D模型转3dtiles
  • 3D模型简化
  • 多张纹理打包成一个纹理图集

3、主要特点

1)使得osg引擎可以读取带有pbr材质的fbx文件;
2)可以从osg引擎中导出具有KHR_materials_unlit、KHR_materials_pbrSpecularGlossiness、KHR_draco_mesh_compression、KHR_mesh_quantization、EXT_meshopt_compression、KHR_texture_basisu、KHR_texture_transform、EXT_texture_webp等扩展的gltf/glb/b3dm/i3dm;
3)能够将手工建模模型转换为3dtiles的免费、开源软件

4、插件简介

(1)osgdb_fbx

在osg的fbx的插件的基础上,参考了FBX2glTF项目,使得能够读取3dmax导出的带有PBR材质的FBX文件(原本的插件读取带有PBR材质的FBX文件时,材质会丢失,读到引擎里显示为白模),并能在osg引擎中正常渲染。

(2)osgdb_gltf

支持导出gltf/glb/b3dm/i3dm,暂不支持读取。

在osgEarth的gltf的插件基础上,增加了若干gltf扩展:

1、KHR_materials_unlit

2、KHR_materials_pbrSpecularGlossiness

3、KHR_draco_mesh_compression

4、KHR_mesh_quantization

5、EXT_meshopt_compression

6、KHR_texture_basisu

7、KHR_texture_transform

8、EXT_texture_webp

通过合并材质、合并几何图元等方式优化gltf性能,减少drawcall的调用次数。

(3)osgdb_webp

和osgEarth的webp插件一样。

(4)osgdb_ktx

在王锐大神的osgVerse的ktx插件基础上进行了小改动,支持导出ktx2格式的纹理图片,支持Mipmaps。

5、工具简介

(1)b3dm2gltf

将b3dm文件转换为gltf/glb文件。

用法说明

命令行格式

b3dm2gltf.exe -i <path> -o <path>

示例命令

b3dm2gltf.exe -i D:\test.b3dm -o D:\output.glb

(2)model23dtiles

1、将3D模型转换为3dtiles 1.0;
2、支持四叉树和八叉树结构的3dtiles;
3、支持webp/ktx2纹理压缩;
4、支持draco和meshoptimizer压缩及顶点量化;
5、支持纹理合并(减少drawcall次数);
6、导出的3dtiles会带有模型的用户属性;
7、导出的3dtiles是经过网格合并的;
8、支持纹理图集;

这里的3D模型指的是fbx、obj、3ds等osg能够读取的三维模型,但是不包括倾斜摄影模型,倾斜摄影模型目前建议使用fanvanzh/3dtiles

支持格式:3dc、3ds、dae、dxf、fbx、ive、obj、osg、osgb、flt、stl等。

用法说明

命令行格式
model23dtiles -i <path> -o <DIR> -tf <jpg/png/webp/ktx2> -vf <draco/meshopt/quantize/quantize_meshopt> -t <quad/oc/kd> -sr <Number> -cl <low/medium/high> -tx <Number> -ty <Number> -tz <Number> -up <X/Y/Z> -tw <Number> -th <Number> -aw <Number> -ah <Number> -tri <Number> -dc <Number> -sx <Number> -sy <Number> -sz <Number> -lng <Number> -alt <Number> -nm <v/f> -nrm -unlit -ntf

model23dtiles -i <path> -o <DIR> -tf <jpg/png/webp/ktx2> -vf <draco/meshopt/quantize/quantize_meshopt> -t <quad/oc/kd> -sr <Number> -cl <low/medium/high> -tx <Number> -ty <Number> -tz <Number> -up <X/Y/Z> -tw <Number> -th <Number> -aw <Number> -ah <Number> -tri <Number> -dc <Number> -sx <Number> -sy <Number> -sz <Number> -epsg <Number> -nm <v/f> -nrm -unlit -ntf
示例命令
model23dtiles.exe -i D:\test.fbx -o D:\output -lat 30 -lng 116 -alt 100
# 输出使用ktx2进行纹理压缩和使用draco进行顶点压缩的3dtiles
model23dtiles.exe -i D:\test.fbx -tf ktx2 -vf draco -o D:\output -lat 30 -lng 116 -alt 100.5
# 设置3dtiles的中间节点的简化比例为0.6
model23dtiles.exe -i D:\test.fbx -sr 0.6 -o D:\output -lat 30 -lng 116 -alt 100
# 设置3dtiles的树结构为四叉树,顶点坐标为4549投影坐标系
model23dtiles.exe -i D:\test.fbx -t quad -o D:\output -epsg 4549
# 设置3dtiles的树结构为四叉树,顶点坐标为4549投影坐标系,并将原始模型单位从厘米转换为米
model23dtiles.exe -i D:\test.fbx -t quad -o D:\output -epsg 4549 -sx 0.01 -sy 0.01 -sz 0.01
参数说明
  • 输入输出

    • -i 输入文件
    • -o 输出文件夹
  • 坐标参数

    • -lat 纬度,默认30.0
    • -lng 经度,默认116.0
    • -alt 高度,默认300
    • -epsg 若模型顶点坐标为投影坐标系,指定epsg编码,与lat、lng和alt参数互斥,可以配合tx、ty、tz参数使用
  • 变换参数

    • -tx 重设模型原点位置的x坐标,默认0.0
    • -ty 重设模型原点位置的y坐标,默认0.0
    • -tz 重设模型原点位置的z坐标,默认0.0
    • -sx x方向缩放(单位转换),默认1.0
    • -sy y方向缩放(单位转换),默认1.0
    • -sz z方向缩放(单位转换),默认1.0
    • -up 模型向上方向轴,选项:X、Y、Z(大写),默认Y(FBX模型自动转换为Y轴向上)
  • 组织结构参数

    • -t 3dtiles组织结构,可选:kd(KD树)、quad(四叉树)、oc(八叉树),默认quad
  • 压缩与简化参数

    • -r 3dtiles中间节点简化比例,默认0.5
    • -tf 纹理压缩格式,可选:png、jpg、webp、ktx2,默认ktx2
    • -vf 顶点压缩格式,可选:draco、meshopt、quantize、quantize_meshopt,无默认值
    • -cl draco压缩级别/顶点量化级别,选项:low、medium、high,默认medium,仅对quantize、quantize_meshopt和draco有效;压缩级别越高,模型精度损失越大
  • 性能限制参数

    • -tri 3dtiles瓦片最大三角面数,默认20w
    • -dc 3dtiles瓦片最大drawcall数量,默认20
    • 纹理尺寸参数
      • -tw 单个纹理最大宽度,默认256,需为2的幂
      • -th 单个纹理最大高度,默认256,需为2的幂
      • -aw 纹理图集最大宽度,默认2048,需为2的幂,且大于单个纹理最大宽度,否则不构建图集
      • -ah 纹理图集最大高度,默认2048,需为2的幂,且大于单个纹理最大高度,否则不构建图集
    • 变换参数
      • -nft 不对顶点应用变换矩阵;默认会对顶点应用变换矩阵以提升渲染性能(减少drawcall),但可能带来顶点位置精度损失(如果不启用该参数时,模型发生了变形,请启用该参数)
  • 其他参数

    • -nrm 重新计算法线
    • -nm 配合 -nrm参数使用,指定法线模式:v表示顶点法线,f表示面法线(默认),可选:v、f(顶点法线适用于平滑曲面,面法线适用于棱角分明的物体)
    • -unlit 启用 KHR_materials_unlit 扩展,适用于烘焙模型
    • -gn 生成法线贴图(使用Sobel算子)和切线,瓦片会有更好的渲染效果(提升有限)但瓦片的体积也会变大并且处理时间也更长

(3)simplifier

对3D模型进行网格简化操作,同时会删除简化后的空闲顶点。

用法说明

命令行格式

simplifier.exe -i <path> -o <path> -ratio <Number> -aggressive

示例命令

simplifier.exe -i C:\input\test.fbx -o C:\output\test_05.fbx -ratio 0.1

参数说明

-i 输入3D模型。

-o 简化后的3D模型。

-ratio 简化比例。

-aggressive 更激进的简化方式,不保留拓扑。

(4)texturepacker

将多张纹理图片打包成一个纹理图集,并输出一个json文件指示原始纹理图片在纹理图集中的位置。

用法说明

命令行格式

texturepacker.exe -i <path> -o <path> -width <Number> -height <Number>

示例命令

texturepacker.exe -i C:\input -o C:\output\atlas.png -width 2048 -height 2048

参数说明

-i 输入待打包纹理图片或其所在文件夹。

-o 输出纹理图集。

-width 纹理图集最大宽度。

-height 纹理图集最大高度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值