2017-04-25 10 views
0

私は一方の端で交差する2つの円柱を持っています。私は交差点の半径を別々に変えることができますが、それでも以下のように一方の端で交差します。しかし、私はこれら2つの間の交差点を滑らかにしたい、言い換えれば交差点の法線をここで述べるように共有することを望む:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-indexing/。 私は通常の更新をTRUEに設定し、交差点では法線のすべてのy成分をゼロに変更します。まだ滑らかな交差点を示していません。これら2つのシリンダーはBufferGeometryで作成されます。 enter image description herebufferGeometryのnormalをthree.jsで更新します。

より重要である私のコードのように一部1-ジオメトリがBufferGeometryあるので、私は法線作成するために、両方のジオメトリのために最初の以下の2つのコマンドを使用します。両方のジオメトリので次いで

comp.mesh.geometry.computeFaceNormals(); 
comp.mesh.geometry.computeVertexNormals(); 

2-頂点の数が同じであり、私は0に、すべての頂点のy成分を設定します。

for (i=0;i<comp.mesh.geometry.attributes.position.array.length;i++){ 
comp.mesh.geometry.attributes.normal.array[i*3 + 1] = 0; 
comp1.mesh.geometry.attributes.normal.array[i*3 + 1] = 0; 
} 

私はプログラムが法線を表示させた場合、法線の彼らのy成分が0であるが、幾何学的形状は、まだスムーズされていません。

+0

コードを表示します。 – WestLangley

+0

ありがとうWestLangley。追加されたリンクのコードをご覧ください。 – Hesamoy

+0

あなたのコードをあなたのポストで(好ましくはスニペットとして)共有してください。 jsfiddleが削除された場合、あなたの質問の文脈は消え去ります。 – TheJim01

答えて

0

私はこれを行うための唯一の方法は、これらの点を溶接することだと思います。重複をチェックし、同じインデックスを割り当てる必要があります。これらのindecisを三角測量および頂点の通常の計算に使用します。

+0

法線が正しく調整されている限り、ジオメトリを組み合わせる必要はありません。ここでは、2つの別々のメッシュがほとんど触らずに、法線を調整して滑らかに見える例を示します。 https://jsfiddle.net/TheJim01/gnoxeoem/ – TheJim01

+0

明示的に設定してください。何が必要なのか分かっていれば問題ありません。より一般的な解決策としては、どのように顔を平均化する必要があるかをバーチに何とか伝える必要があります。 – pailhead

+0

代わりにそれらを計算するために私の例を更新しました。確かに、私のほんの一例です。 Hesamoyがやろうとしているようなものについては、ある場所のすべての頂点の法線を集め、それらを平均化し、その平均をバッファ内のすべての参照された通常の場所に適用する必要があります。既存の指標を使用して助けてもよい。はい、重複を削除することでバッファをより効率的にすることができますが、法線が無効になった頂点のすべての面法線を取得するには、一連のクロス積を行う必要があります。インデックス作成だけを残す方が良い。 – TheJim01

関連する問題