2016-05-11 17 views
1

三角形ライブラリを使って作成した三角形に基づいてメッシュジオメトリの面を作成しますpoly2tri 私は反時計回りの方向に単純なポリゴンしか持っていません。 さらに、私はホールとスタイナーポイントが輪郭だけしか持っていません!poly2triから三角形のインデックスを取得する方法

var swctx = new poly2tri.SweepContext(contour); 
     swctx.triangulate(); 
     var triangles = swctx.getTriangles(); 

     triangles.forEach(function(t) { 
       t.getPoints().forEach(function (p) { 
        console.log(p.x, p.y); 
       }) 
     }) 

これはすでに動作しています。 結果:triangles

しかし、次のステップは、私のMesh.geometryのために作成した顔になります。 Face3ジオメトリを作成するには、頂点のインデックスが必要です。このような

何か:

for (var i = 0; i < triangles.length; i++) { 
      geometry.faces.push(new THREE.Face3(triangles[i][0],triangles[i][1],triangles[i][2])); 
     } 

私は三角形の外にインデックスを取得できますか?

+0

あなたが使用できるさまざまな三角測量アルゴリズムを使用したい場合は、[三角測量アダプタthree.js](https://github.com/Wilt/three.js_triangulation:上記のコード例の設定に基づいて、 ) わたしは作った。 * poly2tri *や* earcut *などのコードを2行のコードでシームレスに接続することができます。 – Wilt

+0

OKそれを試してみます。ソースコードを見ることができる例がありますか?私はtriangulation.jsを含みますが、三角形分割は未解決の変数であると書かれています。メインのスクリプトやヘッダーにこれを設定する必要がありますか? – Moehre

+0

サンプルページ[こちら](https://rawgit.com/Wilt/three.js_triangulation/master/example.html)を確認してください – Wilt

答えて

1

私はgetPoint()を探していると思います。

var triangles = swctx.getTriangles(); 
for (var i = 0; i < triangles.length; i++) { 
    console.log(triangles[i].getPoint(0).x + ", " + triangles[i].getPoint(0).y); 
    console.log(triangles[i].getPoint(1).x + ", " + triangles[i].getPoint(1).y); 
    console.log(triangles[i].getPoint(2).x + ", " + triangles[i].getPoint(2).y); 
} 
関連する問題