問題タブ [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 に答える
2214 参照

opengl - 遅延レンダリングと移動ポイントライト

同じ問題についてネット上にいくつかのスレッドがあることは知っていますが、実装が異なるため、これらのスレッドからの助けは得られません。

ビュースペースの色、法線、奥行きをテクスチャにレンダリングしています。次に、テクスチャをフルスクリーンクワッドにバインドし、ライティングを計算します。指向性ライトは正常に機能しているようですが、ポイントライトはカメラと一緒に動いています。

対応するシェーダーコードを共有します:

ライティングステップ頂点シェーダー

ライティングステップフラグメントシェーダー

ユニフォームとしてシェーダーにライト属性を送信します。

viewmatrixはカメラマトリックスであり、modelmatrixはここでは単なるアイデンティティです。

なぜポイントライトがモデルではなくカメラで変換されているのですか?

どんな提案でも大歓迎です!

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

opengl - 最も単純な照明モデルにおける光の方向とその変換

というわけで、OpenGL 学習クエストで基本的なライティングにたどり着きました。

この最も単純な照明モデルを想像してみてください。各頂点には、位置、色、および法線があります。シェーダーは、ModelViewProjection マトリックス ( MVP )、Modelview マトリックス ( MV ) 、法線マトリックス ( N ) を(MV -1 ) Tとして計算し、ユニフォームとしてLightColorLightDirectionを取得します。頂点シェーダーはライティングの計算を実行し、フラグメント シェーダーは補間された色を出力するだけです。

さて、私が遭遇したこの主題に関するすべてのチュートリアルで、私を困惑させる 2 つのことがわかります。まず、LightDirectionはすでに目の座標にあると想定されています。次に、出力カラーは次のように計算されます。

最初にLightDirectionを逆にする必要があると思います。つまり、正しい式は次のようになります。

LightDirectionは、実際のライト フローのベクトルの逆であると想定されているようです。

Q1: このモデルのLightDirectionが、光の方向のベクトルではなく、無限遠の光源へのベクトルであると想定されているのは、ある種の確立された慣例ですか? それとも、これは主要な問題ではなく、たまたま私が出会ったチュートリアルはとても想定されていましたか?

Q2: LightDirection が目の座標ではなくワールド座標にある場合、通常のマトリックスまたはモデルビュー マトリックスで目の座標に変換する必要がありますか?

これらのことを明確にしていただきありがとうございます!

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

objective-c - 異常な照明効果 - ランダムなポリゴンの色

iOS で使用するオブジェクト ローダーの作成に取り組んでいます。OBJ ファイルから頂点、法線、および面データをロードし、このデータを配列に配置してオブジェクトを再構築しました。しかし、照明の問題に遭遇しました。下部にあるのは、プログラムのシミュレーションからのビデオです。これは、照明が次の位置にある場合です。

これは、各フレームの render メソッドと、セットアップ時に 1 回呼び出されるセットアップ ビュー メソッドの両方で指定されます。

さまざまなその他の照明の詳細はここにあります。これらはセットアップ中に一度呼び出されます。

問題のビデオは次の場所にあります。

http://youtu.be/dXm4wqzvO5c

ありがとう、

ポール

[編集]

詳細については、法線は次のコードによっても提供されます。現在、それらは大きな法線配列または XYZ XYZ XYZ などにあります...

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

raytracing - レイ トレーシング ライティング

シンプルなスフィア レイ トレーシング アプリケーションにスペキュラ ライティングとディフューズ ライティングを実装しようとしていますが、ベクトルに問題があります。

以下を使用してライトを更新しようとしていますが、生成された画像はまったく同じに見えるので、何か間違っていることがわかります。何らかの方法でベクトルを台無しにしていると思います。Hit はヒットした球で、mindis はこの球のポイントまでの距離です。Pir、pig、pib は色の RGB です。

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

opengl - OpenGL で光源を可視化する

動作している OpenGL シーンで光源を移動したいと考えています。でも本当はあなたの光源も見たい。

これどうやってするの?

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

lighting - Three.jsでのポイントライトの最大数

ポイントライトを使用して、Three.jsシーンの立方体の両側を照らそうとしています。ただし、立方体の上面と下面が暗いままであるため、シーンに追加した6つのライトのうち4つだけが実際にレンダリングされているようです。前面と背面のライトを外すと、突然上下のライトが機能します。

Three.jsがシーン内で同時に4つのポイントライトしかサポートしていない可能性はありますか、それとも何か間違ったことをしていますか?

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

c# - Terrariaのようなライトシステムを作成しますか?

私は自分の照明をTerrariaのブロック照明に似せようとしています。これで、ブロックを暗くする方法がわかりました。特定の光レベルにブロックを割り当てることができますが、丸い形で発光する実際の光のエンティティを作成するにはどうすればよいですか(ひし形にすることもできます)。ご不明な点がございましたら、お気軽にお問い合わせください。

0 投票する
3 に答える
1121 参照

c++ - OpenGL ライティングの問題

OpenGL でライティングを有効にしたときに、作成したオブジェクトを表示できません。3D Max からインポートされたオブジェクトがあり、ライティングは正しく機能しますが、シーンの残りの部分は機能しません。法線を指定する必要があることはわかっていますが、これは役に立たないようです。display() 関数で単純なポリゴンを作成すると正しく動作しますが、クラスのメソッドで作成され、display() 関数で呼び出された他のポリゴンは表示されません。

ここに私の照明コードがあります

これは私の海を作成している私のクラスメソッドです

これは、以下のように私の display() 関数で呼び出されます

なぜこれが見えないのですか?

アップデート:

テクスチャリングを無効にすると、海が見えます。テクスチャと照明を使用できるように修正するにはどうすればよいですか?

更新 2:

テクスチャリングを GL_MODULATE に変更しましたが、機能させるためにブレンディングも削除する必要がありました。ブレンディングを有効にする必要がありますか?

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

opengl - ばかげた結果を与える太陽を照らす

宇宙シミュレーターを開発しようとしています。私は光源として太陽を使おうとしています。私の問題は、照明が期待どおりに機能することです。法線に対して間違った計算を使用している可能性があります。単一の「createsphere」関数を使用して球を作成し、さまざまな座標とサイズを使用してそれらを表示しています。問題は、画面上のすべての球がほぼ同じ効果を示すことです(つまり、1つの光源のみを適用しましたが、すべての球に実装されているようです)。また、光はそれらと一緒に回転します。問題がどこにあるのかわかりません...コードを投稿しています...

球体表示のコード

球を作成するためのコード

と太陽を照らすためのコード

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

java - スプライトの特定のセクションをシェーディングする方法

私は、作成する予定の戦略ゲーム用のアイソメトリックMinecraft風のゲームエンジンに取り組んでいます。ご覧のとおり、実際には照明が必要です。すべてが同じ色合いであるため、別々の標高を区別することは困難です。だから私の質問は:スプライトの特定のセクションだけをシェーディングできますか?これらのブロックはすべて単なるスプライトであるため、画像全体をシェーディングすると、ブロック全体がシェーディングされます。

エンジンからのスクリーンショット