我正在编写一个三次贝塞尔曲线编辑器,旨在让您在 3D 世界中创建、选择和修改贝塞尔曲线。
我目前正在研究选择/挑选界面。我希望能够根据用户从屏幕空间中曲线的实际投影表示单击多远(就像素数而言)来选择曲线。
我的第一种方法是使用从相机原点投射的与曲线三次段的边界框相交的拾取射线段在 3D 中进行强力数值分析。我使用二分法搜索来找到曲线上离射线最近的点的近似值。它有效,但在用例中缺乏鲁棒性,并且还需要根据相机与曲线上点之间的距离来缩放选择距离设置。对我来说,这也不是一个足够优雅的实现。;)
我目前的想法是在近平面上手动投影曲线段,以获得可以进行数值分析的投影贝塞尔曲线。此外,之前的拾取射线参数现在将减少到一个点:用户单击视口的位置。
不幸的是,在原型制作出来之前我担心的是:贝塞尔曲线在平面上的投影并不完全是通过投影其控制点获得的曲线。在进一步阅读该主题之后(我的数学一般都很糟糕),似乎投影曲线以某种方式退化为一条表达方式不同的理性贝塞尔曲线。新曲线的视觉表示与原始曲线不匹配,看起来相当接近,但我需要像素完美匹配。
对于我的问题,我还有其他选择可以探索,例如在场景中投影一个拾取锥,或者在离散为poly-line后投影曲线段。不过,我想知道,是否存在通过重新参数化或使用我无法弄清楚的数学技巧更改投影曲线来解决我当前问题的快速简便的解决方案。
提前致谢。
编辑示例投影图像:http: //i.imgur.com/1XawRof.png