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

環境との相互作用を含む、ゲームの光と照明のシミュレーション。さもなければ静的な世界に活力をもたらすことができるゲームの中核要素。

3
2Dゲームでトーチライト効果(光源の周りの明るい領域)を実現できますか?
シンプルな2Dゲームを自分で書くことを考えています。最初は完璧なグラフィックスやゲームプレイでは輝きませんが、PCゲーム開発の最初のステップと考えています。したがって、このような単純なスプライトベースの2Dゲーム(ヒーローズIVやStartcraft BroodWarなど)を想像してください。 照明の変化に応じてゲームプレイが昼夜をサポートし、同時にすべての照明のニュアンスにスプライトを作成しなければならないのは気が狂います。そこで、他のオブジェクトの上に半透明のレイヤーを追加するだけで十分だと判断しました。 このソリューションの問題は、ゲーム内に光源オブジェクト(トーチを着ているヒーローや燃えている建物など)がある場合、その周囲に明るい領域が必要であるということですよね?私は半透明のレイヤーをすべての上に置いているので、私が望むトーチライトの視覚効果を実現するにはどうすればいいですか?照明効果に基づいて「ギャップ」または異なる色の領域を追加して、そのレイヤーを再描画することはできますか?
16 2d  lighting 

2
ボクセルエンジンに照明を実装するにはどうすればよいですか?
テレインエンジンのようなMCを作成していますが、照明を使うと見栄えがずっと良くなると考えています。ページで。 これまでのところ、Minecraftの「ブロック」照明を実装したいと思います。そこで、VertexFormatを作成しました。 struct VertexPositionTextureLight { Vector3 position; Vector2 textureCoordinates; float light; public readonly static VertexDeclaration VertexDeclaration = new VertexDeclaration ( new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0), new VertexElement(sizeof(float) * 3, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0), new VertexElement(sizeof(float) * 5, VertexElementFormat.Single, VertexElementUsage.TextureCoordinate, 1) ); public VertexPositionTextureLight(Vector3 position, Vector3 normal, Vector2 textureCoordinate, float light) { …
15 c#  xna  lighting  raycasting 

1
ガウスぼかしはソフトシャドウエッジのかなり正確な表現ですか?
実際のソフトシャドウ(近くの大きな光源から)にガウスまたは線形の減衰があるかどうか、または他の何かがあるかどうかはわかりません。 何らかの事前レンダリングされたグラデーションテクスチャを操作することで影を作成できるものに取り組んでいるので、フレームバッファや従来の影付け技術に依存する必要はありません。グラデーションをメッシュのテクスチャの1つのチャネルにベイクし、各クワッドを覆うシャドウの量に基づいて値を操作することを計画しています。これは、各ピークが次の隣接するクワッドに影を落とすことができるジグザグのように並んだクワッドを持っているためです。 そのため、線形フォールオフが最も簡単になります(線形勾配から値を差し引く必要があります)が、実際に実際に見えるものを伝えるのは困難です。線形勾配に適用してガウス近似を引き出すことができる簡単な数式はありますか?


4
Minecraftスタイルのゲームでオクルージョンを使用してボクセルベースの照明を実装するにはどうすればよいですか?
C#とXNAを使用しています。私の現在の照明のアルゴリズムは、再帰的な方法です。ただし、5秒ごとに1つの8x128x8チャンクが計算されるほど高価です。 暗闇の可変シャドウを作成する他の照明方法はありますか? または、再帰的な方法は良いですか、おそらく私はそれを間違っていますか? 再帰的なものは基本的に高価なようです(チャンクごとに約25kブロックを通過させる)。レイトレーシングに似た方法を使用することを考えていましたが、これがどのように機能するかわかりません。私が試した別のことは、リストに光源を保存し、各ブロックが各光源までの距離を取得し、それを使用して正しいレベルに照明することでしたが、照明は壁を通り抜けます。 私の現在の再帰コードは以下です。これは、太陽光とトーチライトをクリアして再度追加した後、チャンク内の光レベルがゼロでない任意の場所から呼び出されます。 world.get___atこのチャンクの外部のブロックを取得できる関数です(これはチャンククラスの内部にあります)。Locationは、のような独自の構造ですがVector3、浮動小数点値の代わりに整数を使用します。light[,,]チャンクのライトマップです。 private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new Location(x + chunkx * 8, y, z + chunky * 8); if (world.getBlockAt(loc).BlockData.isSolid) return; lightLevel--; if (world.getLightAt(loc) >= lightLevel || lightLevel <= 0) return; if (y < 0 || …

3
Openglの光を理解しようとしている、現実的な太陽光をシミュレートする方法は?
何か間違ったことをしているのか、何かを逃しているのかはわかりませんが、晴れた日のように太陽光をシミュレートしたいです。 オブジェクトが指向性ライトに面している場合、オブジェクトは十分に明るく、問題はありません。オブジェクトを回って戻ってきたところを見ると、暗いです。使用しGL_AMBIENTているので暗すぎませんが、晴れた日には暗すぎます。値を大きくしても、オブジェクトの光に面する側が明るすぎるため、見た目が良くなりません。 また、アンビエントライトにはもう1つの厄介な問題があります。オブジェクトの背面を見ると、形が見えず、無地の色しか見えません。説明が難しい、ここにいくつかの写真があります: オブジェクト前面:http : //i.stack.imgur.com/YW53X.png オブジェクト背面:http : //i.stack.imgur.com/Qufha.png 簡単に見ることができるように、正面が見栄えが良く、その赤いものの形を見ることができます。裏面では、それはプレーンで、同じ形を見ることができません。 今、私はオブジェクトの後ろを見ていること、そして光の方向を見ていることを知っています、そしてそれは正面より暗いはずです。しかし、このように単純に見えるべきではありません。それは、あるオブジェクトを見て太陽光に逆らったときに見えるものではなく、オブジェクトが何らかの形を形成していることがわかります。 OpenGLで同じ(または同様の)効果を得るにはどうすればよいですか? 私の光は現在このように定義されています: float posLight0[4] = {-1.0f, 1.0f, 1.0f, 0.0f}; float ambLight0[4] = {0.5f, 0.5f, 0.5f, 0.5f}; glLightfv(GL_LIGHT0, GL_POSITION, posLight0); glLightfv(GL_LIGHT0, GL_AMBIENT, ambLight0);
13 opengl  lighting 


1
複数の2Dスポットライトを作成するにはどうすればよいですか?
複数のエンティティにスポットライトを使用できる2D「スポットライト」効果を作成したいと考えています。すなわち、いくつかのスプライトがトーチを保持しているかのように。単一のエンティティ(1つのスポットライト)の場合、グラデーションスプライトをオーバーレイし、中心点でそのエンティティを追跡する手法を使用します。この手法は、単一のスポットライトでうまく機能します。これが私が話していることを説明するスクリーンショットです。 シングルスポットライト-作品 私が遭遇する問題は、この手法が複数のエンティティに拡張されないことです。別のスポットライト画像をオーバーレイすると、いくつかの問題が発生します。シミュレートされたスクリーンショットは次のとおりです。 複数のスポットライト=問題 最も明らかな問題は、目に見える角です。これは、レベル全体をカバーするようにスポットライト画像を巨大にすることで解決できますが、それは適切ではありません。2番目の難解な問題は、このテクニックを使って暗闇を効果的に増やしていることです。したがって、追加された各スプライトは、他のすべての人を暗くする効果があります。明らかに、この問題に間違って近づいています。 何か案は? 継続的な取り組み コメントにはブレンドオプションに関する議論がいくつかあります。これが私の現在の考え方です。上記の単一のスポットライトの例では、次のような画像ファイルを使用しています:(わかりやすくするために、透明部分を緑色に置き換えました) 上記で説明したように、問題は、この画像を別の画像とアルファブレンドしても、望ましい効果が得られないことです。代わりに、これが生成されます: それはブレンドオプションの問題として私を襲いません。問題は、私には、その種の画像には、透明マスクと画像(黒い正方形)が組み込まれているため、それらを分離する必要があるということです。 そのため、カットアウト透明度が組み込まれた黒い画像の代わりに、実行時に黒い正方形に対して使用される透明度マスクを使用する必要があります。それを行うとき、私はまだ伝統的な白と黒の透明マスクを使用することができません、または同じ問題に遭遇します。次に例を示します。今回は白と黒が白と黒を表します。 解決策は、それ自体が透明度を利用する透明度マスクを適用することであると思われます。このようなもの:(緑=透明) これにより、複数の透明マスクをアルファブレンドし、黒い正方形に対する透明マスクとして使用できます。アルファブレンドされた2つの透明度マスクの例を次に示します。 とにかく、それが私が実装に取り​​組んでいるアプローチです。これが機能する場合、結果を投稿します。(現時点では)わからないのは、それ自体が透明性を持つ透明マスクを使用できるかどうかです。
12 2d  sprites  camera  lighting 


2
PBRとSSRの違いは何ですか?
私はゲーム開発に非常に慣れていないため、スクリーンスペースリフレクションと物理ベースレンダリングの違いを理解しようとしています。 私はPBRについて読みましたが、私が理解していることから、それは実際の光がどのように反射するかを模倣しようとします。 SSRに関しては、私が間違っている場合はplsで修正されます。これは、表面での反射の見え方です。 SSRの私の理解が正しい場合、それらは同じ方法ではないでしょうか?つまり、表面の粗さなどに依存する表面での反射の見え方ではありません。これは、鏡面反射する光の量と乱反射する量に影響します。繰り返しますが、間違っているところはどこでも修正してください。

1
マルチレイヤーの2Dタイルマップにライトとシャドウを実装するにはどうすればよいですか?
私は最初からアイソメトリックゲームを作成している最中です。ライトとシャドウを追加する方法や方法を知りたいのですが。 ここまでのコードはここにありますが、今のところ、マップはtrue / false値の単純な3D配列であることを知っていれば十分でしょう。これは環境のショットです: それが単一レイヤーのタイルマップである場合、それは簡単です。必要な2dの簡単なレイキャスティングを理解できます。 ただし、私のマップには複数のレベルの高さと洞窟のような領域があるため、そのために説得力のある影を作成する方法がわかりません。おそらく、ブロックごとのソリューションが唯一の現実的な方法ですか?

3
ブロックベースの2Dゲームでオクルードライティングを実装するにはどうすればよいですか?
ゲーム内オブジェクトでブロックできる2Dライティングが欲しい。私のゲームにはトップダウンビューがあり、すべてのゲームオブジェクトは長方形で表されます。 10x10の世界があり、1x1にライトを配置し、そのライトの周りに壁を配置するとします。光源が壁に遮られているため、1x1で光源を見ることができるようにしたいのですが、他の場所では光源を表示できません。 光線を当てることで効果があると聞いたことがありますが、実際にはどのように機能しますか?

1
途中で色が変わる光を実現するには?
光源と色付きの窓を作ることを考えました。現在、ウィンドウは半透明です。どのようにすれば、光(たとえば、真っ白)がガラスに当たってそれを通過しても、通過したガラスと同じ色に色が変わるようにできますか? ここで説明する効果は、ウィンドウの「色」側にエリアライトを使用することで偽造できることを知っていますが、1つの白色点ライトだけが必要な場合はどうなりますか?
11 opengl  lighting  color 

2
Table.drawDebugはlibGDXでは非推奨であるため、代わりに何を使用する必要がありますか?
私は「Learning LibGDX Game Development」の本に従ってシンプルなゲームを作成しています。私は、ステージを作成してデバッグ境界線でレンダリングするメニュー作成セクションにいます。 本は使用するように言っていますTable.drawDebug(stage)が、この静的メソッドはフレームワークTableクラスから完全に削除されたようです。 インポートしていcom.badlogic.gdx.scenes.scene2d.ui.Tableます。以下は私のコードです: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最後の行にTable.drawDebug(stage);はコンパイルエラーがあります"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the …

1
複数のライトによる高速照明
複数のライトで高速ライティングを実装するにはどうすればよいですか? プレイヤーを拘束したくありません。彼は無制限の数を配置でき、場合によっては重なっている(ポイント)ライトをレベルに配置できます。 問題は、ライティングの計算に必要な動的ループを含むシェーダーが非常に遅くなる傾向があることです。 コンパイル時にシェーダーをn回コンパイルすることが可能である場合、nはライトの数であるという考えがありました。コンパイル時に数値nがわかっている場合は、ループを自動的に展開できます。これは、異なる数のライトで同じシェーダーのnバージョンを生成することは可能ですか? 実行時に、レベルのどの部分にどのシェーダーを使用するかを決定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.