首页 / 浏览问题 / 三维GIS / 问题详情
iServer9D,导入模型实现平移、旋转操作
24EXP 2017年11月06日
iServer9D,插件开发,导入SGM模型文件并添加到跟踪图层。想要对导入模型进行平移,旋转等操作。但使用api中提供的方法及属性设置均无任何效果。请问有没有相关代码提供参考,或应如何实现上述功能,谢谢!

3 个回答

你好,后台具体实现的时候用的是iServer服务提供者/服务组件提供的方法还是直接使用的java组件提供的相关方法?可以回复下相关代码
1,780EXP 2017年11月07日
插件开发,js实现:

//导入模型部分代码
 geomodel=new SuperMap.Web.Core.GeoModel();                   geomodel.fromModelFile("http://localhost:8090/RealspaceSample/"+modelName+".zip");  

 geomodel.set_position(point3d);      
 var style=new SuperMap.Web.Core.Style3D();
 style.set_altitudeMode(2);
 var feature=new SuperMap.Web.Core.Feature3D();
 feature.set_geometry(geomodel);
 feature.set_style3D(style);                   scene.get_trackingLayer3D().add(feature,modelName);

//实现方法部分代码

//geomodel.offset3D(30,30,20);
//var point3D = geomodel.get_position();
//var Vector3D = new SuperMap.Web.Core.Vector3D(point3D.x,point3D.y,point3D.z);
//geomodel.rotate3D(Vector3D,30);

是参考api方法写的,是否存在问题?
呃,抱歉,我以为是后端扩展iServer了。。。我让别的同事回复你。
好的,多谢
您好,旋转请用:

geomodel.set_rotationX(20);

geomodel.set_rotationY(20);

geomodel.set_rotationZ(20);

获取或设置三维几何对象沿 X (Y、Z)轴方向的旋转角度。采用的坐标系以球心为原点,北方向为 Y 轴的右手坐标系。该属性目前只对模型、图片有效。

3D那个偏移我试了一下,确实没效果,直接修改模型的position吧。
如上回答,模型采用的坐标系是:Z-X-Y(右手) 而不是球面坐标系X-Y-Z ? 最近实现一个功能,当球面场景中的线旋转时,模型跟着旋转;我现在笛卡尔坐标系下能获取到线的旋转矩阵,怎么赋值给模型?
首先用feature3D.get_geomodel()获取模型,然后用您写好的参数修改后,用feature3D.updatedata()更新数据。
5,560EXP 2017年11月07日
api中提供feature3D.get_geometry(),我这里geomodel是全局变量,我直接设置了参数geomodel.set_rotationX(20);然后按照您说的feature.updateData();没有效果。

然后我换了另一种方式先把模型从跟踪图层上移除scene.get_trackingLayer3D().removeAt(scene.get_trackingLayer3D().indexOf(modelName));设置完参数后在进行添加scene.get_trackingLayer3D().add(feature,modelName);也没有效果。

请问哪里存在问题吗?或者有示例可以提供参考吗,谢谢
另外我通过设置geomodel.set_position(point3D);feature.updateData();只改变了模型的高度值,可以修改成功,但是相机视角会直接贴到地面上了。
这个我这边先测试下,如果是缺陷,我这边报一个缺陷。如果不是缺陷,我就把对应的代码贴上来
该问题是缺陷,我这边报个缺陷,如果解决了,给你一个包
897EXP 2017年12月06日
好的,感谢
...