問題タブ [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# - モデルの C# XNA 法線、拡散、鏡面反射光?
私は XNA の初心者で、基本的な 3D ゲームで運試しをしています。
非常に才能のある 3D モデラーが私を支援してくれています。.fbx ファイル (モデル自体) を XNA の基本的な 3D ユニバースにインポートする際に問題が発生していますが、法線マップ、ディフューズ、スペキュラーをどのように含めるかわかりません。彼らのモデルに含まれています。
法線、拡散反射光、鏡面反射光はすべて .tga イメージ ファイル形式ですが、モデルの図面にこれらを追加する方法がわかりません。
現在、3D オブジェクトを描画するためのコードは次のとおりです。
cuda - c opengl:GPUで法線を計算できますか?(CUDA)
カーネル内の最後と次のインデックス座標にアクセスしようとしています。
例:int idx = blockIdx.x * blockDim.x + threadIdx.x;
次に、pos [idx] .x、pos [idx] .y、pos [idx] .zは、ポイントの現在の座標を示します。ただし、他の2つにはアクセスできません。CUDAを使用してGPUレベルで変化する三角形の法線を計算しようとしています。
algorithm - グーロー シェーディングの三角形のセットから頂点法線を計算する最も効率的なアルゴリズム
三角形のセットが与えられます。各三角形は点のトリプレットです。各点は実数の 3 要素です。各三角形の表面法線を計算できます。ただし、グーロー シェーディングの場合は、頂点法線が必要です。したがって、各頂点にアクセスして、その頂点を共有する三角形を調べ、それらの表面法線を平均して、頂点法線を取得する必要があります。
これを達成するための最も効率的なアルゴリズムとデータ構造は何ですか?
素朴なアプローチはこれです(疑似pythonコード):
より効率的なアプローチはありますか?
opengl - OpenGL - 投影後のサーフェス法線の修正
私は現在、クリップ空間ビューでシーンを表示する OpenGL を使用した小さなおもちゃのプログラムに取り組んでいます。つまり、立方体を描画して正準ビュー ボリュームを視覚化し、立方体内に射影変換されたモデルを描画します。モデル図面のコード スニペットを表示するには:
したがって、当然、描画されたモデルは「歪んで」います (これが望ましい動作です)。ただし、サーフェス法線も射影行列によって変換されるため、変換後のサーフェスに対して直交しないため、ライティングは正しくありません。私が達成しようとしているのは、歪んだモデルの表面が正しい法線を持つという意味で「正しい」ライティングです。
問題は、どうすればそれができるかということです。私は通常の法線の転置逆行列ルールで遊んでいましたが、私が理解している限り、それは OGL がデフォルトで法線で行うことです。サーフェスがモデルビュー マトリックスで変換された後、サーフェス法線を再計算する必要があると思いますが、その方法は? それとも別の方法がありますか?
geometry - 断面上の点を通る楕円の通常の「N」を見つけます
私が作った小さな物理エンジンで素晴らしいたわみ効果を作ろうとしています。現在、ポリゴンエッジの法線からうまく偏向しています。しかし、「丸みを帯びたたわみ」の滑らかな効果を得るために100のエッジを持つポリゴンを作成する代わりに、代わりに楕円を使用してたわみ法線を計算できると考えました。
ですから、私が本当に欲しいのは、線分の点Pを取り、仮想楕円(w、h)の円周上の法線Nを返す関数です。詳細については、添付の写真を参照してください。

楕円の円周上のポイントを取得するには、次のようになります。
しかし、どうすればそれから正常を得ることができますか?
これは、BDOアダムズ博士による答えを実装する試みのフィドルです。
android - Opengles 2.0 でのスムーズ シェーディングからフラット シェーディングへの切り替え
私はopengles 2.0を使用してAndroidで3Dアプリケーションに取り組んでいますが、いくつかのモデルを描画しますが、それらは
箱のようなモデルは、滑らかなシェーディングでは滑らかすぎるように見えます。球体モデルには滑らかなシェーディングが必要です。
ブレンダーから滑らかな色合いで .OBJ ファイルに 3d モデルをエクスポートしました。
今、私の3Dモデル構造は
頂点ごとの法線。
頂点インデックス配列を使用してモデルを描画します。
私のモデルの法線は頂点ごとの法線であるため、これに対処する私の計画は面ごとの法線を作成することです
通常の描画方法をすべて再構築して、頂点インデックス配列を使用しないようにすると、実行できなくなります。
頂点インデックス配列が消費するメモリが少ないため、この計画を実行したくありません。
補間された可変または別の方法からの中間値を使用してGLSLを作成する機能のように、描画用の頂点インデックス配列でフラットをスムーズにする方法はありますか?
あなたの助けに感謝し、私の悪い英語を申し訳ありません.
javascript - 頂点法線を面法線に変換する
三角形分割された多面体 (必ずしも凸面である必要はありません) と次の情報があります。
各頂点の位置のリスト。各面を定義する頂点トリプルのリスト。頂点法線のリスト (ここで、頂点法線は、各頂点の周りの面法線 (以下を参照) を平均することによって計算される各頂点からのベクトルです)。
顔の法線のリストを計算したいと思います(各面の平面に垂直で、外側を向いている正規化されたベクトル)。
performance - 2チャンネル法線マップのパフォーマンスコストとデメリットは何ですか?
私がやっていることは、法線マップを使用して2Dスプライトを照らすことです。もともと私は画像の赤チャンネルでバンプ/高さマップを使用し、他の2つのチャンネルを使用して他の情報を保存するつもりでした。私が思ったのは、法線マップ上の法線は常に[0 .. 1]の範囲のaz値を持つことがわかっているので、この情報を青チャンネルから除外し、xの長さに基づいてz値を計算できるということでした。およびy値。それで試してみましたが、今のところうまくいくようで、オリジナルとほぼ同じに見えます。
私の質問は、追加の指示の費用はいくらですか?いくつかの追加の乗算と加算、およびさらに2つの平方根呼び出しがあります。
使用されるフラグメントシェーダーは次のとおりです。
opengl - 高さマップ データの法線
高さマップ データの法線を見つけたい。インデックスのコードで gl_triangles を使用しています。これの法線をどのように見つけますか?