問題タブ [normals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
349 参照

normals - 法線の方向

現在、単純な 2D ポリゴンを x 軸を中心に回転させて 3D 形状を作成するプログラムがあります。問題は、サーフェスの法線が正しく位置合わせされていることを確認するために、点を見つけて、法線がその点から離れていることを確認する必要があることです。基準点を見つけるために、2D ポリゴンの x 座標と y 座標の平均値を使用しています。ただし、この基準点が誤解を招く場合があります。鋭く凹んだ形状を使用しようとすると、基準点が完全に形状の外側にあるため、一部の側面の法線が内側に向いてしまいます。ポリゴンの法線が常にポリゴンの反対側を向くように整列する正確な方法はありますか?

0 投票する
1 に答える
1380 参照

matlab - サーフェスの多くのポイントで法線を描画する方法は?

X,Y and Z表面の点の座標を含む行列です。 Xnormal,Ynormal and Znormalこれらの点の法線を含む行列です。これらすべての法線をその位置に描画するにはどうすればよいですか? ありがとう!

0 投票する
2 に答える
5087 参照

opengl - パーリンノイズからの頂点ごとの法線?

Openglジオメトリシェーダーで地形を生成していますが、ライティングの法線を計算するのに問題があります。ジオメトリシェーダーに実装されたパーリンノイズ関数を使用して、フレームごとに動的に地形を生成しています。このため、頂点ごとの法線を計算する効率的な方法が必要です。ノイズ関数に基づいています(テクスチャなどはありません)。2辺の外積を取得して面法線を取得することはできますが、それらはジオメトリを使用して動的に生成されるため、頂点法線の面法線に戻って平滑化することはできません。y平面の地形の高さを生成するノイズ関数を使用して、その場で頂点法線を取得するにはどうすればよいですか(したがって、高さは1から-1の間です)。頂点ごとにノイズ関数を4回サンプリングする必要があると思いますが、次のようなものを試しましたが、機能しませんでした...

上記は実際にパーリンノイズのように動き回る照明を生成しました!では、頂点ごとの法線を正しく取得する方法についてアドバイスはありますか?

0 投票する
2 に答える
3147 参照

graphics - MeshLab: 独自に計算した法線を使用して obj ファイルをレンダリングする

頂点を含む obj ファイルを書き込もうとしています。コードで頂点法線を計算し、このファイルにも書き込みます。Meshlab でこのファイルをレンダリングしようとすると、頂点が正しく読み取られますが、[レンダリング] -> [頂点法線を表示] に移動すると、計算した法線が表示されません。むしろ、MeshLab は独自の法線を計算して表示します。

計算してファイルに書き込んだ法線を視覚化する方法がわかりません。計算した法線に基づいて、後で Meshlab シェーダーを適用したいと考えています。

これをテストするために、テスト obj ファイルを作成しました。

これはちょうど1つの正方形です。このファイルの法線値を変更しても、[レンダリング] -> [頂点法線を表示] を選択すると、独自の頂点法線が表示されます。独自の法線を持ち、計算された法線で動作するシェーダーを適用するにはどうすればよいですか?? 助けてください。

ありがとう!!

0 投票する
1 に答える
3188 参照

math - ボクセル サーフェスの法線を見つける方法

私は、3D ボクセル画像の表面に法線を近似する方法に取り組んでいました。

この記事で提案されている方法(Google で見つけたアルゴリズムのみ) は機能しているようです。この論文から提案されている方法は、サーフェスが最も変化する方向を見つけ、何らかの手順を使用して接平面上の 2 点を選択し、外積を取ることです。ポルトガル語でコメントされている、記事の著者 code による一部のPascal コードは、このメソッドを実装しています。

ただし、法線として f の勾配 (各偏導関数をベクトルのコンポーネントとして使用) を使用すると、かなりうまく機能するようです。ボクセル化された球体のいくつかの円に沿ってこれをテストしたところ、ほとんどの場所で正しいように見える結果が得られました (約 30 度ずれている外れ値がいくつかあります)。これは論文で使用されている方法とは大きく異なりますが、それでも機能します。私が理解していないのは、オブジェクトの表面に沿って計算された f = 1/dist の勾配が法線を生成する理由です。

なぜこの手順が機能するのですか? スフィアテストが特殊すぎたというだけでしょうか?もっと簡単な方法を提案したり、これらの方法を説明したりできますか?

0 投票する
6 に答える
66030 参照

c++ - 三角形メッシュでの法線の計算

10000 頂点 (100x100) の三角形メッシュを描画しました。これは芝生の地面になります。gldrawelements() を使用しました。私は一日中見てきましたが、これの法線を計算する方法をまだ理解できません。各頂点には独自の法線がありますか、それとも各三角形には独自の法線がありますか? コードを編集して法線を組み込む方法について、誰かが正しい方向に向けることができますか?

EDIT 1ここに私が書いたコードがあります。ベクトルの代わりに配列を使用し、すべての法線を法線と呼ばれる構造体に保存しました。ただし、まだ機能しません。*indices で未処理の例外が発生します。

0 投票する
1 に答える
522 参照

opengl - 法線の半分が間違っている

sculptris というプログラムを使用して、Wavefront OBJ 形式でモデルを作成しています。最初のいくつかのモデルを作成したばかりで、それらを OpenGL シーンにインポートしようとしています。今夜までオブジェクトローダーを書いたことはありませんでしたが、OBJ ファイルの解析が正しくできたと確信しています。残念ながら、照明を追加すると、モデルの半分の法線が正しくないように見えます。照明がなければ、モデルは正しくテクスチャリングされ、色付けされ、完璧に見えます。光を当てるとこんな感じに・・・

ここに画像の説明を入力

モデルの半分が正しければ、OBJ の解析に問題はないと確信できます。したがって、sculptris は、モデルの半分に対してのみ法線を正しくする必要があります (おそらく、スカルプトの対称性から生じるものです)。誰かがプログラムに精通している場合は、私が間違っていることを知ってください。一般的に OBJ に精通している人のために、重複した法線を含む OBJ について私が知らないことはありますか (モデルが左右対称であるために存在します)。

0 投票する
1 に答える
1115 参照

opengl-es - iOS OpenGl ES .objが単位立方体をロードした後、計算された面の法線を反転しました

モデルをMayaから非常に単純なiOSOpenGLESセットアップにエクスポートしてロードしようとしています。そのために、基本的に頂点と法線を取得し、それらを単純に含めるCヘッダーに計算するrubyobjパーサーを作成しました。単純に三角形分割された単位立方体の出力は、次の構造です。

Vertex3Dの定義は次のとおりです。

ここで、いくつかの頂点の動きをアニメートしたいので、頂点法線を再計算する必要があります。このために、接続されているすべての頂点インデックスをすべての頂点に追加しました。これが、connected_facesインデックス配列の目的です。

計算では、外積を使用してすべての面法線を単純に計算します。そのためには、Index3Dに格納されている3つの頂点を使用し、位置をロードし、最初の頂点を減算してベクトルを取得し、外積を計算するだけです。次に、この頂点に属するすべての外積を合計し、ベクトルを正規化します。これが私の最終的な頂点法線です。

私が遭遇している問題は、同じ面の法線を持つ2つの面が発生することです。たとえば、三角形の立方体には常に4つの三角形を分割する2つの三角形があり、その面は反対方向に法線になります。後で計算するためにそれらを追加すると、もちろんそれらの合計はヌルベクトルになります。これが発生するのは、2つの頂点の順序が正しくない場合があるためです。つまり、AをBに置き換える必要がありますが、どちらを反転する必要があるのか​​わかりません。

法線がどちらの方向に進むか、そしてAxBとBxAのどちらを計算するかを推定する数学的な方法はありますか?Mayaで法線を再確認しましたが、ここでは完璧です。

編集:私は今、接続された面を注文しましたが、これは問題なく機能します。私は次のように法線を計算しています:

しかし、三角形分割によって、まったく同じ方向を指す2つの法線が存在することがあるという問題があります。これは、期待される{0.33f、0.33f、0.33f}頂点法線にはなりません。それは正しい動作ですか、それともそれを計算する他の方法はありますか?

ご助力ありがとうございます!

0 投票する
1 に答える
1870 参照

algorithm - 3Dメッシュ法線を修正しようとしています

3D形状のメッシュサーフェスを定義する三角形コレクションがあります。各三角形の法線を修正して、形を外したいと思います。

私は次のことを試みていました(疑似):


1.最初の三角形の法線方向が正しい方向であることを定義します
2.次のようなDFSを使用してメッシュを通過します:
3。三角形=最初の三角形
4.triangle.getNeighboursのforeachneigbour5
.隣接する三角形と三角形の間の角度が180より大きい場合neighbor.flip()
6.三角形=ネイバー
7.ネイバーがすでに選択されている場合は、次のネイバーに
進みます8.4に再帰的に進みます。

しかし、アルゴリズムのステップ5は、角度が180より大きいかどうかがわからないため、機能しません。これは、ウィッチ方向(時計回りまたは反時計回り)を知る必要があるためです。

アルゴリズムを修正する方法を理解するのを手伝ってもらえますか?

0 投票する
1 に答える
979 参照

c# - オリゴから面したC#wpf 3D

3つのポイントがあり、常に表示されている面をオリゴから「面している」側にする必要がある場合、平面の法線を計算するためのショートカットはありますか?

このような

または、毎回法線を計算する必要がありますか?

法線を計算する必要がある場合、そのアルゴリズムは何ですか。インターネットを調べていくつかの方法を試しましたが、このように疑わしいと思います。

CalculateNormalは

すべきではない

Vector3D v1 = new Vector3D(p1.X-p2.X、p1.Y-p2.Y、p1.Z-p2.Z);

代わりは ?

/ステファン