在LineMaterial.js基础上修改的ArrowLineMaterial.js代码:

View Code
ArrowLineMaterial.js中主要修改部分:
在顶点着色器中定义变量:

在顶点着色器中计算一下线的长度:

在片元着色器中定义变量:

在片元着色器中贴图:

在片元着色器中注释掉下面几行,使线的颜色和canvas中设置的颜色一致:

CanvasDraw.js代码:

DrawPath2.js代码:

效果图:
缺陷:
2.5D视角观察,看着还行,但是把相机拉近观察,箭头就会变形。凑合着用。
箭头贴图变形或者箭头显示不全,原因我猜可能是因为在场景中,线的远离相机的一端,在标准设备坐标系中比较细,线的靠近相机的一端,在标准设备坐标系中比较粗,但为了使线的粗细一样,靠近相机的一端被裁剪了,所以箭头可能会显示不全。
不管是MeshLine还是three.js的Line2,这个带宽度的线,和三维场景中的三维模型是有区别的,无论场景拉近还是拉远,线的宽度不变,而三维模型场景拉远变小,拉近变大。
Drawing arrow lines is hard!
参考文章:
https://www.cnblogs.com/dojo-lzz/p/9219290.html
https://blog.csdn.net/Amesteur/article/details/95964526