オブジェクトは、ゲームロジック/ AIで使用するために、3Dシーンでどのように見えるの計算

StackOverflow https://stackoverflow.com/questions/924761

質問

私は文字が暗い部分に隠すことができるようになるゲームプロジェクトを始めています。暗い隅に隠れてすることは難しく、他の文字はあなたを見てのために作る必要があります。

私は必要なものの文字が配置されている場所の照明条件がどのように計算する方法です。

の理想を持っているだろう。

double getLightFactor(GameCharacter observer, GameCharacter target)

私は、光がターゲットの異なる側面がライトの異なる量でヒットしているので、落下照明条件があるかもしれないと仮定するので。 しかし、私は喜んで我慢でしょう。

double getLightFactor(GameCharacter target)

に関係なく、あなたもから見たりしている場所の特定の文字のための光を取得する

double getLightFactor(int x, int z)

ちょうど地形における特定のマップポイントで光を取得します。

この方法は、照明条件は、ゲームプレイ中に変更されることを考慮に入れる必要があるが、それはベース電源を入れているので、いくつかの重い計算が許可される可能性があります。私は、彼らが同様に考慮されなければ(しかし、彼らはモデル化して別々に処理することができる)必要があるので、懐中電灯を使用することを可能にしていきます。

(エンジンの私の選択は、石に刻まれていない)私は自分のシーンを処理するためにOgre3dを使用することになりますが、私は喜んで他のエンジンのための一般的な解決策、あるいはソリューションを受け入れます。

アイデア、論文や関連する本当に何が非常に歓迎です!

役に立ちましたか?

解決

あなただけのアカウントに現在の光の設定を取って(でもかなり低い解像度で)オフスクリーンバッファへの観察者の視点からシーンをレンダリングできます。その後、対象文字の真ん中の周りの平均輝度値を計算することができます。

私はOgre3dエンジンについてはわかりませんが、これはあなたの問題を処理するためではなく汎用的な方法でなければなりません。

(それはちょうど...後にすべての異なる視点からシーンをレンダリングです)

他のヒント

少年ああ。これはエンジンに多くを依存しています。私は2番目のオプションをしたいという今を伝えることができます。

どのように仕事を点灯するのでしょうか?それは、動的または静的ですか?のは、それが両方の組み合わせだと仮定しましょう。

静的な照明のために、近くのライトマップを確認してください。それはあなたが近くのいくつかのポイントでそれをサンプリングし、それらを平均化することができ、ベースのいずれかの頂点やテクスチャ、いずれかの方法です。グラフィックスコードに掘ると、実際にデータがどこから来る、あなたは同じソースを使用することができます参照して、エンジンがモデルのための照明を計算する方法を見てください。いくつかのゲームは、ボリュメトリックライティング情報を持って、クエイク2は、BSPツリー(チェックしやすい)にあたり、葉基づいてこれを行い、クエイク3は、(チェックすることも容易)、体積テクスチャを持っています。

次に、あなたはダイナミックライトを追加する必要があります。あなたがこれを行うことができます一つの方法は、光源に向けて(おそらく、いくつかの異なる光線は、プレイヤーのさまざまな部分から、確かに)プレーヤーからの光線を撮影しています。光がどれだけ離れているかに応じて、ヒットされているどのように多くのカウントし、それぞれのために自分の番号に少し追加します。すべてのまともなゲームエンジンは、それがのAIが視線を行うと、どのように弾丸が命中かを把握し、あなたが壁に実行したときに何が起こるかだ、「線を撮影し、それが当たったものを見る」ための手順があります。それが遅くなる可能性があるため、あまりにもあまりにも多くの光を撮影しないでください。

あなたはあまりにも多くの場合、この値を再計算する必要はない新しい光源を作成し、その後、毎秒またはされるたびに、あなたはそれを行うことができます。

環境の複雑さをによって、あなたはカンニングと地形上に重ねた2Dライトマップを使用することができます。各セルは、近くの光源に基づく光強度値を有するであろう。場所の「闇」を決定するためにアクセスするためにも、オブジェクトを移動するために計算することが速く、かつ高速になります。

あなたが持っているライトの種類に応じて、単純なボックスや円アルゴリズムを使用してその上に「スタンプ」の形に持っていることがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top