Unity3d 可以模拟屏幕光线投射吗?

Unity3d 可以模拟屏幕光线投射吗?,unity3d,Unity3d,我正在尝试使用网格创建地形。地形只是网格的组合(如64个网格)。有一个渲染纹理用作heightmap,我对heightmap纹理进行采样以确定顶点y 如何知道鼠标指针与网格相交的三维位置 进一步解释: heightmap纹理在GPU上进行维护和操作,它可能会在每一帧中发生更改,因此解决方案应在每一帧中运行 网格没有碰撞器 可以假设网格位于独占层中 可以假设网格是场景中唯一的对象(只有当它能够带来巨大的性能优势时才可以接受) 如果我们认为这是一个渲染问题,那么我们是否可以减少着色器的渲染队列号,

我正在尝试使用网格创建地形。地形只是网格的组合(如64个网格)。有一个渲染纹理用作heightmap,我对heightmap纹理进行采样以确定顶点y

如何知道鼠标指针与网格相交的三维位置

进一步解释:

  • heightmap纹理在GPU上进行维护和操作,它可能会在每一帧中发生更改,因此解决方案应在每一帧中运行
  • 网格没有碰撞器
  • 可以假设网格位于独占层中
  • 可以假设网格是场景中唯一的对象(只有当它能够带来巨大的性能优势时才可以接受)
  • 如果我们认为这是一个渲染问题,那么我们是否可以减少着色器的渲染队列号,并在绘制此特定渲染队列时,在其他绘制调用发生之前,在CPU上挂接一个方法从目标深度缓冲区采样,然后转换鼠标位置和深度的组合以确定3d位置

  • 如果没有网格碰撞器,这将很难做到……问题是heightmap每帧都会更新,因为它受到侵蚀算法的影响。这种更新速度使得使用侵蚀算法不可能使用碰撞器,你知道地形的每个点吗?@cjf93是的,地形中每个点的高度都存在于纹理中。我不知道这是否可行,但你可以在地形的基础上创建一个边碰撞器,并知道光线投射碰撞的位置。通过该点和相机位置,您可以知道光线投射的每个点,并使用您的算法计算该光线投射的每个点,查看地形上的最高点。最高的是你的碰撞。我说得对吗?这可能吗?如果没有网格碰撞器,这将很难做到……问题是高度贴图会在每一帧更新,因为它会受到侵蚀算法的影响。这种更新速度使得使用侵蚀算法不可能使用碰撞器,你知道地形的每个点吗?@cjf93是的,地形中每个点的高度都存在于纹理中。我不知道这是否可行,但你可以在地形的基础上创建一个边碰撞器,并知道光线投射碰撞的位置。通过该点和相机位置,您可以知道光线投射的每个点,并使用您的算法计算该光线投射的每个点,查看地形上的最高点。最高的是你的碰撞。我说得对吗?这可能吗?