2

我有一个带有 TGLHeightField 的 GLScene,它的点从其 OnGetHeight 加载。

我要解决的是鼠标当前在 mousemove 事件中鼠标在 HeightField 上的 3d 点。

高度场上的高度(y)实际上并不需要平面上的点(x,z)

我试过GLSceneViewer1.Buffer.OrthoScreenToWorld(x, y) 了,但这只是相机平面上的一个点。

4

1 回答 1

4

查看 hfpick 演示(在 Demos\Interface 中)。它演示了如何使用 PixelRayToWorld 来做到这一点。

基本上,你要做的是:

var
   v: TAffineVector;

...
      v := GLSceneViewer.Buffer.PixelRayToWorld(x, y)
      v := HeightField.AbsoluteToLocal(v);
于 2011-04-09T18:40:34.837 回答