問題タブ [lighting]
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++ - OpenGL スポットライト
openGL でビリヤード台に「スポットライト」を作成しようとしています。これはかなり単純なはずですが、何かがうまくいかず、何が原因かわかりません。
ライトの一種の保持クラスとして使用しているクラス「PoolLight」があります。ここにあります:
Display::Init には、次のコードがあります。
ただし、中央のスポットライト以外をすべて無効にしても、シーンは一種の「ブランケット」ライティングで均一に照らされます。
明らかな何かが欠けているように感じますが、何がわかりません。
opengl - 非標準の射影行列を使用した GLSL 法線
GLSL 頂点シェーダーで頂点を正しく表示するようになってから数日後、ライティングに取り掛かりました。openGL ライティング/法線についての私の理解は、想像力を駆使してもあまりよくないので、ご容赦ください。法線を正しく表示するには、法線にどのような変換を適用する必要があるかわかりません。ライトを設定するアプリケーション コードは次のとおりです。
これまでのところかなり標準的なもの。アプリケーションの要件により、(やや奇妙な) 頂点シェーダーを次に示します。
gl_Normal
を世界座標に変換する必要があることは私の理解です。私のシェーダーの場合、これは次のようになると思います。
次に、ライトの位置を取得する必要があります (ワールド空間のアプリケーション コードで既に宣言されています)。私はこれを次のように行うと思います:
次に、法線とライトの位置のドット積を見つけて、ライトの拡散値を見つけます。
さらに、フラグメント シェーダーでは、色にこの拡散値を乗算するだけで、すべて機能するはずです。通常の座標を正しく変換する方法が本当にわかりません。私の仮定は正しいですか、それとも私は完全にボールから外れていますか?
編集:gl_NormalMatrix
法線行列 ( ) が行列の 3x3 の逆数である
ことを読んだ後gl_ModelView
、ワールド空間で法線を計算する正しい方法は、gl_Normal
に の逆数を掛けることだとmodelTranslationMatrix * modelRotationMatrix * modelScaleMatrix
思います。P
これに行列を掛ける必要がありますか、それとも通常の計算には関係ありませんか?
opengl - 3D ライティング (OpenGl)
こんにちは、素敵な 3D シーンを作成して 3D モデルを表示したいと考えています。モデルをかなり 3D に見せるには、どのように照明を管理すればよいでしょうか。Solidworksのようなもの!光源はいくつ必要ですか? 方向性か位置か?どこ?ボディの材質は?
c++ - OpenGL 照明クワッド
簡単な質問です。3D OpenGL シーンにクワッドがあります。平面の法線を反時計回りに定義します。法線が平面の片側を指すようにします。私の光源の方向に。クワッドは軽いですが、両側にあります。
クワッドの片側だけを軽くするべきではありませんか?それとも、クワッドのようなプリミティブが有限に薄いため、両側から軽く見えるという事実ですか。壁を作りたい場合は、クワッドを 2 つ使用します。壁の両側に 1 つずつ。
ありがとう
opengl - OpenGL照明の小さなオブジェクト?
本当に小さな粒子を扱うとき、照明に問題があります。私は粒子ベースの流体シミュレーションを行っており、現在、流体を非常に小さなポリゴン化された球体としてレンダリングしています (非常に小さいということは、球体の半径が約 0.03 単位であると言っています)。シーンの照明が思いどおりに照明されておらず、正しく表示されません。この画像のパーティクルの柔らかな照明に似たものを探しています...
しかし、私の粒子はこのように見えます...
パーティクルに明るい白いセクションがあるのに対し、緑のパーティクルは柔らかく照らされており、大きな白いホットスポットがないことを確認してください。その理由は、ライトの設定か、単にパーティクルが小さすぎてライトがより大きなスペースを占めるという事実であることはわかっています (それは可能ですか??)。照明の設定は次のとおりです...
opengl - 3D照明(OpenGl)
私はすでにこの質問をしましたが、答えが得られませんでした。ところで、何か新しいものを見つけました。SolidWorksによってエクスポートされたwrlファイルから3Dモデルを表示したいと思います。ファイルには三角形の頂点が含まれており、glBegin(GL_TRIANGLES)で描画していますが、見栄えがよくなく、見栄えもよくありません。かなり3Dのようです!gluSphereを試して、同じ照明設定でそのシーンに球を描画しましたが、非常に素晴らしく、3Dのようです!!!!
Gluについて何かありますか?
三角形の描画にGluを使用する必要がありますか?
algorithm - 高速 2D 照明アルゴリズム?
半透明の壁といくつかの光源を持つ長方形の領域があります。平面図のみを考慮しているため、2D の問題です。エリアの各ポイントでおおよその照明 (信号強度) を見つける必要があります。
アルゴリズムを本当に高速にする必要があります。ブルートフォース方式は、私たちの目的には遅すぎました。すべての壁が同じ量だけ減衰すると想定できます。減衰量が一定であっても許容されます。
領域は最大で 1000x1000 で、光源の数は 100 を超えません。光源の範囲は約 50 ~ 100 単位 (無限ではありません)。より高速だが近似アルゴリズムは大歓迎です。
前もって感謝します!
私が試したのは、基本的に力ずくの方法でした。各サンプル ポイントを各壁と光源と比較して、その明るさを決定しました。明らかに、それは O(n^3) であり、容認できないほど遅いです。
時間までに、特定の制限を意味するものではありませんでしたが、画像全体を 100 ミリ秒以内またはそれより速く処理できればよいでしょう。覚えておいてください、私はスピードほど正確さを必要としません。
opengl - アクティブなテクスチャが GLSL のテクスチャ ID 0 であるかどうかを確認するにはどうすればよいですか?
テクスチャのないモデル アセットがあり、それらを照明なしで黒くレンダリングするのにうんざりしています。これは、テクスチャ ID 0 がバインドされていて、サンプラーに尋ねると、それが黒だと教えてくれるからです。後で 0 * 照明につながり、照明なしでオブジェクト全体が黒くなります。理想的には、色、マテリアル、およびライトが必要です (これは、0 を掛けないと発生します)。
uniform
フラグを使用してオブジェクトごとに切り替えることを検討しましたが、後で部分的にテクスチャを適用したアセットが必要になった場合に備えて、よりシンプルでパフォーマンスの高い方法を望んでいました。
たとえば、白いピクセルを押して白いテクスチャをバインドしてラップするように設定することもありましたが、これは「Chi Ting」のようです。
ノート。有効なテクスチャは黒を返す場合があるため、黒のテクスチャの読み取りを無視することはできません。できますが、見栄えがよくありません。現在、バッファ オブジェクトは使用しておらずglBegin()
glEnd()
、表示リストを使用する非推奨のメソッドのみを使用しています。
他のアイデアをいただければ幸いです。
java - OpenGL ライトが機能しない
このコードを使用して、LWJGL を使用して異なる色の異なる立方体を描画しています。
立方体をきれいに描き、色は完璧ですが、光を加えるとすぐにすべてが白くなり、ひどく見えます. ここに私の照明コードがあります:
ここで私が間違っていることを誰かが知っていますか? ここに例の写真があります:
c++ - OpenGL の適切なライティングの問題
次のプログラムを作成して、2 つの側壁と床がある部屋のテーブルにティーポットを表示しました。
これに関する問題は、照明部分が期待どおりに機能しないことです。すべてのオブジェクトを均等に照らしていません...何が欠けていますか? これにより、ティーポットでさえ海に落ちにくくなります。私の照明部分は表示機能にあります。