問題タブ [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.
c++ - 一定の法線を持つglDrawElements
DrawElementsを1回呼び出すだけで描画するときに、定数法線を指定できるかどうかだけが気になりました。VAOとVBOを使用しているので、すべての頂点に対して1回ロードし、VBO IDを保存するだけなので、問題はありませんが、グラフィックカードのメモリを解放できます。
これは、データをグラフィックスにロードするために必要な方法です。
5x5x5グリッドを指定し、インデックスを使用して3次サーフェスを作成するので、法線を処理することはそれほど多くなく、定数を使用すると役立ちます:)
opengl - 円柱法線
現在、いくつかの小さなシリンダーで構成される大きなチューブのみを描画する OpenGL アプリケーションを開発しています (スリンキーのようなものです)。照明と法線をオンにすると、特定の角度から円柱の境界にこれらの厄介な黒い点が表示されるため、迷惑な効果が得られます。
これは、シリンダーが非常に薄いという事実の副産物だと思います。基本的に、トップ/ベースを設定するときに法線を (0,0,+/- 1) に設定し、サイド法線は (cos(toRadian(beta)), sin(toRadian(beta)), 0) です。
「より太い」シリンダーを取得せずにこの効果を削除することは可能ですか? または、法線を定義する方法に何か問題がありますか?
ありがとう
c++ - DX10 地形法線
パーリン ノイズを使用して地形を生成し、次を使用して法線を計算しています。
ただし、これにより、グリッドの正方形の間にグリッド線が表示されます。問題は何ですか?
例:
c# - OpenGL 法線を使用した行列変換
私は OpenGL でジオメトリを扱っており、現在は照明を扱っています。ジオメトリを変換すると、法線が追従せず、役に立たないことに気付きました。
どのように変換マトリックスをジオメトリに適用し、法線を維持しますか?
現在、次のコードを使用しています。
ジオメトリにオフセットを与えると、適切にレンダリングされません (たとえば、法線が正しくマップされません。
どんな助けでも素晴らしいでしょう。
ps、私は OpenTK ラッパーを使用していますが、通常の OpenGL は直接変換されます。
編集:
上記のコードを次のように変更すると、わかりました。
すべてが正常にレンダリングされます。
ここにいくつかのスクリーンショットがあります(コードに応じて)
opengl-es - 頂点法線の計算中の小さな問題 (OpenGL ES)
頂点法線に少し問題があります。
結果は少し奇妙に思えます。まず画像を見てください:
3D ソフトウェアのオリジナル モデル。
OBJ ファイルから直接インポートされたメッシュを使用したフラグメント単位のライティング (ファイルの法線を使用)。
フラグメントごとの照明、独自のルーチンで法線を計算します。
気づきましたか?OBJ ファイルの法線を使用すると、すべて問題ありません。しかし、独自のルーチンを使用して頂点に基づいて法線を計算すると、何かがおかしいように見えます。
Z が負になると、法線が奇妙に見えます (右手の向きを使用)。オブジェクトの他の部分ではすべて問題ありませんが、メッシュを横切る 1 本の架空の線だけが奇妙に見えます。この問題は他のメッシュでも持続し、常に同じ場所 (Z = 0) にあります。
法線を計算する私のルーチンは、頂点 ABC を持つ三角形を想定して、誰もが知っているものです。
そして、通常の結果を、既に計算された通常のバッファに追加します。
各三角形の面積を計算し、それを法線で乗算するか、バッファの法線と新しい法線の間の内積をチェックすることについて何人かの人が言っているのを見てきましたが、私はすでにそれらのアプローチを試しました。少し変更しますが、それでも同じ問題があります。
前にこれを見たことがありますか?それを解決する方法を知っていますか?
ここにいくつかのコードがあります:
opengl - VBOの法線を生成する方法は?
OpenGLアプリにwavefront(OBJ)ファイルローダーを実装しました。これにより、顔、テクスチャ、頂点の情報が提供されます。ただし、照明を使用するには、明らかに通常の情報が必要です。これを行う正しい方法は、三角形を構成する3つの頂点の外積を取り、正規化することです。これにより、3つの頂点すべてに適用する法線が正しくなりますか?
ただし、ポリゴンのエッジ上にない面/三角形の場合、各頂点は3回使用されます。では、新しく計算された法線を、以前に計算された法線と平均するだけだと思いますか?
これは、私が考えている方法では非常に費用のかかる作業のようです。すべての頂点を反復処理し、その頂点を使用する各面の法線を計算して平均化します。これを行うためのより良い/より速い方法はありますか?
乾杯
クリス
opengl - 非標準の射影行列を使用した GLSL 法線
GLSL 頂点シェーダーで頂点を正しく表示するようになってから数日後、ライティングに取り掛かりました。openGL ライティング/法線についての私の理解は、想像力を駆使してもあまりよくないので、ご容赦ください。法線を正しく表示するには、法線にどのような変換を適用する必要があるかわかりません。ライトを設定するアプリケーション コードは次のとおりです。
これまでのところかなり標準的なもの。アプリケーションの要件により、(やや奇妙な) 頂点シェーダーを次に示します。
gl_Normal
を世界座標に変換する必要があることは私の理解です。私のシェーダーの場合、これは次のようになると思います。
次に、ライトの位置を取得する必要があります (ワールド空間のアプリケーション コードで既に宣言されています)。私はこれを次のように行うと思います:
次に、法線とライトの位置のドット積を見つけて、ライトの拡散値を見つけます。
さらに、フラグメント シェーダーでは、色にこの拡散値を乗算するだけで、すべて機能するはずです。通常の座標を正しく変換する方法が本当にわかりません。私の仮定は正しいですか、それとも私は完全にボールから外れていますか?
編集:gl_NormalMatrix
法線行列 ( ) が行列の 3x3 の逆数である
ことを読んだ後gl_ModelView
、ワールド空間で法線を計算する正しい方法は、gl_Normal
に の逆数を掛けることだとmodelTranslationMatrix * modelRotationMatrix * modelScaleMatrix
思います。P
これに行列を掛ける必要がありますか、それとも通常の計算には関係ありませんか?
opengl - GLSL法線による奇数効果
以前に発生して投稿した問題と多少似ているため、GLSLアプリで法線を正しく表示しようとしています。説明のために、RenderMonkeyで提供されているninjaHead.objモデルをテスト目的で使用しています(ここで取得できます)。これで、RenderMonkeyのプレビューウィンドウでは、すべてが見栄えが良く
なります。生成される頂点コードとフラグメントコードはそれぞれ次のとおりです。
バーテックス:
断片:
私はこれに基づいてGLSLコードを作成しましたが、期待した結果が得られていません...
私の頂点シェーダーコード:
私のフラグメントシェーダーコード:
しかし、私のレンダリングはこれを生成します...
何がこれを引き起こしているのか、そして/またはそれを機能させる方法を誰かが知っていますか?
編集
kvarkのコメントに応えて、レンダリングされているすべての三角形を表示するために、通常/照明の計算なしでレンダリングされたモデルがあります。
これが、色に使用される法線を使用したモデルのシェーディングです。問題が見つかったと思います!その理由は、なぜこのようにレンダリングされているのか、そしてそれをどのように解決するのかということです。提案は大歓迎です!
解決策 さて、誰もが問題を解決しました!プログラミングの練習に間違いなく役立った彼の有益な洞察に感謝しますが、答えは私が大規模な乳首であることから来るのではないかと思います...コードのdisplay()関数にエラーがあり、glNormalPointerオフセットを設定しましたランダムな値に。以前はこれでした:
しかし、これである必要があります:
ですから、これは教訓だと思います。金曜日の午後の時間を節約するために、Ctrl+CおよびCtrl+Vコードを無意識に使用しないでください。そして...あなたが見ているコードの部分が正しいと確信している場合、問題はおそらくどこか別の場所にあります。
opengl - OpenGL の法線とは何ですか?
色は非推奨なので、色の代わりに法線を使用する必要があると聞きました。(本当ですか?)法線は光の反射と関係がありますが、明確で直感的な説明が見つかりません。ノーマルとは?
c# - ピクセル位置を平均して表面法線を見つけます。(2D)
XNA で物理演算が必要な 2D ゲームに取り組んでいます。Farseer などの物理エンジンは、その動作方法によってはうまくいかないことがわかりました。(物理学を自分で書く必要があることを最終的に理解するために、コードを 3 回書き直すという長い話です。) したがって、私が使用している参考資料によると、今必要なデータは、表面の法線だけです。衝突。
これは、スプライトを使用したピクセルごとの衝突検出を使用しています。現在、重複するすべてのピクセルとその位置の配列があります。そのデータを使用して、重なり合うピクセルの位置を平均化して、その表面の法線を計算したいと思います。これにより、不規則な形状のオブジェクトとの衝突が可能になりますが、現実的な物理的相互作用は保持されます。
このピクセル情報を使用して、表面の法線または十分に近いものを把握する方法について誰かが提案していれば、それは素晴らしいことです。
ありがとう。