slpk发布成场景服务后无法与地形贴合的解决方案

问题描述:

3ds类型的精模通过Pro的Import 3D Files转为Multipatch要素类,然后使用Create 3D Object Scene Layer Package工具生成slpk后发布成场景服务,在Portal中查看该场景服务时,发现场景没有贴合地面,显示效果如下:

slpk发布成场景服务后无法与地形贴合的解决方案
但用户反馈Pro中看该Multipatch是正常贴地的:

slpk发布成场景服务后无法与地形贴合的解决方案
那为什么发布成服务之后就不能贴地了呢?

原因:

Pro中Multipatch图层的属性->Elevation高程模式设置为On the ground了:

slpk发布成场景服务后无法与地形贴合的解决方案
所以看着是贴地的,如果将其改为At an absolute height

slpk发布成场景服务后无法与地形贴合的解决方案
发现确实是悬浮在空中的:

slpk发布成场景服务后无法与地形贴合的解决方案
而使用Create 3D Object Scene Layer Package转为slpk时,slpk并不会识别到该贴地后的高度,而使用的是Multipatch的绝对高度,所以Portal中查看图层是漂浮的。

如果想要场景服务贴地,需要先调整Multipatch高度,让其按绝对高度显示也是贴地的,那么将其发布成服务后才能贴地。你可能会说,那我直接移动Multipatch,将其贴地不就可以了吗,但是如果Multipatch的底面是平的,而地形本身有起伏的话,那么效果就不会太好,还有更好、更简单的办法吗?当然有!

解决方法:

Pro中将Multipatch图层的高程模式设置为On the ground,然后使用Layer 3D To FeatureClass工具将图层导出成新的Multipatch要素类,这时贴地的效果会被整合到Multipatch中。再将该Multipatch添加到Pro中,选择At an absolute height显示,发现Multipatch已经变成贴地的了:

slpk发布成场景服务后无法与地形贴合的解决方案
然后将该Multipatch转为slpk后发布成场景服务,在Portal中加载,也是正常的了:

slpk发布成场景服务后无法与地形贴合的解决方案