Domanda

Ciao ragazzi, vorrei sviluppare una luce / laser show editor e il simulatore, e per questo, naturalmente, ho intenzione di imparare un po 'di programmazione grafica. Sto pensando di utilizzare C # e XNA.

Mi stavo chiedendo cosa aspetti della programmazione grafica dovrei ricerca o concentrarsi sul dato al progetto cui sto lavorando. Sono nuovo di programmazione grafica in modo da non so molto su di esso, ma per esempio immagino qualcosa che potrei guardare in farebbe ( possibilmente? ) essere l'illuminazione volumetrica.

Per esempio, quello che sarebbe un modo pratico per andare a rendere un 'laser' di varia larghezza / colore? Ho letto da qualche parte a disegnare solo un cilindro e applicare uno shader ad esso, vorrei confermare che questo è il modo.

Dato che questo mi sembra un grande progetto, stavo pensando di iniziare con la creazione di fonti di luce e dando loro proprietà in modo che io possa facilmente manipolare. Ho (mis) letto che solo una certa quantità di luce può essere reso in un dato momento, credo otto. Questo si applica solo alle luci ambiente? Data questa possibile limitazione, e il fatto che la maggior parte delle luci che è possibile usare sarà direzionali, come testa luci o laser, quale sarebbe un modo diverso di rendere questi? E 'questo che l'illuminazione volumetrica sarebbe?

Vorrei solo per ottenere alcune cose in chiaro prima di tuffarsi. Dal momento che sono nuovi a questo probabilmente non ho fatto il miglior uso delle parole, quindi se qualcosa non ha senso per favore fatemelo sapere. Grazie e scusa per la mia ignoranza.

È stato utile?

Soluzione

La risposta a questo dipende dal livello di sofisticazione che è necessario nella vostra simulazione di visualizzazione. La computer grafica è in ultima analisi, una simulazione del trasporto di luce; che la simulazione può essere sofisticato come calcolare la frazione di luce laser deviato da particelle nell'atmosfera per eyepoint dello spettatore, o semplice come disegnare una linea. Prova l'effetto cilindro e vedere se funziona per il vostro progetto. Se avete bisogno di qualcosa di più sofisticato, guardare in programmazione degli shader (usando NVIDIA Cg, per esempio), e volumetrico ombreggiatura come hai detto; anche gli effetti di post-processing ad incandescenza possono essere utili. Per OpenGL, credo che ci sia un limite di 8? fonti di luce in una scena, ma si potrebbe plausibilmente ovviare a questo limite effettuando la propria logica di ombreggiatura.

Altri suggerimenti

Beh, se è solo per spettacolo di luci simulazioni mi immagino la vostra intenzione di bisogno di un sacco di effetti di luce personalizzati - in modo a prescindere se si decide di utilizzare XNA o DirectX direttamente la soluzione migliore sarebbe quella di iniziare l'apprendimento delle lingue degli shader e come per programmare i vari effetti di luce che li utilizzano. Una volta che è possibile riprodurre il tipo di illuminazione del laser che si desidera, allora si può sperimentare con i poligoni che si desidera utilizzare per rappresentare i laser. (Ho usato il metodo cilindri in alcuni dei miei lavori per scopi personali, ma non sono sicuro di quanto bene cilindri dritto si adatta al vostro scopo).

Anche se il suo più veloce, penso che sia meglio non usare l'illuminazione Hardware vaniglia causa delle sue limitazioni. pixel shader possono aiutare con te compito. Inoltre si consiglia di scegliere OpenGL a causa della portabilità e la sua chiarezza nel rendere metodi. Ho lavorato su Direct3D per diversi anni prima di passare a OpenGL. funzioni OpenGL e gli stati sono più facili da imparare e metodi di rendering (come il rendering multi-pass) è molto chiara. Se vi piace codice su C # (che io non consiglio per questi compiti), è possibile utilizzare libreria CsGL per accedere alle funzioni di OpenGL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top