2

こんにちは、私はライト/レーザーショーエディターとシミュレーターを開発したいと思います。もちろん、このためにいくつかのグラフィックプログラミングを学びます。C#とXNAの使用を考えています。

私が取り組んでいるプロジェクトを考えると、グラフィックプログラミングのどの側面に研究または焦点を当てるべきか疑問に思っていました。私はグラフィックプログラミングに慣れていないので、それについてはあまり知りませんが、たとえば、私が調べるかもしれない何かが(おそらく?)ボリューム照明であると想像します。

たとえば、さまざまな幅/色の「レーザー」をレンダリングするための実用的な方法は何でしょうか。どこかで円柱を描いてシェーダーを適用するところを読んだのですが、これがその方法であることを確認したいと思います。

これは大きなプロジェクトのように思われるので、光源を作成し、それらを簡単に操作できるようにプロパティを与えることから始めることを考えていました。私は、一度に特定の量のライトしかレンダリングできないことを(誤)読んだことがあります。8つだと思います。これはアンビエントライトにのみ適用されますか?この考えられる制限と、ヘッドライトやレーザーなど、私が使用するライトのほとんどが指向性であるという事実を考えると、これらをレンダリングするための別の方法は何でしょうか。それは体積照明とは何でしょうか?

飛び込む前に、いくつかのことを明確にしたいと思います。私はこれに慣れていないので、おそらく言葉をうまく利用していなかったので、何か意味がない場合は私に知らせてください。私の無知に感謝し、申し訳ありません。

4

3 に答える 3

1

これに対する答えは、ディスプレイシミュレーションに必要な高度さのレベルによって異なります。コンピュータグラフィックスは、最終的には光の輸送のシミュレーションです。そのシミュレーションは、大気中の粒子によって視聴者の視点に偏向されるレーザー光の割合を計算するのと同じくらい洗練されている場合もあれば、線を引くのと同じくらい簡単な場合もあります。円柱効果を試して、プロジェクトで機能するかどうかを確認してください。より洗練されたものが必要な場合は、シェーダープログラミング(たとえば、Nvidia Cgを使用)と、前述のボリュームシェーディングを調べてください。また、後処理のグロー効果が役立つ場合があります。OpenGLの場合、8の制限があると思いますか?シーン内の光源ですが、独自のシェーディングロジックを実行することで、この制限を回避できると考えられます。

于 2009-10-06T19:13:23.760 に答える
1

ライトショーのシミュレーションだけの場合は、カスタムの照明効果がたくさん必要になると思います。XNAまたはストレートDirectXのどちらを使用する場合でも、シェーダー言語とさまざまなプログラミング方法を学ぶことから始めるのが最善の策です。それらを使用した照明効果。必要なタイプのレーザー照明を再現できたら、レーザーを表すために使用するポリゴンを試すことができます。(私は個人的な目的のために私の仕事のいくつかでシリンダー法を使用しました、しかし私はまっすぐなシリンダーがあなたの目的にどれくらいうまく合うかわかりません)。

于 2009-10-06T19:15:20.983 に答える
0

高速ですが、制限があるため、バニラハードウェア照明を使用しないのが最善だと思います。ピクセルシェーダーはあなたの仕事を助けることができます。また、移植性とレンダリング方法の明確さから、OpenGLを選択することもできます。私はOpenGLに切り替える前に、Direct3Dに数年間取り組んでいました。OpenGLの関数と状態は習得が容易であり、レンダリング方法(マルチパスレンダリングなど)は非常に明確です。C#でコーディングしたい場合(これらのタスクにはお勧めしません)、CsGLライブラリを使用してOpenGL関数にアクセスできます。

于 2009-10-06T19:20:06.600 に答える