問題タブ [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 に答える
556 参照

c# - 頂点のリストに法線を追加する

C# で DirectX 9
を使用しています。動的 LOD アルゴリズムを使用しているため、すべての頂点をリスト (配列ではなく) に格納します。すべてがフレームごとに計算されるため、頂点はフレームごとに異なる可能性があります。

法線と照明を追加しようとするまで、すべて正常に動作します。
クラスではなく構造体のリストであるため、リストに頂点を追加すると法線を編集できないことがわかりました。したがって、「変数ではないため、blablaba の戻り値を変更できません」などのエラーが表示されます。
たとえば、これを実行しようとすると、機能しません。

頂点をリストに追加するときに法線を追加する必要がありますが、完全なメッシュが得られるまで法線を計算することはできません。

そこで、新しいカスタム頂点タイプを作成し、それを構造体にする代わりにクラスにしました。構造体でない限り、directxはそれを受け入れないため、これも機能しません...

そこで、頂点のリストではなく配列で機能するようにしました。これにより、1 秒あたりのフレーム数が 1 未満になりました。Array.Resize を使用して、フレームごとに数百回配列のサイズを変更する必要がありましたが、それは気に入らなかったと思います。

おそらく、最終的なリストを配列に変換し、そこから法線を計算する必要があると考えているでしょう。頂点は特定の順序で追加されないため、これは機能しません。そのため、法線を計算できるように特定の頂点の近くにある頂点を知ることができません。

では、メッシュを構築した後に頂点に法線を与えることができる方法で頂点を保存するにはどうすればよいでしょうか?

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

c# - 継ぎ目で終わる 2 つのメッシュ間の法線の計算

私の仕事

私は現在、実行中のアプリのメモリが少ないモバイル デバイスに特化した Unity3D の地形を作成しています。15.000 x 15.000 キロメートルのサイズと -1.000 メートルから 10.000 メートルの高さの地形を許可すると、ハード ディスクのスペースだけが制限されます。

状況

異なるメッシュ (各メッシュにはサブディビジョン レベルがあります) 間の法線が正しく計算されていないことを除いて、すべてが現在正常に実行されています。問題を視覚化する 2 つの図を次に示します。

三角形が表示されたメッシュ 法線のみのメッシュ

この問題は、あるサブディビジョン レベルから別のサブディビジョン レベルへの移行時にのみ発生します。両方のメッシュが同じレベルの場合、うまく機能します。法線を計算するときにいくつかの顔が欠けていると最初に思ったのですが、それらはすべて計算に含まれているようです。

いくつかのコード

各面の通常の計算:

頂点の周りの各面の法線を計算した後、すべての面法線を頂点法線に追加して正規化します。結果は写真に示されています。背景とメッシュ自体でわ​​かるように、異なるサブディビジョン レベルがない限り機能します。

いくつかのコード

現在のメッシュの各法線を計算します。

GetNormal方法:

CalculateNormal方法:

AddFaceNormal方法:

-FindFacesメソッド:

TransformPoint方法:

最後にTranslationHandler-delegate と 2 つのサンプル ハンドラ:

質問

質問は簡単です。異なるレベルで機能しないのはなぜですか。計算で何かを見逃していますか?

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

android - AndroidopenGLES法線

昨日、WaveFront .obj 3Dモデルローダーを作成しました。これは現在正常に動作します(すべてをサポートしているわけではありません)。そこで、シーンに照明を追加するまで、すべて正常に動作する3Dモデルを画面に描画する簡単なテストを作成しました。ライトが表示されましたが、法線はまだデフォルトの状態にあるようです。法線のバッファー(GL_NORMAL_ARRAY、GL_ARRAY_BUFFERなど)を生成するときにターゲットとして何を使用すればよいかわからないので、それらのバッファーオブジェクトを使用したチュートリアルが見つかりませんでした。

ここに画像の説明を入力してください

したがって、デフォルトの法線は0、0、-1または0、0、1であり、デフォルトのカメラは-5を見ています。モデルが回転すると、法線がない場合と同じようにライトが消えます。コンピューターでこの作業に似たものを手に入れましたが、VBOなどを使用しなかったため、コードを比較できません。通常のバッファーのアップロードまたはバインドに問題があると確信しています。:( 助けて! :(

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

opengl - ポイントのリストを指定して正しい法線を計算するOpenGL

私が持っている問題について:a)ポイントの順序付きリストb)各ポリゴンを構成するポイントのリスト

例えば

=>ポリゴン1は、モデルの外側の一部である可能性のある三角形です。

OpenGLで照明の正しい法線を計算する必要があります。

与えられた点から平面上のベクトルを計算し、外積して平面法線を取得できることは知っていますが、OpenGLでは法線が正しい方向(つまり外側)を指している必要があります。

ポリゴンがたくさんあるので、プロセスを自動化する必要があります。

平面上で2つのベクトルを選択した場合、照明の正しい方向(つまり、モデルの外側にある)のポイントを計算した法線をどのように確認できるかわかりません。

計算された法線を平面上の点に追加し、原点から離れているかどうかを確認して正しいかどうかを確認できると思いましたが、モデルは非常に複雑で、一部の法線は原点を指す必要がある場合があります(ish)

それが役立つ場合は、すべてのポリゴンが三角形であることがわかります(ただし、どのように役立つかはわかりませんが、どのポリゴンでも抽象化できるはずです)

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

opengl-es-2.0 - OpenGL ES で面ごとの法線を指定して、非スムーズ/フラット シェーディングを実現できますか?

OpenGL ES 2.0 でメッシュ モデルを表示したいのですが、実際のメッシュが明確に表示されるので、各プリミティブ/三角形をスムーズにシェーディングしたくありません。私が考えることができる唯一の2つのオプションは

  1. 各三角形には独自の法線のセットがあり、すべて三角形の表面に垂直です (ただし、このオプションでは三角形間で頂点を共有できないと思います)。
  2. 黒い線を使用して三角形/プリミティブ エッジを示し、頂点を共有し、頂点ごとに 1 つの法線を使用する通常の方法に固執します。

このようにする必要がありますか?単純にプリミティブを読み込んで法線を指定せず、どうにかして OpenGL ES 2.0 に各面にフラット シェーディングを作成させることができないのはなぜですか?

同様の質問同様の Stackoverflow の質問ですが、解決策の提案はありません

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

opengl - 法線マップの不適切なライティング

OpenGL ゲーム エンジンに法線マップがあり、法線マップ シェーダー (およびパララックス マップ シェーダー) の照明に問題があることに気付きました。光がどこにあっても、光は常に右から来ます。タンジェント スペース シェーダを使用していますが、渡したものが正しいかどうかわかりません。

これは私が使用している法線マップです: 私が使っている法線マップ

そして、ここにレンダリングがあります:

レンダリング イメージ

光は座標 3,0,3 から来ているように見えますが、実際の位置は -3,0,3 です。

何か案は。

シェーダー:

[垂直]

[フラグ]

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

webgl - WebGL の法線とインデックス / 指向性照明 / X3D / Blender

質問をするための画像があると役立つと思うので、html で質問を出しました。 http://www.jamestrusler.co.uk/files/webglquestion/question1.html

以下は、HTML ページ内にも表示されるカバーする質問です。

  1. 頂点を回転/スケーリングせずに法線を回転/スケーリングできますか(すでに変換が行われています)-これが1つの問題に対する答えになる可能性があります。
  2. Blender (x3d エクスポート) によって私に与えられた法線、インデックス、および頂点が多色のオブジェクトを適切にレンダリングしていないように見える理由についてのアイデア。(サイトの質問を参照してください)
0 投票する
2 に答える
4626 参照

opengl - 円柱の頂点法線を計算するには?

次の円柱があります。opengl でワームを描画しており、頂点法線を計算したいと考えています。

ここに画像の説明を入力

0 投票する
0 に答える
1633 参照

opengl - VBO 対 Vertex Array、VBO での頂点法線の問題

ここで何が問題なのかわかりません。法線以外はすべて正常に機能しています。頂点配列を使用すると、モデルは完璧に見えますが、VBO に切り替えると、頂点法線のためにモデルが悪化します。私はそれを修正するために多くの時間を費やしましたが、何が問題なのかわかりません。VBO の生成は完璧なようです。しかし、まだわかりません。何か案が?

レンダリングコードに従います。VBO + 頂点配列 頂点配列は完璧に機能しています。頂点法線でモデルの完璧な形状を見ることができますが、VBO では頂点法線に問題があります。BUFFER_OFFSET(12) で何か間違ったことをしていると思います。

}

更新 1: InitVBO について話していると思います..その時点で私は間違っていました。これはどうですか...しかし、それも機能していません..実際には問題です..多くの方法で、InitVBO()..で頂点法線をバインドしようとしましたが、結果は毎回同じです。

更新 2: OK ... 頂点法線 (vboNormID) をバインドしません。私はそれを捨てています。今大丈夫 ?これで動作するはずです..実際には、その方法ですべてを行いました..頂点法線を vboVertID や vboNormID などとバインドします..しかし、すべての単一の数学が機能しているわけではありません..

更新 3:

誰が私に BUFFER_OFFSET() を使うように言ったのかわかりません... ただがらくた.. 今は修正しましたが、このばかげた BUFFER_OFFSET() なしで正常に動作するようになりました..修正されたコードは次のように本当に簡単です:

これらのバッファをリアルタイムで更新する方法を教えてください。つまり、データ全体、法線、頂点、三角形をリアルタイムで更新する必要があるということです。たとえば、三角形を細分化した後、頂点と法線を使用して三角形のバッファを更新する必要があります。また、モデルのカット シミュレーション中に、頂点の位置と法線を更新する必要があるため、更新する必要があります。その時点でのバッファも..この種の問題に対して何をすべきか教えてください。どうすれば補うことができますか?バッファを削除して再生成する必要がありますか? はいの場合、どのように?

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

android - 頂点ごとに複数の法線

ブレンダーから.objファイルにエクスポートされた法線と少し混乱しています.objファイルを2つのファイルに分割するwinアプリケーションを作成しています。1つは頂点で、もう1つはインデックスです。私が顔で見るように、私は同じ顔を見つけることができますが、たとえば顔24/24/20と再び24/24/19など、法線が異なります。これは正しいですか? Blenderプロジェクトには光源が1つしかありませんありがとう