如何在三维场景中用鼠标获取点击位置的x,y,z值

0 投票

object.net如何在三维场景中用鼠标获取点击位置的x,y,z值,如同桌面中场景菜单下的查询坐标值功能;

11月 29, 2016 分类:  1564次浏览 | 用户: zjl 才疏学浅 (14 分)

1个回答

0 投票
 
已采纳
使用Scene.PixelToGlobe方法,可以将屏幕坐标转换为将屏幕点对象转换成三维点对象,屏幕坐标即是鼠标在屏幕上的位置,可以在mouse事件中获取。
11月 29, 2016 用户: 周仕斌 名扬四海 (1,424 分)
采纳于 12月 30, 2016 用户:zjl
这个获取x,y我知道是可以通过这个方式获取 但是屏幕坐标没有高度值的呀
获取高程请使用Scene.GetAltitude,使用这个的前提是场景中的这块位置加载的有高程数据
在桌面里面我上面截图的功能看,加载了倾斜摄影模型一样可以获取到倾斜摄影模型鼠标点的高度,所以我想知道截图上“查询坐标值”功能是怎么实现的。

倾斜摄影模型获取高度是这样的:void sceneControl_MouseMove(object sender, MouseEventArgs e)
        {
            Point3D point3D = sceneControl.Scene.PixelToGlobe(new Point(e.X, e.Y));
            Double Height = sceneControl.Scene.GetHeight(point3D.X, point3D.Y);
        }

那如果是dem的地形数据也可以通过这个方法

void sceneControl_MouseMove(object sender, MouseEventArgs e)
        {
            Point3D point3D = sceneControl.Scene.PixelToGlobe(new Point(e.X, e.Y));
            Double Height = sceneControl.Scene.GetHeight(point3D.X, point3D.Y);
        }

获取高度么?

获取DEM的数据高程建议使用Scene.GetAltitude,Scene.GetHeight是针对模型数据的

加载了OSGB缓存数据,Scene.GetHeight获取的高度跟桌面坐标查询出的Z值差别很大,怎么回事?不支持OSGB缓存?
...