Domanda

Ho questa domanda in mente: ho bisogno di fare una scena che sembra un cielo reale. La mia prima idea era di fare un cubo e texturizzare esso. Non è stato molto bello. Mi è venuta l'idea di usare una sfera. Ma non potevo luce dall'interno. Ho messo la macchina fotografica sull'origine guardare (0,0, -100). sorgente di luce ambientale e speculare anche all'origine. non riusciva a vedere nulla illuminato! Quali sono i modi di fare un cielo e come posso illuminare l'interno di una sfera?

È stato utile?

Soluzione

Provare a cambiare la modalità di abbattimento visto che sei all'interno della sfera.

Sono un ragazzo XNA, ma sembra che questo sarebbe il OpenGL equivalente. Se si dispone di illuminazione d'ambiente come lei ha detto, si dovrebbe essere in grado di vedere qualcosa indipendentemente normali, credo.

Altri suggerimenti

lanciando le normali della sfera (più risultati di ricerca qui ). In generale motori di rendering utilizzano algoritmi per determinare ciò che non poteva essere possibilmente visto e pertanto non devono essere resi; Una di queste tecniche è Ignora lato posteriore. Sto indovinando che la sfera viene creato nel tipico modo in cui le normali proiettano fuori dalla sfera, lontano dal centro; avete bisogno dei vostri normali di fronte al senso opposto.

Se è illuminato dall'esterno, ma buio dall'interno, allora è probabilmente che le normali della sfera siano rivolte nella direzione sbagliata.

Supponendo che si sta facendo Phong / Gouraud illuminazione, il coseno tra il normale e la direzione della vista sarà calcolato da qualche parte. Il coseno sarà negativo e la scheda grafica sarà fissare a zero che si traduce in colore nero.

Quindi, se i vostri normali sono specificati in modo esplicito, si dovrebbe provare invertire la loro direzione -> si moltiplicano con -1. Se si dispone di pochi vertici e facce, si potrebbe desiderare di cambiare l'ordine dei vertici nelle facce. Basta passare due indici. (1-2-3) -> (1-3-2). Questo cambia l'ordine dal senso orario a senso antiorario (o indietro). Per verificare i risultati, è possibile passare Ignora lato posteriore e lo spegnimento e vedere cosa succede.

Problema risolto. Grazie, ma normali non sono la risposta. Io uso glutSolidSphere così normali non hanno torto. provare a utilizzare glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); che dovrebbe fare il lavoro per te.

Quando faccio un cielo cupola, contenitore di cielo, o in aereo cielo, io in realtà non è la luce. Ho appena messo una texture su di esso e renderlo.

glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
Render sky dome
glEnable(GL_LIGHTING);
glEnable(GL_CULL_FACE);

Tuttavia, il problema è che cambiando stato può essere costoso. Quindi un modo per eliminare il cambiamento di stato GL_CULL_FACE è quello di assicurarsi che i normali siano rivolte nel modo giusto. Se CULL_FACE è impostato su CCW (senso antiorario), allora le normali deve essere rivolta verso di voi. Tuttavia, se CULL_FACE è impostato su CW (in senso orario), quindi le normali devono essere rivolti lontano da voi. L'unico modo che posso vedere per eliminare il cambiamento di stato GL_LIGHTING è quello di utilizzare shader e definire il proprio sistema di illuminazione. Tuttavia, non so se questo è più o meno costosi.

Il problema Sky Box è una storia simile, ma ha altri problemi. Si può incorrere in problemi di distorsione se il vostro punto di vista, non è al centro. Quello che in genere faccio è rendere la casella cielo prima, centrata sulla fotocamera, quindi cancellare il buffer di profondità e rendere tutto il resto. In questo modo la tua casella di cielo non deve essere ridicolmente grande.

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