タグ付けされた質問 「normals」


5
OpenGL:glNormalで法線を設定する必要があるのはなぜですか?
OpenGLのいくつかの基本を学んでいますが、なぜglNormal頂点の法線を設定する必要があるのか​​疑問に思っています。 このような単純な三角形を作成する場合: glBegin(GL_TRIANGLES); glVertex3f(0,0,0); glVertex3f(1,0,0); glVertex3f(0,1,0); glEnd(); 法線は、幾何学的プリミティブのタイプによって暗黙的に定義されるべきではありませんか?法線を設定しない場合、OpenGLはそれを計算しますか?
19 opengl  normals 

1
法線と法線マップ
Assimp Asset Importer(http://assimp.sourceforge.net/lib_html/index.html)を使用して3Dモデルを解析しています。 これまでのところ、メッシュの各頂点に定義されている法線ベクトルを単純に引き出しました。それでも、法線マップに関するさまざまなチュートリアルを見つけました... 法線マップについて理解しているように、法線ベクトルは法線マップの各テクセルに格納されており、これらをシェーダーの法線テクスチャから引き出します。 法線を取得するのに2つの方法があるのはなぜですか?

1
頂点のセットから平面の法線ベクトルを取得するにはどうすればよいですか?
私はHLSL / C ++の小さなプロジェクトでグラフィック作業をやりくりしており、頂点ポリゴンから対面ベクトルを取得する方法がわかりません。数式が見つからないようです。 位置はP1、P2、P3です。 たとえば、P1.x、P1.y、P1.zのVertexPointクラスと呼びましょう。

1
高い鏡面反射力を持つ鏡面バンディング
DirectXでのレイトレーシングにいくつかの問題があり、特にスペキュラに関する深刻なバンディングの問題があります。高い鏡面反射力(8以上)でバンディングが始まります。これがHDR / LDRの問題なのか、それとも法線や他のベクトルなど、他の何かに関連している可能性があるのでしょうか。 更新 更新については以下をご覧ください。 これは、球体上のブリンフォンに関連するシェーダーコードです。 float3 hitPoint = thisRay.origin + thisRay.direction * bestHit.hitT; float3 normal = normalize(hitPoint - spheres[bestHit.hitID].center); float3 toLight = pointLights[0].position.xyz - hitPoint; float d = length(toLight); toLight = normalize(toLight); float diffuse = max(dot(normal, toLight), 0.0f); float3 v = normalize(thisRay.origin - hitPoint); float3 h = normalize(v + …

1
平面と点が与えられた場合、点が平面のどちら側にあるかをどのように判断できますか?
ポイントを考えると Vector pos = new Vector(0.0, 0.20156815648078918, -78.30000305175781, 1.0); と平面(三角形) Vector a = new Vector(-6.599999904632568, 0.0, -78.5, 1.0); Vector b = new Vector(6.599999904632568, 0.0, -78.5, 1.0); Vector c = new Vector(6.599999904632568, 4.400000095367432, -78.5, 1.0); の方向を指す平面法線を取得したい pos //Getting plane normal Vector ac = Vector.Subtract(a,c); Vector bc = Vector.Subtract(b,c); Vector planeNormal = …

6
厳密に2Dゲームには法線が必要ですか?
純粋な2Dゲームを作成することでOpenGLを学び始めています。 頂点のフォーマットを決定する必要があります。通常のコンポーネントが必要ですか?それとも、2Dコンポーネントでは不要ですか? 私の直感は、すべてが平らなので必要ないだろうと言っています。しかし、おそらく私はいくつかのシェーダーや私がまだ見ないもののためにそれを必要としています。
8 opengl  2d  normals 

3
三角形のリストから頂点法線を計算する最良の方法
こんにちは、私はコンピュータグラフィックスの完全な初心者です。愚かな答えだとすみません。シンプルな3Dエンジンをゼロから作ろうとしています。実際の使用よりも教育目的のためです。 今のところ私は顔の法線のみを計算します。この方法では: Triangleのリストの中にあるSurfaceオブジェクトがあります。Triangleクラス内の法線を次のように計算します。 triangle.computeFaceNormals() { Vec3D u = v1.sub(v3) Vec3D v = v1.sub(v2) Vec3D normal = Vec3D.cross(u,v) normal.normalized() this.n1 = this.n2 = this.n3 = normal } そして表面を構築するとき: t = new Triangle(v1,v2,v3) t.computeFaceNormals() surface.addTriangle(t) これが一番いい方法だと思います…。 さて、これでうまくいきます。軽いですが滑らかにはなりません。頂点法線も計算しようとしています。(私は自分のエンジンを細管表面でテストしているので、ほぼすべての頂点が複数の三角形と共有されています) 私はこの単純なアルゴリズムを見つけました:フリップコード頂点法線 ですが.. heiこのアルゴリズムは..指数関数的な複雑さですか?(私の記憶が私のコンピュータサイエンスの背景に失敗しない場合) なにか提案を?

3
2D AABB vs AABB Sweep:ヒットノーマルの計算方法は?
2D AABBvsAABBスイープキャストをゲームに実装しましたが、スイープキャストのヒットノーマルを計算するのが困難です。 AとBの両方のAABB位置とxy min-maxのスイープ方向があり、動作する最初と最後のヒット時間はありますが、衝突エッジまたは法線方向はありません。この特定の問題に対する効率的な解決策を概念化することはできません。何か案は?:) *編集 これは私がこれまで持ってきたものです- ゴメスとクリスター・エリクソンの AABBスイープの単なる一般的な実装です。通常のヒットはないので、通常の計算は私には謎ですが、キャラクターコントローラーに対して衝突応答を生成することはできません。 bool SweepVelAABBvsAABB(AABB a, AABB b, Vector2 v, out Vector2 outVel, out Vector2 norm ) { outVel = v; //Initialise out velocity norm = Vector2.zero; if( AABBvsAABB(a,b) ) return true; //return early if a,b overlap v = -v; float hitTime = 0.0f; float …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.