繁体   English   中英

投光鼠标 position 在 3D 网格上绘图

[英]Raycasting mouse position to draw on 3D mesh

I want to draw on a 3D object, and the way I do it is to raycast hits from the mouse position and paint the closest 3D vertex to that hit.

但是,当我快速移动鼠标时,点击没有记录,并且我的绘图中有很大的差距:

缺少绘图

可能是什么问题?

问题很明显,对于给定的绘画策略,您对输入的采样速度不够快。 这可能是因为采样之间的时间异常缓慢(可能是因为您的光线投射花费了太多时间)或者因为鼠标的速度超过了任何合理的采样率。 这是绘制策略中的一个根本缺陷,即为每个输入样本绘制一个顶点。

更稳健的方法将涉及某种插值。 以下是我想到的两种方法:

  1. 对输入样本进行插值。 即,如果一个鼠标输入在坐标 (x1, y1) 处采样,而下一个输入在 (x2, y2) 处采样,则可以沿从 (x1, y1) 到 (x2, y2) 的线段添加假想样本,并且raycast 那些也是。 如果您的光线投射成本很高,这可能不是一个高性能的选择。 此外,您必须以某种方式确定要引入的大量额外积分。
  2. 沿网格插值。 在这种情况下,您对两个连续的输入样本进行射线投射以在网格上找到两个对应的顶点。 然后,您还沿着这两个顶点之间的路径绘制所有顶点。 最短路径似乎是合理的,但也许有更好的策略适合您的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM