問題タブ [specular]

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 投票する
0 に答える
123 参照

c++ - 鏡面反射光は点または方向をとりますか?

鏡面反射光は、点または方向を光として取りますか? 方向の場合、 LightPosition - VertexPositionのように計算する必要がありますか? または、手動で指定された LightDirection と同じですか?

0 投票する
0 に答える
431 参照

opengl - 半透明オブジェクトのスペキュラ ハイライト - OpenGL

コンピュータ グラフィックス コースの最終プロジェクトに取り組んでいます。それはすべて OpenGL で行われます。私のプロジェクトは、水中の泡のシミュレーションを作成することです。現実的ではないはずですが、プロジェクト提案のすべての要件を満たしているので、さらに高度なことを行う予定です。

現在、私の泡は現実的ではありません。それらは半透明で、それぞれの周りに半透明の白い円があります。照明は、GL_LIGHT_MODEL_TWO_SIDE、glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA)、および GL_POLYGON_SMOOTH を使用して計算されます。これにより、明らかな泡の外観が得られます。

私が得ることができない唯一のものは、スペキュラーハイライトです!それらはそこにありますが、半透明の白であり、光沢のある表面上の実際のスペキュラー ハイライトの不透明な白ではありません。

アルファをすべて 1 に設定すると、白いスペキュラー ハイライトが表示されますが、オブジェクトは半透明ではなくなります。

私は GL_SHININESS をいじってみましたが、ほとんど成功しませんでした。

照明とマテリアルのコードは次のとおりです。

半透明のオブジェクトで明るく白いスペキュラ ハイライトを取得する方法を提案できる人はいますか?

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

opengl-es - OpenGL ES の立方体の鏡面反射光

ライティングを紹介するいくつかのチュートリアルでは、アンビエント、ディフューズ、スペキュラーの 3 種類のライトすべてで照らされた球体の例から始めます。次に、たとえば個々のライトをオフにすることで、周囲のライトがオブジェクトの均一な照明を担当し、拡散ライトが特定の方向から来て、鏡面反射光のおかげで表面の明るいスポットを観察できることを簡単に確認できます。 .

ユーザーが任意に回転できる立方体という、より単純な例で同じ手順を繰り返してみました。私が実際に期待していたのは、似たような写真でした: OpenGL は幾何光学の規則にある程度従う必要があり、光源とカメラの両方の位置が指定されている場合、どちらか一方に明るいスポットが 1 つだけあるはずです。立方体の面で、光源をカメラに直接反射する面です。

ただし、一様に照らされた顔しか得られず、明るいスポットは得られませんでした。それで、私の質問は、実際にそれを手に入れることは可能ですか?言い忘れていましたが、私は可能な限り単純な三角形分割を使用しました。面ごとに 2 つの三角形です。もう1つ、私はOpenGL ES 1.1を使用しているため、シェーダーはありません。

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

opengl - 鏡面ハイライトはカメラの距離に依存します

鏡面ハイライトを実装してみました。問題は、サーフェスから遠くに移動すると、ハイライトがどんどん強くなり、ハイライトのエッジが非常に粗くなることです。表面に近づきすぎると、ハイライトが完全に消えます。

これは私のフラグメント シェーダーの関連部分です。すべての計算はビュー空間にあります。指向性太陽光を使用しています。

これは私の照明バッファのスクリーンショットです。一番前のバレルにはスペキュラー ハイライトがまったくなく、遠くにあるバレルは非常に強く輝いていることがわかります。真ん中のバレルは思い通りに点灯。

遠ハイライトが強すぎて近ハイライトが消える

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

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

c++ - OpenGL でのスペキュラ ライティングに関する問題

スペキュラー ライティングに問題があります。アンビエントとディフューズがありますが、見栄えの良いモデルを作成するためにスペキュラーを検討しています。

vertexShader には次のものがあります。

次に、私の main.cpp には、これを一緒に機能させるためのコードがいくつかあります。鏡面反射光は、モデルを光沢のあるものに見せるのではなく、明らかに何かを行っています。詳細が表示されません。

次の変数を作成します。

renderSceneCallBack()次に、メインで呼び出される関数で変数を次のように設定します。

initLights()次に、すべての照明を処理する関数を作成します。これはメインでも呼び出されます。

誰かが私が間違っているかもしれないことを見ることができますか?私はいくつかの計算が間違っている可能性があります. アンビエント/拡散照明の両方が正しく機能しています。この写真は、現在何が起こっているかを示しています。左側がアンビエント、中央がディフューズ、右側が強度を 30 に設定したスペキュラーです。

ここに画像の説明を入力

答え

この値をメインに渡すのを忘れていました:

選択した回答を使用してすべてが機能するようになりました

0 投票する
0 に答える
178 参照

three.js - Three.js 鏡面反射マップが完全に見える完全に透明な素材

クライアントにいくつかのパッケージ デザインを紹介するために、中に肉が入ったフード トレイをレンダリングする必要があります。トレイの中身を包むプラスチックフィルムの素材にこだわっています。光沢のある効果を得るために鏡面反射マップまたは法線マップを使用することを計画していましたが、私が得ることができる唯一の考えは、鏡面反射マップで完全に透明または完全に陰影を付けることです。どちらも私の目的には合いません。

これは私の現在のマテリアル設定です:

ライブコードはこちら. JSON トレイ ファイルはこちら.

インスペクタでは、次のコマンドでマテリアルにアクセスできます: showcase.scene.childrenまたはshowcase.materials

ありがとうございました!

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

directx - 原点 (0, 0, 0) でスペキュラ ライティングが壊れる

鏡面照明を機能させるのに問題があります。私のアプリケーションには、追跡できない何らかのバグがあるようです。

光は正面から来ています (スクリーンショットはカメラが -z 方向を見ていることを示しています。左側は -x です)。

単純なスペキュラー出力は、次の失敗を示しています。

ここに画像の説明を入力

使用したコード:

変数エラーの可能性を確認するために、input.VertexWorldSpace を確認しました。

ここに画像の説明を入力

ライトの方向と法線も確認するために、拡散項を確認しました。

ここに画像の説明を入力

頂点ビュー ベクトル (v) へのカメラ: ここに画像の説明を入力

私にとっては、すべての部分がきれいに見えますが、鏡面反射光は原点(0,0,0)で黒くなり、光の方向に垂直になります。

また、原点(0, 0, 0)でのビュー方向ベクトルで何が起こるかを示すGIFも作成しました

http://imgur.com/2YlqcGP

カメラの位置と鏡面反射光が黒くなる場所を示す別の gif: http://i.imgur.com/ajUaekA.gifv

v の計算が間違っていますか?