首页 / 浏览问题 / 桌面GIS / 问题详情
idesktopx 11i 导出的三维线场景瓦片在安卓sdk中加载本地场景并开始AR模式 不显示
dsl
3EXP 2026年03月02日

使用产品:supermap iDesktopx 11i ,supermap-imobile-2025-android-x64 操作系统:win10 x64

问题详细描述: 我的原数据是三维面数据,导出的场景瓦片在安卓端能正常加载并显示,我把同样的三维面数据通过类型转换转成三维线数据,再导出的场景瓦片在iDesktopx 正常显示,在安卓端就显示不出来了。是不是我转换的方式不对,想问一下这是什么原因导致的

1个回答

您好:
根据您描述的问题, 三维面数据导出的S3M场景瓦片在Android端可以正常显示,但同样的三维面数据转换为三维线数据后导出的S3M瓦片在Android端无法显示,因为您这边提供的信息不全,还请您协助排查下以下问题

1、 检查三维线数据转换后的几何完整性 :在 iDesktopx 中确认转换后的三维线数据集是否包含必要的Z值(高程)和属性信息。
2、 在Android端启用调试日志 :查看加载时的错误信息,重点关注是否有“unsupported feature”、“parse error”或几何解析失败等提示。

希望可以帮到您。

为了更精确地分析问题,请您补充以下信息:
- 生成S3M场景缓存时使用的参数配置(可通过截图或文字说明);
- Android端加载时的完整错误日志(若有);
- supermap-imobile-2025-android-x64 的具体版本号(例如 11.0.0);
- 是否尝试过将三维线数据转换为带有宽度的“面”再生成缓存,以及其结果。

30EXP 2026年03月02日

1.转换后的三维线有z值和属性信息,截图如下:

2.加载时显示加载成功,没有报错,但在AR场景中看不到。

3.生成场景瓦片时的参数配置如下:

4.- supermap-imobile-2025-android-x64 的具体版本号为:版本:12.0.0.0.250627.905 x64(SuperMap iObjects Java:12.0.0.0.123343)

5.我将三维线数据转成三维面后在安卓端也显示不出来。

以下是数据集文件,里边有三个数据集,一个是二维的原始面数据,一个是二维面转成三维面,一个是三维面转成三维线(生成的场景瓦片在安卓端不显示):
通过网盘分享的文件:NewDatasource.udbx
链接: https://pan.baidu.com/s/1u3pceesNoJNmIH0QFNAP0Q?pwd=cdn4 提取码: cdn4

您好:

收到您补充的详细排查信息。根据您提供的截图(Z值正常、无报错日志)以及使用的版本(iMobile 12.0.0 Android x64),我们对“三维线转S3M后在AR场景不可见”的问题进行了分析。

尽管数据加载显示成功且无报错,但在 AR 场景中不可见,主要原因定位在瓦片生成参数(实例化)线型风格渲染的配置上。请按照以下步骤调整:

从您提供的生成缓存截图来看,“实例化”(Instancing) 选项极有可能是导致问题的关键。

  • 问题分析: 实例化技术通常用于重复的模型(如路灯、树木)。对于由地块转换来的三维线不规则三维面,每个对象的几何形状都是唯一的。勾选“实例化”会导致移动端 GPU 无法正确解析这些非重复的几何体,从而导致渲染不可见(即使数据已加载)。

  • 解决方案: 请重新生成 S3M 瓦片,并确保**取消勾选“实例化”**选项。

    • 建议配置:

      • 实例化: 取消勾选(必须)。

      • 纹理压缩: 建议优先选择标准格式(如 ETC 或 CRN_DXT5)

      • 过滤阈值: 建议设为 0 或 1,避免细小图斑被过滤。

三维线在移动端高分屏上,如果默认线宽为 1px,在 AR 视频背景下极易因反走样或光照原因肉眼不可见。

  • 解决方案: 在 Android 代码中加载图层后,显式设置线宽和颜色。

可能存在高度遮挡坐标系匹配问题。

  • 高度模式: 截图显示数据 Z 值约为 1 米。如果 AR 场景识别的平面有轻微误差,数据可能被“埋”在地下。

    • 建议: 在代码中将图层高度模式设为 RELATIVE_TO_GROUND(相对地面),并设置 BottomAltitude 为 1~2 米,使其悬浮。

  • 场景类型: 您的数据是平面坐标(X: 12640129...),生成缓存时选择了“平面”。

检查: 请确保 Android 端初始化的 SceneControl 或平面场景 (SceneType.SCENE_TYPE_PLANAR))

希望可以帮到您。

现在能显示出来了,但是我加载场景时通过设置偏移参数,arControl.setSceneTransLation(),会出现很多线交叉在一个点的画面,截图如下:


【解决办法】这是由于移动端大坐标精度丢失:移动端的 GPU在处理浮点数时通常使用单精度。当坐标值高达“一千万(10^7)”级别时,浮点数的小数部分精度会被严重舍弃,您原始数据的平面坐标数值过大(千万级),超出了手机显卡的浮点数计算精度,导致线对象的所有顶点向局部原点坍缩,从而呈现出“线条交叉”的现象;因此您需要先对源数据集进行平移操作(将数据移动到 0,0 附近),功能键叫指定偏移按钮。

...