在符合其表面的{3D}模型上绘制一条线

时间:2017-02-22 23:44:11

标签: javascript three.js

我正在构建一个使用Three.js注释三维模型的工具。我希望用户能够在完全遵循曲面轮廓的模型上绘制线条。例如,如果你在一个人的脸部模型上划一条线,并在鼻子的两侧放置一个点,那么该线应该越过鼻子,而不是通过它。

我可以通过在纹理上绘制线条来做到这一点,但我希望线条可以点击,这需要自己实现命中检测。我更喜欢在Three.js中将其作为线对象。有没有一种简单的方法可以找到模型表面上两点之间的面?

2 个答案:

答案 0 :(得分:3)

变得比我想象的要容易:我将模型转换为面部图形,其中每个面都是一个节点,它通过边连接到它旁边的其他面。然后,这是一个简单的问题,即找到用户点击的面部,并使用最短路径算法(在我的情况下为Dijkstra)来查找每个节点之间的面。

答案 1 :(得分:0)

碰巧碰到了这个问题,并想起了我也用与戴夫(Dave)相似的方式解决了这个问题。我在这里做了一个最小的演示:https://github.com/foobarbecue/threejs-shortest-path