3D Tiles处理引擎

3D Tiles Processing Engine 是一个引擎,它允许你将 格的多级数据集平铺到针对流式优化的 3D Tiles 瓦片集中。

这包括:

  • 支持 OBJ 或 GLB 输入文件的命令行示例,并允许你通过.prj或.ref文件对输入数据进行地理配准。
  • 比命令行引擎更灵活的 API。它允许你插入自定义 格格式和参考工厂。
  • 本用户指南提供了帮助你开始使用命令行和 API 的基本指南。

    1、运行要求

  • 系统要求
  • 有关Java 堆设置和磁盘缓存的详细信息, 请参阅
    TLcd3DTilesProcessorBuilder类的 文档 。

  • 输入数据的方向
  • 3D Tiles Processing Engine 期望 y轴 向上的 格作为输入数据。

  • 输入数据的地理参考
  • 默认情况下,3D 切片处理引擎会查找包含地理参考信息的文件。该文件可以是包含 EPSG 代码的.epsg文件、包含 WKT 文本的.prj文件或由 Lucy 保存的 .ref文件。

    你还可以通过 API 设置地理参考。

    如果没有可用的地理参考,则 3D 切片处理引擎会在没有参考的情况下处理数据集。

    有关
    TLcd3DTilesProcessorBuilder更多信息,请参阅文档。

    2、从命令行运行 3D Tiles 处理引擎

    要从命令行使用 3D Tiles 处理引擎,请调用版本示例文件夹中的 meshup 脚本: meshup.bat(Windows) 或meshup.sh(Linux/Mac)。

    处理引擎帮助文档将打印输出在控制台中。

    默认情况下,命令行示例在 32 位系统上以 2GB 的最大堆大小运行,在 64 位系统上以 4GB 的最大堆大小运行。可以在相应的配置文件中覆盖最大堆大小:

  • config/samples/meshup/Meshup.vmoptions
  • config/samples/meshup/Meshup64.vmoptions
  • 2.1 命令行参数

    所需的参数是输入文件和输出文件夹:

    表 1. 必需的参数

    名称

    描述

    样本值

    -i或者–input

    包含 OBJ 或 GLB 文件的输入文件或文件夹

    C:/city3D/OBJS/,C:/city3D/mesh.obj

    -o或者–output

    处理后的 3DTiles 的输出文件夹

    C:/city3D/3DTiles/

    可选参数是:

    表 2. 可选参数

    名称

    描述

    默认值

    样本值

    -R或者–recursive

    如果-i指向一个文件夹,则递归扫描它以查找输入文件

    false

    true

    -q或者–textureQuality

    纹理质量(从 0 到 1,使用 1 进行 PNG 编码)

    0.7

    0.7、0.9、1.0

    -r或者–reference

    包含模型参考的文件 ( .epsg,.prj.ref)

    没有任何

    C:/reference.prj

    -f或者–forcePNG

    如果此参数设置为 true,则纹理始终编码为 PNG。如果您需要透明度支持,请启用此选项。

    false

    true

    -v或者–maxVertices

    单个图块中的最大顶点数。默认值为 2000。增加这个数字可以得到一个不那么深的树,但是更大的瓦片。

    2000

    1200、3500、5000

    -t或者–maxTextureSize

    每个图块使用的最大纹理大小。默认为 256,表示纹理为 256×256。增加此值可减少平铺深度。

    256

    128、512、1024

    -d或者–dropSmallParts

    在简化图块之前删除小的复杂部件。这会增加计算成本,但可以通过简化来提高高度不平衡 格的质量。

    false

    true

    -b或者–preserveBorders

    保留边界。默认禁用。此参数将以计算成本改善边界简化。当您在生成的 3DTiles 中看到孔或 格在其边界附近严重扭曲时使用此选项,例如:建筑物的底部。

    false

    true

    -s或者–strategy

    要使用的简化策略。

    QUADRIC_EDGE_COLLAPSE

    QUADRIC_EDGE_COLLAPSE、聚类、DROP_SMALL_PARTS

    -c或者–forceColor

    将输出 格中的纹理转换为单一的平均颜色。此选项可用于丢弃输出 格中的纹理。相反,单个纹理将转换为平均颜色。

    false

    true

    -m或者–meshCompression

    要使用的 格压缩算法。

    NONE

    DRACO

    2.2 命令行示例

    用例:数据集由根据.prj文件引用的 OBJ 文件夹组成。

    meshup.bat -i c:/Meshes/ -o c:/Meshes/Tileset/ -r c:/Meshes/reference.prj

    用例:数据集由单个 OBJ 组成,文件未被引用

    meshup.bat -i c:/Meshes/mesh.obj -o c:/Meshes/Tileset/

    用例: 格具有纹理面和彩色面。需要 PNG 纹理编码以避免视觉伪影

    meshup.bat -i c:/Meshes/mesh.obj -o c:/Meshes/Tileset/ -q 1.0

    2.3 为数据添加偏移量

    该过程将选择与输入 格同名的任何.xyz文件。如果.xyz文件的第一行是一个 3D 点,它将在相应的 格和定义 格的同一参考中应用它作为全局偏移。有关更多信息,请参阅为 格数据设置全局偏移。

    3、使用 API

    3.1 用 格数据创建 OGC 3D Tiles

    可以通过
    TLcd3DTilesProcessorBuilder 访问 API 。

    参数设置为适合大多数情况的默认值。你只需要指定源文件夹和文件,或者源ILcdModel和输出文件夹。

      return TLcd3DTilesProcessorBuilder.newBuilder()
                                        .addInputFiles("path/to/input/folder/mesh.obj")
                                        .outputPath("path/to/output/folder/")
                                        .process()
                                        .get();
      return TLcd3DTilesProcessorBuilder.newBuilder()
                                        .addInputFiles("path/to/input/folder/mesh1.obj")
                                        .addInputFiles("path/to/input/folder/mesh2.obj")
                                        .outputPath("path/to/output/folder/")
                                        .process()
                                        .get();

    3.2 添加地理参考

    在构建器上,可以指定一个特定ILcdModelReference或工厂,它在给定 格文件名的情况下返回特定的引用:

    return TLcd3DTilesProcessorBuilder.newBuilder()
                                        .addInputFiles("path/to/input/folder/mesh1.obj")
                                        .outputPath("path/to/output/folder/")
                                        .defaultModelReference(new TLcdGeodeticReference())
                                        .process()
                                        .get();
      return TLcd3DTilesProcessorBuilder.newBuilder()
                                        .addInputFiles("path/to/input/folder/mesh1.obj")
                                        .outputPath("path/to/output/folder/")
                                        .modelReferenceDecoder(new ILcdModelReferenceDecoder() {
                                          @Override
                                          public ILcdModelReference decodeModelReference(String aModelReference) throws IOException {
                                            return new TLcdGeodeticReference();
                                          }
                                        })
                                        .process()
                                        .get();

    如果未指定地理参考,则 3D Tiles处理引擎会查找包含该参考的文件。该文件必须具有扩展名.epgs 、 .prj 或.ref,并且与 格具有相同的文件名或名称为directory。

    有关
    TLcd3DTilesProcessorBuilder更多信息,请参阅文档。

    3.3 为 格数据设置全局偏移

    可以为整个数据集或每个 格文件传递全局偏移。全局偏移应用于文件本身的引用。

    在构建器上,指定单个全局偏移或将文件路径作为参数的工厂:

      TLcd3DTilesProcessorBuilder.newBuilder()
                                 .addInputFiles("path/to/input/folder/mesh1.obj")
                                 .outputPath("path/to/output/folder/")
                                 .globalShift(new TLcdXYZPoint(0, 100, 25))
                                 .process()
                                 .get();

    如果未调用这些方法,或者生成的全局偏移为空,则 3D Tiles处理引擎会尝试从与 格文件同名的.xyz文件的第一行检索全局偏移。例如,文件mesh.obj的全局移位将在mesh.xyz文件中。

    该.xyz文件应该有一个格式为 <x value> <y value> <z value>的单行,例如:

    0 0 -10

    3.4 强制 PNG 编码

    与纹理面相反,彩色面具有单一颜色而不是纹理。3D Tiles处理引擎生成瓦片,其中所有颜色和纹理都合并到一个纹理图集中。

    如果 格同时包含彩色面和纹理面,则可以将forcePNGEncoding参数设置为true以防止颜色编码伪影。此设置还会增加图块的权重,因此仅当你看到明显的伪影时才使用此设置。

    对于只有颜色而没有纹理的 格,会自动使用 PNG 编码。

    3.5 设置纹理质量

    JPEG 编码的纹理质量值默认为 0.7f。可以通过textureQuality选项自行将其设置为 0.0f 和 1.0f 之间的值。

    将此选项设置为较低的值会减小单个输出图块的大小,并导致典型的 JPEG 编码伪影。例如,请参见图 2“纹理质量设置”中的比较。对于大多数情况,我们建议你保留默认纹理质量值。

    3.6 选择 Texture-To-Color 选项

    如果将该textureToColor选项设置为 true,则 3D Tiles处理引擎会将每个纹理转换为其平均颜色。当纹理质量低时,这可能很有用,因为它往往会为模型提供类似 CAD 的外观。生成的图块集也会更轻,处理速度也会显着加快。

    此选项适用于包含许多小纹理的模型。如果模型具有单一的大纹理图集,则结果是具有单一颜色的模型。

    4、文件格式和材料属性

    3D Tiles Processing Engine 当前支持两种输入格式:Wavefront OBJ 和 GLB(glTF 的二进制变体)。输出格式始终为 OGC 3D Tiles,它实际上在内部使用 GLB 来表示 tile 有效负载。这对材料属性的处理方式有一些影响。

    OBJ 格式将材质属性存储在外部.mtl文件中,并使用传统的环境、漫反射和镜面反射/光泽参数对材质进行建模。

    另一方面,glTF 允许材质具有更丰富的 PBR(基于物理的渲染)属性。glTF/GLB 文件中的材质不仅可以包含基础颜色贴图,还可以包含“金属”和“粗糙度”属性(允许更好地控制表面的感知“光泽度”)、法线贴图和环境遮挡贴图。

    如果使用 3D Tiles Processing Engine 处理 OBJ 文件,则 3D Tiles 输出只考虑漫反射颜色。但是,如果使用 GLB 文件作为输入,则源数据的 PBR 属性将完全转移到输出中。这允许客户端对平铺的输出数据执行更真实的渲染。


    原文链接:
    http://www.bimant.com/blog/3d-tiles-processing-engine/

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2022年7月1日
    下一篇 2022年7月1日

    相关推荐