Java 要挑选什么?通过光线投射,我们可以找到平面的精确交点,并确定该距离是否有效。这种技术简单吗?我想你必须给盒子上的每个像素上色才能达到这个目的。不管怎样,如果可以在硬件上完成,这显然是一个优点。另外,取决于你在哪里做截锥剔除,等等。你也可以在之后做光线投射,

Java 要挑选什么?通过光线投射,我们可以找到平面的精确交点,并确定该距离是否有效。这种技术简单吗?我想你必须给盒子上的每个像素上色才能达到这个目的。不管怎样,如果可以在硬件上完成,这显然是一个优点。另外,取决于你在哪里做截锥剔除,等等。你也可以在之后做光线投射,,java,opengl,vector,lwjgl,collision,Java,Opengl,Vector,Lwjgl,Collision,要挑选什么?通过光线投射,我们可以找到平面的精确交点,并确定该距离是否有效。这种技术简单吗?我想你必须给盒子上的每个像素上色才能达到这个目的。不管怎样,如果可以在硬件上完成,这显然是一个优点。另外,取决于你在哪里做截锥剔除,等等。你也可以在之后做光线投射,但不管怎样,这是一种有趣的技术来实现这一点。@Marc Baumbach我从未尝试过用这种技术来确定距离,但我认为这是可能的。其思想是,在拾取一个项目后,我们可以使用另一种类型的着色器将该网格(或仅该多边形,如果可能)渲染到屏幕外缓冲区。该着色


要挑选什么?通过光线投射,我们可以找到平面的精确交点,并确定该距离是否有效。这种技术简单吗?我想你必须给盒子上的每个像素上色才能达到这个目的。不管怎样,如果可以在硬件上完成,这显然是一个优点。另外,取决于你在哪里做截锥剔除,等等。你也可以在之后做光线投射,但不管怎样,这是一种有趣的技术来实现这一点。@Marc Baumbach我从未尝试过用这种技术来确定距离,但我认为这是可能的。其思想是,在拾取一个项目后,我们可以使用另一种类型的着色器将该网格(或仅该多边形,如果可能)渲染到屏幕外缓冲区。该着色器应添加雾(距离的线性)或简单地将
gl_FragCoord.w
(通常是插值的
-1/z
,其中
z
是顶点着色器的
gl_位置
z
)传输到缓冲区。缓冲区的深度分量应该是最适合的。因此,我们可以读取深度分量并还原
z
。通过了解
z
和摄像机的位置(旋转),应该可以恢复距离和准确的交点。也许将更多信息传递给片段着色器(通过制服)并在GPU上执行更多计算会更好。不管怎么说,这只是一个算法的草图,需要详细说明。是的,这就是我想的。再说一次,+1在这个想法上,我当然认为这是一个很好的方法,可以把所有东西都保存在硬件中。+1@Sergey这是一个我没有想到的有趣的技术。我假设你仍然需要计算玩家到拾取对象的距离。我唯一不确定的是,如果对象仅部分位于要拾取的距离内,该怎么办?通过光线投射,我们可以找到平面的精确交点,并确定该距离是否有效。这种技术简单吗?我想你必须给盒子上的每个像素上色才能达到这个目的。不管怎样,如果可以在硬件上完成,这显然是一个优点。另外,取决于你在哪里做截锥剔除,等等。你也可以在之后做光线投射,但不管怎样,这是一种有趣的技术来实现这一点。@Marc Baumbach我从未尝试过用这种技术来确定距离,但我认为这是可能的。其思想是,在拾取一个项目后,我们可以使用另一种类型的着色器将该网格(或仅该多边形,如果可能)渲染到屏幕外缓冲区。该着色器应添加雾(距离的线性)或简单地将
gl_FragCoord.w
(通常是插值的
-1/z
,其中
z
是顶点着色器的
gl_位置
z
)传输到缓冲区。缓冲区的深度分量应该是最适合的。因此,我们可以读取深度分量并还原
z
。通过了解
z
和摄像机的位置(旋转),应该可以恢复距离和准确的交点。也许将更多信息传递给片段着色器(通过制服)并在GPU上执行更多计算会更好。不管怎么说,这只是一个算法的草图,需要详细说明。是的,这就是我想的。再说一次,+1的想法,我当然认为这将是一个很好的办法,保持一切在硬件。