問題タブ [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.

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

opengl - open gl アンビエント ライティングが機能しないのはなぜですか?

ほとんどの照明は思い通りに機能していますが、周囲の照明が完全に欠けているようです。つまり、物事の太陽から離れた側は完全に黒くなります (50% の周囲光を期待していました) が、太陽に向かう側は期待どおりに明るく見えます。

これが私の照明設定コードです(オリジナルから編集、以下の注を参照):

(注: LIGHT1 は今のところコメントアウトされています。私は LIGHT0 に自分のやりたいことをさせようとしているだけです。)

問題があるかどうかはわかりませんが、glDrawArrays() を使用して、ユニットに合わせてテクスチャ マッピングされたユニット キューブ (MineCraft 風) を描いています。私の法線はすべて正しいようです。照明をオフのままにすると、すべてが正しく描画されます (フラット ライトのみ)。

ヒントはありますか?

ありがとう!

編集(スクリーンショットを追加)

これが問題のスクリーンショットです

編集 コメントごとに、アンビエント値を 2.0 まで上げましたが、今では約 50% のアンビエントに期待するもののように見えます。それは奇妙に思えます-照明の値が[0、1]に固定されていると思いました...?アンビエントライトについて理解していない基本的な概念は何ですか?

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

flash - 2D プラットフォーマーの光源

移動光源と固定光源を使用するプラットフォーマーのプロトタイプを作成し、いくつかのトリッキーな問題に遭遇し、基本的に何らかの回避策または代替ソリューションを探しています。

私の最初のアイデアでは、背景用と敵用に 1 つずつ、2 つのマスクを使用しました。以下のファイルでわかるように、背景。

swf: http://efullick.com/light/light_test.swf

そこで、敵と背景を常に不透明に保ち、その上にある大きな黒い闇の層の一部をマスクする方が理にかなっているかもしれないと考え、この時点に至りました。

swf: http://efullick.com/light/darkness_test.swf

したがって、このアプローチを機能させるには、明らかにマスクを逆にする必要があることに気付きました。これにより、暗点を作成する代わりに、穴が開いた多くの暗さが得られますが、私は.複数の光源でこれを効果的に行う方法がよくわかりません。

何か案は?

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

opengl - GLSL ライティング コードがカメラでライト スポットをシフトするのはなぜですか?

私はカスタム ライト シェーダを作成しようとしており、時間をかけてさまざまなことを試していました。私が見つけた解決策の中には、うまくいくものもあれば、うまくいかないものもあります。この質問については、これまでで最も効果的なソリューションを使用しています。

私の問題は、「カメラ」を動かすと、ライトの位置も動くように見えることです。このソリューションには非常にわずかですが顕著な動きがあり、ライトの位置が本来あるべき場所よりも上にあるようです。

デフォルトの OpenGL ライティング (シェーダーなし) は正常に動作します (安定したライト位置) が、マルチテクスチャリングにはシェーダーが必要であり、シェーダーが機能したらライティング効果にその一部を使用する予定です。

頂点ソース:

フラグメント ソース:

私は何を間違っていますか?

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

graphics - Blinn-Phong GLSL シェーダ、ポイント ライトを使用した奇妙な結果

シーンでピクセルごとの blinn phong ライティングを行うための GLSL シェーダーを作成しましたが、シーンのライト キャストに問題がありました。各ライトは、その効果に非常に厳しい境界を持っているようです (添付のスクリーンショットでは、底面のライトの境界を見ることができます - ライト (そのワールド位置は、シーン内のぶら下がっている黒い球体に相当します) がぶら下がっています)飛行機とフェラーリのモデルですが、何らかの理由で、カメラから離れた前方ではなく、カメラの後方/に向かって/カメラに適切にライトをキャストするだけです。

私は間違いを犯しているように感じます/目の方向がブリンフォン照明モデルにどのように影響するかについての理解が不足しています. 計算を間違えたのでしょうか、それともこの特定の照明モデルがどのように機能するのか理解できていないのでしょうか?

私のシェーダー コードはこちら: https://gist.github.com/1040417

効果のスクリーンショット:シーンのライト境界カットオフ

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

java - 部屋の中の光源が予期しない動作をする

いくつかの Android アプリを作成しましたが、3D プログラミングは初めての経験です。

内部にいくつかのオブジェクトがある部屋 (4 つの壁、天井、床) を作成し、カメラをその周りを歩くように動かすことができます。さまざまな画像ですべての表面をテクスチャリングしましたが、すべてが期待どおりに機能していました。

コンテキストとして、部屋は幅 14 単位、奥行き 16 単位 (原点を中心)、高さ 3 単位 (原点の上に 1、下に 2) です。部屋の真ん中には立方体とその上にある逆ピラミッドの ​​2 つのオブジェクトがあります。

次に、立方体とピラミッドをシェーディングする光源を追加しました。私は NeHe のいくつかのポートを読んでフォローしていたので、ライティングのレッスンで取り組んだことを取り入れて、それを新しいコードに適用しました。

その結果、立方体とピラミッドはシェーディングされません。それらは、光に面している側と同じように、光の反対側でも同じように見えます。カメラを光源の反対側に向けると、部屋は照明コードを追加する前と同じように見えます。カメラを回転させて光源に向けると、部屋全体 (オブジェクトを含む) が暗くなり、カメラが光源に直接面しているときに完全に黒くなります。

ここで何が起こっているのですか?照明とその仕組みに関する多くの記事を読みましたが、立方体とピラミッドが照明の位置に基づいてシェーディングされて、なぜこれが部屋のすべての側面を照らさないのかを示すものは何も見当たりませんでした. 部屋の「内側」にあるため、ライトの動作が予想されることはありますか? 私は新しいので、簡単なことを見逃しているだけですか?

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

opengl - フラグメントごとのライティング座標系

シェーダーを使用して OpenGL 2.1 アプリケーションを開発していますが、フラグメントごとの照明に問題があります。シーンを最初にロードしたときの照明は正しいのですが、シーンをナビゲートすると、静的な場所にとどまるのではなく、「カメラ」と共に照明が移動します。たとえば、ライトを右にずらして配置すると、オブジェクトの右側が照らされます。次に、カメラをオブジェクトの反対側に移動して反対方向に向けると、照明はまだオブジェクトの右側にあります (現在のように左側ではなく)。間違った座標系で照明を計算していると思いますが、これが間違った動作を引き起こしています。私は次の方法で照明を計算しています...

頂点シェーダーで...

ここで、vertexNormal はオブジェクト/モデル空間の法線です。

フラグメントシェーダーで...

ここで、LightPosition は、たとえば (100.0, 10.0, 0.0) であり、上記のようにライトをワールドの右側に配置します。よくわからない部分は、gl_NormalMatrix の部分です。このマトリックスが何であり、それが法線をどの座標空間に配置するのか正確にはわかりません(私はワールド空間を想定しています)。法線がワールド空間に配置されている場合、問題は、ECPosition が目の空間にあり、LightPosition と WCNormal がワールド空間にあることにあると考えました。これについて何かが正しくないようですが、私には理解できません。また、ECPosition をワールド空間に配置しようとしました。座標をワールド空間に取得するために行う変換のみを含む独自の modelMatrix を乗算しましたが、これは機能しませんでした。シェーダーまたはコードに関するその他の情報を提供する必要がある場合はお知らせください。

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

opengl - リアルタイムの地形照明

OpenGL テレイン シーンでリアルタイム ライティングを提供する最良の方法は何ですか? 各クワッド間の詳細レベルは、ズームインすると分割されるため、動的に生成されるため、事前に計算された光源は機能しません。そのような地形で太陽をシミュレートしたいと思います。最高である必要はありません。十分に見栄えがする必要があります。私はシェーダーに慣れていません。

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

three.js - シェーダープログラムでライトモデルの計算はどのように機能しますか?

私はこのチュートリアルを読み込もうとしています:

https://aerotwist.com/tutorials/an-introduction-to-shaders-part-2/

しかし、私はフォローアップすることができません。基本的に、コードはGPU上で直接実行されるシェーダーを使用して指向性ライトを作成します。これはコードです:

具体的には、私が理解していない行は次のとおりです。

頂点とライトのvNormalの内積は、どのように指向性ライトを作成しますか。誰かが私を図式的に説明できますか?取得できません。これは私には少し魔法のように見えます。この頂点シェーダーでは、各頂点が「1」で表され、共有変数が上記のフラグメントシェーダーコードで使用されるため、通常と呼ばれる入力として渡されていることがわかります。しかし、これとは別に、私はそれがどのように機能するのか理解していませんでした。

PS:私はブログライターに頼むことができたかもしれませんが、彼は私が知っているように2週間の休暇中です。ですから、物理学やthree.jsの経験がある人なら教えてくれるかもしれないと思いました。

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

c++ - OpenGL のパースペクティブとライティングが機能しない?

編集: 照明の問題を解決するために glNormal3f() を使用するように言う人が何人かいますが、私は今それを調査して実装しましたが、何も変わりませんでした。

私は OpenGL に慣れていないので、何か間違っていると思いますが、Red Book の例をできる限り厳密に追跡しましたが、何が問題なのかわかりません。そして皆さんに聞いてください。

2 つの問題があります。1 つは、glFrustum を正しく使用していると確信しているにもかかわらず、正射投影シーンをレンダリングし、何らかの理由でカメラの前後にあるオブジェクトをレンダリングすることです。もう 1 つは、このライティングを正しく行っていると確信しているにもかかわらず (本の例に従っているため)、シーンを均一な色でシェーディングなどを使用してライティングしていないことです。これが私のコードです:

何が問題なのかを理解するのを手伝ってもらえますか? 前もって感謝します。

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

lighting - 誰かが私にラジオシティ照明を説明できますか?

私はすでにアンビエントオクルージョンの基本を理解しています。私はレイキャスターを持っていて、半球の周りに均一に光線を発射することができます。それがラジオシティに必要なものの基本のようですが、そこからどこへ行けばいいのかわかりません。それぞれの顔からどれだけの光が出ているかわかりますか?(私はMinecraftのような立方体でゲームを作っています)その後、私は何をしますか?