我有一个带有TGLHeightField的GLScene,它从其OnGetHeight加载了点。
我要解决的是在mousemove事件中鼠标当前在HeightField上的3d点。
实际上不需要HeightField上的high(y)只是平面上的点(x,z)
香港专业教育学院尝试GLSceneViewer1.Buffer.OrthoScreenToWorld(x, y)
,但这仅是相机平面上的一个点。
最佳答案
查看hfpick演示(在Demos \ Interface中)。它演示了如何使用PixelRayToWorld进行此操作。
基本上,您要做的是:
var
v: TAffineVector;
...
v := GLSceneViewer.Buffer.PixelRayToWorld(x, y)
v := HeightField.AbsoluteToLocal(v);