ライト/レーザー ショー シミュレーターに推奨される 3D プログラミングの側面は?

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

  •  20-09-2019
  •  | 
  •  

質問

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

私は、現在取り組んでいるプロジェクトを考慮して、グラフィックス プログラミングのどの側面を研究または焦点を当てるべきなのか疑問に思っていました。私はグラフィックス プログラミングの初心者なのでよくわかりませんが、たとえば、次のことを検討すると想像します (もしかして?) ボリューム照明であること。

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

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

本題に入る前に、いくつかのことを明確にしておきたいと思います。初めてなので言葉の使い方がうまくできていないかもしれませんが、意味が分からないところがあれば教えてください。ありがとう、そして私の無知をお詫びします。

役に立ちましたか?

解決

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

他のヒント

それは光のショーシミュレーションのためだけだまあ場合は、

私はあなたがカスタム照明効果の多くを必要として想像する - これに関係なく、あなたがXNAやストレートのDirectXを使用することを決定した場合、あなたの最善の策は、シェーダ言語を学び、どのようにして開始することですそれらを使用して、さまざまな照明効果をプログラムします。あなたが欲しいレーザー照明の種類を再現することができたら、あなたは、あなたがレーザーを表現するために使用したいポリゴンを試すことができます。 (私は個人的な目的のために私の仕事の一部でシリンダー法を使用しましたが、私はまっすぐにシリンダーがあなたの目的に適合しますどれだけわからない)。

その速いが、私は、その制限のバニラハードウェアの照明を使用しないように最善を考えます。ピクセルシェーダは、あなたのタスクを支援することができます。また、あなたはので、移植性とレンダリング方法でその明快さのOpenGLを選びましたすることができます。私は、OpenGLに切り替える前に、数年間のDirect3Dに取り組みました。 OpenGLの機能と状態は学ぶことが容易であり、(マルチパスレンダリングなど)のレンダリング方法たくさん明らかです。あなたは(私はこれらのタスクのためにお勧めいけない)C#でコーディングしたい場合は、OpenGLの機能にアクセスするためにCSGLライブラリを使用することができます。

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