2009-10-06 32 views
2

嘿傢伙,我想開發一個光/激光表演編輯器和模擬器,對於這個我當然要學習一些圖形編程。我正在考慮使用C#和XNA。光/激光表演模擬器的推薦3D編程方面?

我只是想知道我應該研究或專注於圖形編程的哪些方面給予我正在進行的項目。我是圖形編程的新手,所以我不太瞭解它,但是舉個例子,我想象一下我可能會研究的東西(可能是?)是體積照明。

例如,將呈現不同寬度/顏色的「激光」的實用方法是什麼?我讀了一個地方,只是畫一個圓柱體,並應用着色器,我想確認這是方式。

鑑於這看起來像一個大項目,我正在考慮通過創建光源並給予它們屬性以便我可以輕鬆操縱它們來開始。我有(錯誤的)讀到,在任何給定的時間只有一定數量的燈可以呈現,我相信有八個。這是否僅適用於環境光?鑑於這種可能的限制,以及我將使用的大多數燈將是方向性的,例如頭燈或激光器,那麼渲染這些燈的方式會有所不同?那是什麼體積照明?

我想在深入研究之前弄清楚一些事情。由於我對此很陌生,因此我可能沒有充分利用單詞,所以如果某些東西沒有意義,請告訴我。謝謝你,對我的無知感到抱歉。

回答

1

答案取決於您在顯示模擬中需要的複雜程度。計算機圖形學最終是對光傳輸的模擬;模擬可以像計算大氣中的粒子偏轉到觀察者的視點的激光光線的分數一樣複雜,或者像繪製一條線一樣簡單。嘗試一下圓柱效應,看看它是否適用於你的項目。如果您需要更復雜的東西,請查看着色器編程(例如使用Nvidia Cg)和體積着色;後期處理髮光效果也許是有用的。對於OpenGL,我相信有8個限制?場景中的光源,但你可以想象通過自己的着色邏輯來解決這個限制。

+1

您可以通過最新的SIGGRAPH論文獲取靈感,看看是否有與照明效果相關的項目;其中一些可能也會幫助你:http://www.cs.rit.edu/~jmg/courses/procshade/20073/papers.html – RMorrisey 2009-10-06 19:19:26

1

那麼,如果它只是用於燈光秀模擬,我會想象你會需要很多自定義燈光效果 - 所以無論你決定使用XNA還是直接DirectX,你最好的選擇就是從學習着色器語言開始,如何使用它們編程各種照明效果。一旦你可以重現你想要的激光照明類型,那麼你可以嘗試用你想用來表示激光的多邊形。 (我在一些工作中使用了圓柱體方法來達到個人目的,但我不確定直筒適合您的用途)。

0

儘管速度更快,但我認爲最好不要使用香草硬件照明,因爲它的侷限性。像素着色器可以幫助你完成任務。你也可能想要選擇OpenGL,因爲可移植性和它在渲染方法上的清晰度。在切換到OpenGL之前,我在Direct3D上工作了幾年。 OpenGL函數和狀態更容易學習,並且渲染方法(如多遍渲染)非常清晰。如果你喜歡在C#上編寫代碼(我不推薦這些任務),你可以使用CsGL庫來訪問OpenGL函數。