three.js : 圖形繪製基礎

 

參考博客:ThreeJs 圖形繪製基礎

 

二、圖形繪製主要流程

圖形繪製一般流程爲:構造 Shape、構造 BufferGeometry 、構造 Mesh 並添加到場景中。

圖形繪製的基礎有 3 個比較核心的類:Curve,Path 以及 Shape。

Shape 是間接繼承自 Curve ,Curve 定義了 getPoints() 的基礎。Shape 的 getPoints() 的具體實現在 CurvePath 中的實現,從而獲取構造這個圖形所需要的點。

在 Path 的各繪製 API 中,又是進步構造相應的曲線,如 new 一個 LineCurve,CubicBezierCurve 等,從而完成曲線的構造。

 

在實際的開發過程中,我們一般使用 Shape 來繪製出我們想要的形狀。

lineTo: 繪製直線
quadraticCurveTo: 二次貝塞爾曲線
bezierCurveTo: 三次貝塞爾曲線
arc: 弧線
ellipse: 橢圓
......

上面類圖中,***Curve 帶後綴 3 的都是進行 3D 的圖形繪製,其他自然就都是 2D 的繪製了。

 

1.構造 Shape

                var circleRadius = 40;
                var circleShape = new THREE.Shape();
                circleShape.moveTo( 0, circleRadius );

                circleShape.quadraticCurveTo( circleRadius, circleRadius, circleRadius, 0 );
                circleShape.quadraticCurveTo( circleRadius, - circleRadius, 0, - circleRadius );
                circleShape.quadraticCurveTo( - circleRadius, - circleRadius, - circleRadius, 0 );
                circleShape.quadraticCurveTo( - circleRadius, circleRadius, 0, circleRadius );

2. 構造 BufferGeometry

var points = shape.getPoints();
var geometryPoints = new THREE.BufferGeometry().setFromPoints( points );

3. 構造網格

var mesh = new THREE.Line( geometryPoints, new THREE.LineBasicMaterial( { color: color } ) );

 

發佈了36 篇原創文章 · 獲贊 19 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章