我有一个非常简单的地形图,例如 256x256 瓦片,它被分成瓦片(相同的正方形......)。每个瓷砖都有高度,坡度......如下图所示。我的默认外观将是 iso 视图。(每块瓷砖都可以分割成更小的瓷砖来平滑,我称之为镶嵌)
D3DXMatrixOrthoLH(&matProj, videoWidth , videoHeight , -100000, 100000);
float xPitch=0;
float yPitch=PI/3.0; //rotate yPitch 60 degree
float zPitch=PI/4.0; //rotate zPitch 45 degree
现在我需要用鼠标在屏幕上选择一个单元图块(移动到哪里或建造一些东西......)!我有鼠标位置 Mx,我需要知道它是什么图块!如果地图是平的,那就很容易了!但随着身高,这很难。我打算使地图非常静态(不经常旋转)......只有翻译。所以我可以在屏幕上存储所有顶点坐标(x,y)。通过使用 D3DXVec3Project。然后搜索包含鼠标位置的三角形->我们需要的图块!然而,使用这种方法,我们可能需要搜索 5-10 或 20 个三角形。你知道更好的方式,更优化或更优雅吗?谢谢!
我读到了诸如 RayCasting 之类的东西来进行检测,也许它可以在我的情况下使用。因为在我的视图设置中没有眼睛位置,所以视图向量是恒定的! 3D 屏幕空间光线投射/拾取 DirectX9
D3DXVec3Unproject 看起来也很有前途!
图片:http: //i1335.photobucket.com/albums/w666/greenpig83/sc4_zpsaaa61249.png