iTwin 加载实景

1. 数据加载

1.1 采用 DGN 连接实景网格

  1. 连接数据

    在 MicroStation 中选择 绘图 > 主页 > 基本 > 连接工具 > 实景网格,将实景数据连接至 MicroStation 中,具体操作可参考 帮助文档

    ms-attach-realitymesh

  2. 发布数据

    将保存的 DGN 文件上传至 iTwin 平台。

    如 iTwin 服务不是本地机器,请将实景数据与 DGN 文件存放在同一层级(即同一文件夹同一层级)中,再进行连接操作,最后连同实景数据一起上传。

  3. 数据浏览

    在 iTwin 平台通过 图层控制 开关进行预览。

    itwin-display-realitymodel

  4. 支持的数据格式

    采用此方法添加实景,支持的数据格式及类型如下:

    • ContextCapture 数据 (*.3sm, *.3mx)
    • 点云 (*.pod)
    • 栅格数据
    • DTM, STM
  5. 以 .3mx 及 .3sm 数据预处理为例

    采用 ContextCapture Viewer 看到原始数据是否含有地理坐标数据,可通过 测量工具 或查看元数据(Metadata)文件。

    CC坐标查看

    (1)原始数据包含地理坐标信息

    在 MicroStation 中打开背景地图(需登录 CONNECTION Client),根据 背景地图 显示的位置精确的调整实景的位置,并保存为 DGN 文件。

    (2)原始数据不包含地理坐标信息

    新建 DGN 文件,选择 与原始数据一致的地理坐标系统(投影坐标-Project(northing, easting...))。

    连接实景数据(本文 1.1),结合 背景地图 确定实景数据所在的位置,保存为 DGN 文件。

    选择地理坐标

将校正后的数据(原始数据与 DGN 文件)上传至 iTwin 平台发布即可。

1.2 采用 3DTiles 链接

iTwin 平台支持主流开源的实景数据格式 -- 3DTiles。当无法通过 MicroStation 连接的实景数据时,将原始数据转换为 3DTiles 格式,实景模型将以链接的方式加载至 iTwin 平台。

以 OSGB 数据为例:

  1. 数据转换

    将 OSGB 数据使用工具转换为 3DTiles 格式,如 ContextCapture、开源转换工具(3dtile.exe )等。

    以开源 3dtile.exe 工具为例:

    • GitHub 下载预编译好的可执行程序
    • 找到可执行程序 3dtile.exe,在该文件下打开 控制台终端(cmd), 输入对应的 OSGB 文件路径 和 输出文件路径
    • 例如: 3dtile.exe -f osgb -i D:\osgb_path -o D:\tmp
  2. 数据发布

    将转换成功后的 3DTiles 数据目录(例如:D:\tmp)采用网络服务器进行发布,如 Tomcat, Express, Nginx, IIS 等。

    以 iModelWeb 为例:

    可将转换成功的文件目录放置在 iModelWeb/backend/reality-tiles/ 文件夹内,对应的 URL 为 http://localhost:3000/dirName/TileRoot.json

  3. 数据加载

    • 在 iTwin 中找到 实景连接 按钮,填写相应的 名称,描述,连接 URL
    • 关闭 iTwin 中其余图层
    • 点击 Fit View 按钮,视图自动调整至实景数据所在的位置

    attach-realitymodel-plane

1.3 采用 DgnV8Converter 进行转换

1.3.1 转换 .3sm 数据

注意:此方法只适用于 ContextCapture 数据

  • 前提:需安装 MicroStationiModel Bridge Service - MicroStation

  • 设置环境变量

    在 Windows 的环境变量中,新建用户变量。变量名称为: DGNDB_REALITY_MODEL_TEMPDIR,变量值为本地文件路径,如 D:\tmp\realitymodel

    realityModel-env

    如不需要压缩数据,可增加环境变量 DGNDB_REALITY_MODEL_COMPRESS=0

  • 数据转换

    找到 DgnV8Converter.exe 的目录地址,默认地址为:

    • C:\Program Files\Bentley\DgnV8Converter 2.0\DgnV8Converter.exe
    • C:\Program Files\Bentley\iModelBridgeMstn\DgnV8Converter.exe

    启动控制台终端(cmd),输入 DgnV8Converter.exe 完整路径,--input="3sm 的文件路径" --output="输出目录",如下图所示:

    realityModel-cmd

  • 数据发布

    在输出目录中找到存放 3DTiles 数据(.b3dm),将此文件夹的数据进行发布,通过 URL 的方式即可加载至 iTwin 平台。

    例如发布的 URL :127.0.0.1/3dtile/tiger/TileRoot.json

    convert-result

1.3.2 转换连接实景的 DGN 文件

  1. 连接实景数据

    参考本文 1.1 章节

  2. 数据转换

    参考本文 1.3.1 章节中的数据转换步骤

  3. 数据发布

    参考本文 1.3.1 章节中的数据发布步骤,找到 3DTiles 文件目录并发布。


2. 常见问题处理

2.1 点云及栅格等数据发布

可采用 MicroStation 连接的方式将点云、栅格等数据保存至 DGN 文件。发布可参考 本文 1.5 内容进行数据预处。

支持连接的点云格式有:

*.pod, *.cl3,*.fls, *.fws, *.las, *.laz, *.ptg, *.pts, *.ptx, *.3dd, *.rxp, *.rsp, *.xyz, *.e57, *.zfs, *.txt

点云数据连接

校正点云的位置后,保存 DGN 上传至 iTwin 平台即可。

iTwin点云展示

2.2 OSGB 数据转换

OSGB(Open Scene Gragh Binary) 数据为三维实景数据格式中常用的一种,如需在 iTwin 中进行浏览,可参考以下处理方式:

  1. 直接方法
    • 转换为 3DTiles 利用第三方开源软件直接转换为 3DTiles,将数据发布后即可加载至 iTwin 平台。
  2. 间接方法
    • 转换为 MicroStation 支持的三维格式,如 *.3ds 或 *.fbx
    • 转换为 *.3mx 格式,可参考此处
    • 利用 ContextCapture 软件将原始工程文件转换为 *.3sm, *.3mx 格式

2.3 实景模型地理位置偏移

地理位置偏移的情况包括:漂浮在外太空、垂直于地面、与采集地点存在较大偏差等情况。处理的方案如下:

  1. 检查 iModel 是否具备地理位置特性

    当 iModel 在初始化或创建时,没有赋予地理坐标,则无法将实景数据正确的加载至 iTwin 平台。检查的方法包括以下两种:

    (1)API 接口

    iModel.isGeolocated

    (2) iTwin 页面检验

    点击 地图控件(MapLayerWidget)查看能否添加背景地图。如无法添加,则表示该 iModel 无地理位置特性;反之,则包含地理特性。

    maplayer-widget-display

  2. 检查实景模型原始地理位置是否正确

    (1)检查原始数据的元文件(Metadata),查看是否赋予正确的坐标

    (2)将发布的实景数据加载到第三方平台查看,如 Cesium Sandcastle

如上述解决方案均无法排除问题,可将原始数据、URL 或截图等内容发送至开发团队进行分析处理。

2.4 请求实景 URL 跨域

当前端网页提示包含跨域请求时,通常有两个解决方案:

  1. 请求转发

    可将本地的请求,采用转发代理请求的方式进行访问。例如增加 Nginx 转发请求。

  2. WebServer 支持跨域请求

    将发布 3DTiles 的 Web 服务器设置跨域请求。例如 Tomcat 中的设置:

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET,POST,HEAD,PUT,DELETE</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept,Origin,X-Requested-With,Content-Type,Last-Modified</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>Set-Cookie</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

2.5 请求实景文件格式跨域

  1. 情况说明

    页面与服务器可以进行数据数据通信,路径及请求地址都正确设置,但无法返回正确的实景数据格式,只有 json 文件数据返回至前端。

  2. 解决方案 在 Web 服务器端设置 MIME 类型,添加常用的 3DTiles 数据格式,如:.b3dm,.gltf, .terrain, .pnts, .glb, .i3dm, .cmpt 等。

<remove fileExtension=".b3dm"/>

<mimeMap fileExtension=".b3dm" mimeType="application/octet-stream"/>

<remove fileExtension=".pnts"/>

<mimeMap fileExtension=".pnts" mimeType="application/octet-stream"/>

<remove fileExtension=".i3dm"/>

<mimeMap fileExtension=".i3dm" mimeType="application/octet-stream"/>

<remove fileExtension=".cmpt"/>

<mimeMap fileExtension=".cmpt" mimeType="application/octet-stream"/>

<remove fileExtension=".gltf"/>

<mimeMap fileExtension=".gltf" mimeType="model/gltf+json"/>

<remove fileExtension=".bgltf"/>

<mimeMap fileExtension=".bgltf" mimeType="model/gltf-binary"/>

<remove fileExtension=".glb"/>

<mimeMap fileExtension=".glb" mimeType="model/gltf-binary"/>

<remove fileExtension=".json"/>

<mimeMap fileExtension=".json" mimeType="application/json"/>

<remove fileExtension=".geojson"/>

<mimeMap fileExtension=".geojson" mimeType="application/json"/>

<remove fileExtension=".topojson"/>

<mimeMap fileExtension=".topojson" mimeType="application/json"/>

results matching ""

    No results matching ""