首先这个问题我11月份就提过了,没有解决。iserver WebGL3D浏览s3m缓存 管线缓存需要特殊角度才显示
另外,在社区也有很多人提过!isever显示三维管道的问题。
环境&背景:
1.java 10i组件最新版和idesktop 10i最新版切的三维场景缓存,在桌面中能够正常显示,但管线在webgl中均不能正常显示,特殊角度才能够显示。
2.9D产品切的三维场景缓存却能够在webgl正常显示。
3.三维自定义专题图&符号库符号模型
不知道你们用心去解决用户反馈的问题没有,产品虽然更新了,但捡了芝麻丢了西瓜。
以下为10i版本切的三维管网缓存在web页面的截图: 在场景中漫游缩放平移我也录制视频了。
这个问题麻烦你们那边尽快解决以下,提供解决方法。QQ:491540429
以下为java组件生成场景缓存的部分代码
SceneCacheBuilder builder = null;
try {
//1.三维数据集图层设置
Layer3Ds layer3Ds = scene.getLayers();
System.out.println("场景中图层数量:"+layer3Ds.getCount());
ArrayList<String> layerNames = new ArrayList<String>();
for(int i=0;i<layer3Ds.getCount();i++) {
Layer3D layer3D = layer3Ds.get(i);
if(layer3D.getType()==Layer3DType.DATASET)
{
Layer3DDataset layer3DDataset = (Layer3DDataset)layer3D;
layer3DDataset.setFileType(CacheFileType.S3M);//缓存文件类型
layer3DDataset.setTileWidth(2000);//瓦片宽度
layer3DDataset.setIsBuildOSGBCache(true);//三维切片缓存,不然会生成矢量缓存
layer3DDataset.setBuildOSGBPipeCache(true);//生成管线缓存
layer3DDataset.setFilterPixelSize(2);//像素过滤值,提升显示性能
layer3DDataset.setLODCount(0);//部分管点符号模型存在压缩变形,这个参数是超图给出的解决方式
layerNames.add(layer3D.getName());
}
}
System.out.println("场景中三维自定义专题图层数量:"+layerNames.size());
if(layerNames.size()==0)
{
return false;
}
//2.场景缓存生成参数
builder = new SceneCacheBuilder(scene, output.toString());
builder.setCompressedTextureType(CompressedTextureType.DDS);//压缩方式,PC
builder.setProcessThreadsCount(4);//处理线程
builder.setStorageType(StorageType.Original);//存储方式,原始
builder.setIsCalNormal(false);
builder.setIsInstance(true);
// Point2D[] pts = new Point2D[]{rectangle2D.leftBottom,rectangle2D.rightTop};
// Point2Ds te2DS = new Point2Ds(pts);
// CoordSysTranslator.forward(te2DS, PrjCoordSys.fromEPSG(EPSGCode));
// Rectangle2D rectangle2DProj = new Rectangle2D(te2DS.getItem(0), te2DS.getItem(1));
// builder.setBounds(rectangle2DProj);//设置范围
// builder.setBoundsCeiled(true);
//2.1 设置需要生成缓存的普通图层和地形图层
String[] layerNameArr = layerNames.toArray(new String[] {});
builder.setOutputLayerNames(layerNameArr);//三维自定义图层
builder.setOutputTerrainLayerNames(null);//地形图层不生成
//2.2 场景和工作空间输出参数
builder.setOutputSceneName(sceneName);//设置新生成的场景名称
Path path = Paths.get(output.toString(),workspaceName+ ".smwu");//*工作空间路径
connectionInfo.setServer(path.toString());//工作空间路径
builder.setOutputWorkspaceConnectionInfo(connectionInfo);
//2.3 开始生成缓存
flag = builder.build();
} catch (Exception e) {
System.out.println(e.getMessage());
return false;
}
finally {
builder.dispose();
builder = null;
}