计算块/面相机/光标在3d块世界中具有焦点

hel*_*on3 8 java 3d

用Minecraft-clone游戏自学3d编程.我有一个无限的地图,装在16x16x64块的块中.

当玩家(相机)四处走动时,相机的中心(游戏光标)指向一个区块.我正在试图弄清楚如何确定用户指向的块.

我有一个带有三维坐标,偏航,俯仰的相机,所以我知道用户在哪里看.

我已经尝试找到从该原点绘制的"线"上的坐标,但是没有考虑到相机指向块的边缘/角落的时间,系统将不知道.

我试过在线寻找例子,但我找不到任何有用的东西,一些例子,但它们非常错误并且记录不完整.

如何正确转换相机中心正在查看它正在查看哪个块/面的位置?

Jac*_*rto 3

“我尝试找到从原点绘制的“线”上的坐标,但这并没有考虑到相机何时指向块的边缘/角落,系统不会知道。” ..“如何正确地将相机中心的观察位置转换为它正在观察的块/面?”

OpenGL 程序进行鼠标拾取的两种常见方式是颜色拾取光线投射。听起来您正在尝试迭代块网格以获取有点不寻常的位置,或者想要执行诸如光线投射之类的操作。

光线投射完成from the camera -> through the mouse -> onto a plane on the screen -> map screen space to world space -> collide with scene

“我尝试在网上寻找示例,但没有找到任何有用的东西,虽然有一些示例,但它们的错误非常多,而且文档记录很少。”

这里有一些光线投射教程的链接,其中一个包含数学和图表一个包含一些代码示例另一个包含一些

请注意,如果您发现任何较旧的 OpenGL 教程,他们可能会提到“选择模式”“名称堆栈”,这些内容确实很旧,请勿使用它 - OpenGL wiki