すでにすべての頂点を持つ図形にインデックスを追加する方法を理解しようとしています。私は頂点によって私が必要とするところにそれらを持っているのを見ることができますが、インデックスが適切に追加されていないことに起因する変なアーティファクトがあります。しかし、私はそれらを正しく追加する方法がわかりません。メッシュにインデックスを追加する
与えるものドロー頂点Surface::Surface()
{
int size = 200;
ofPoint p1(0, 0, 0), p2(0, 0, size), p3(size, 0, size), p4(200, 0, 0);
s1 = new Curve(p1, p2);
s2 = new Curve(p2, p3);
s3 = new Curve(p4, p3);
s4 = new Curve(p1, p4);
for(double i = 0; i <= size; i++){
for(double j = 0; j <= size; j++){
mesh.addVertex(getPoint(i, j));
}
}
int width = size, height = size;
for (int y = 0; y<=height; y++){
for (int x=0; x<=width; x++){
mesh.addIndex(x+y*width);
mesh.addIndex((x+1)+y*width);
mesh.addIndex(x+(y+1)*width);
mesh.addIndex((x+1)+y*width);
mesh.addIndex((x+1)+(y+1)*width);
mesh.addIndex(x+(y+1)*width);
}
}
}
:
をしかし、インデックスがあまりにも多くのドットを接続していると私はどのインデックスを接続する必要がありますどのようなものか不明です。
たぶんこの問題は、凹面形状に適切である:ワイヤーフレームを描きますか?誰もが多かれ少なかれ、彼らはメッシュ
今はもっと意味がありますが、まだ多くのインデックスが追加されています。それは1から2から3から4までのポイントを行うべきラインのようなもので、4から1の最後のラインを追加します。毎回のループの実行時間を短くしてみましたが、役に立たないようです。変更なしで、あなたのコードは次のようになります:http://imgur.com/N8WIRIN – Axel
はい、申し訳ありませんが、私は答えを編集しました。ループの条件を<=よりもむしろ<に変更する必要があります。概念的には、頂点よりプリミティブが少ないものを作成する必要があります。あなたが想像すれば、頂点の各ペアの間にクワッドを作成します。想像するのが最も簡単なのは、サイズ== 1の場合です。頂点を2つ作成する必要がありますが、1つのクワッドしか作成する必要はありません。 –
私はそれのようなものを考え出しました。あなたがそれをする前に、あなたの編集に似たものを試していました。そして結果は同じです。私はあなたが私がそれらを追加していると思う順序でインデックスを追加していないと私は信じています。たとえば、forループを 'y
Axel