我有一个带有TGLHeightField的GLScene,它的点从OnGetHeight加载。
我正在尝试解决的问题是鼠标在鼠标移动事件中当前在HeightField上的3d点。
HeightField上的高度(y)实际上不仅仅是飞机上的点(x,z)
我试过GLSceneViewer1.Buffer.OrthoScreenToWorld(x, y)
,但这只是相机平面上的一个点。
答案 0 :(得分:4)
查看hfpick演示(在Demos \ Interface中)。它演示了如何使用PixelRayToWorld执行此操作。
基本上,你所做的是:
var
v: TAffineVector;
...
v := GLSceneViewer.Buffer.PixelRayToWorld(x, y)
v := HeightField.AbsoluteToLocal(v);