WebGL 在加载BIM的S3M缓存模型时,某个位置上的模型一直无法加载出来,请问这是什么原因呢?在iDesktop上显示是没问题的。
iDesktop:
webgl
您好,您第一张图中红框部分和左边的相同类型的模型是同一图层吗?图中箭头所指部分如果是同一个图层,您单独加载这个图层有问题吗? 如果不是一个图层,那么这个图层就没有被加载进来。您看一下在idesktop中加载这个缓存有没有问题,因为您图中我看不出来加载的是模型还是缓存
使用addSS3MTilesLayerByScp的方式加载
代码Scene.addS3MTilesLayerByScp(url, options);
url地址要使用config一级,比如
http://localhost:8091/iserver/services/3D-WhiteBuilding/rest/realspace/datas/WhiteBuilding@CBD_building/config
测试好了,没有丢失的问题
看了一下您给我发的数据,您切缓存的时候吧所有图层的缓存格式改为S3M,再重新发布一次
使用官网上的最新版本9.1.2,加S3M的时候会报错。错误如下图:
您看一下我们官网示例中的引用,至少需要引入
<link rel="stylesheet" href="../Build/Cesium/Widgets/widgets.css"> <script type="text/javascript" src="./js/require.min.js" data-main="js/main"></script>
main.js会根据里面的路径来引入Cesium.js和zlib.min.js
我用的是vue的框架,我直接在index.html引入zlib.min.js和Cesium.js是一样的吧。
会报下面的错误:
这个9.1.2的包还很多有问题啊,特别是在S3MTilesParser.js这个文件。
<!--StartFragment -->
<script type="text/javascript" src="./static/libs/Cesium/Cesium.js"></script> <script type="text/javascript"> // zlib依赖require.js全局define方法 var define = function () {}; </script> <script type="text/javascript" src="./static/libs/Cesium/Workers/zlib.min.js"></script> zlib要依赖
function onload(Cesium) { var viewer = new Cesium.Viewer('cesiumContainer'); var scene = viewer.scene; viewer.scene.undergroundMode = true; viewer.scene.globe.globeAlpha = 0.5; scene.open("http://localhost:8091/iserver/services/3D-test1/rest/realspace");
以上是我的代码
浏览器chrome 版本 74.0.3729.169(正式版本) (64 位)
显卡GTX1060
测试环境 官网示例
window.onload = function (event) { var HzsDyrmyyRegionPoints = [] var viewer = new Cesium.Viewer('app') var s3mServerUrl = 'http://172.100.100.200:8092/iserver/services/3D-test1/rest/realspace' //获取3维服务的异步请求对象promise let scene = viewer.scene; scene.globe.undergroundMode = true; scene.globe.globeAlpha = 0.5; scene.open(s3mServerUrl); //打开iserver场景服务下所有图层 var positions = []; for (let point of HzsDyrmyyRegionPoints) { positions.push(point.x); positions.push(point.y); positions.push(point.z); } scene.globe.addExcavationRegion({ name: "hzsdyrmyy", position: positions, height: 10000, transparent: false }); }
以上是我的代码。
我用了你的代码,好像没有达到你截图出来的效果啊
浏览器也是:chrome版本 74.0.3729.169(正式版本) (64 位)
显卡也是GTX1060 6G。但是那个模型还是不出来
您可以看下我们官网的API 地址:http://support.supermap.com.cn:8090/webgl/Build/Documentation/S3MTilesLayer.html?classFilter=s3m
这里面有个position属性可以设置高度
后面通过style3D完成设置了。
let style3D = new Cesium.Style3D(); //设置底部高程。 style3D.bottomAltitude = 3.1499; layer.style3D = style3D; //设置后需刷新图层 layer.refresh();
但是要通过增加高度来显示模型,感觉不是很合理额。有没有其他什么解决方法呢