在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