0

OBJファイルでエッジの使用を試してみる必要があります。OBJファイルにはエッジが含まれていないため、頂点と面だけを使用して、モデル構造に合うようにエッジを作成する必要があります。

面だけを使用してエッジを作成するにはどうすればよいですか?

頂点データのスニペット

v  1.6946 0.0000 -39.7987 //V1
v  8.5498 6.3593 -32.5369 //V2
v  10.1957 0.0000 -38.6795 //V3
v  1.6946 6.3593 -33.4394 //V4
v  6.9039 -0.0000 -26.3943 //V5

顔データのスニペット

f 1 2 3 
f 1 4 2 
f 4 5 2 
f 4 6 5 

したがって、面1は頂点1、2、および3で構成されています。つまり、1から2、2から3、および3から1のエッジを作成する必要がありますか?

4

3 に答える 3

0

何をすべきかがわかったので、最初の 2 つの頂点を取得し、for ループを実行して、それらが作成したエッジ配列であるかどうかを確認しました。 forループの「i」値を取得する私の顔の構造

var tempVer1 = faces[i][0];
            var tempVer2 = faces[i][1];

            tempEdge1 = tempEdges.length;
            var change = false;
            for(k=0;k<tempEdges.length;k++)
            {
                if(tempEdges[k][0] == tempVer1 && tempEdges[k][1] == tempVer2) 
                    {
                    change = true;
                    tempEdge1 = k;
                    }
                    else if(tempEdges[k][0] == tempVer2 && tempEdges[k][1] == tempVer1)
                    {
                    change = true;
                    tempEdge1 = -k;
                    }
            }

これがそれを必要とする他の誰かに役立つことを願っています:)

于 2012-12-12T02:16:47.077 に答える
0

あなたは正しいです。面 1 は (v1,v2,v3)、面 2 は (v2,v3,v4) などになります。

于 2012-12-12T01:29:21.593 に答える
0

はい、面ごとに 1 対 2、2 対 3、3 対 1 のエッジを作成すると、オブジェクトのすべてのエッジが得られます。エッジが複数の面で使用されている場合、一部のエッジが重複している可能性がある (おそらく重複する可能性がある) ことに注意してください。

于 2012-12-12T01:29:34.987 に答える