2012-10-18 17 views
5

Sto lavorando su scene interattive per un corso di computer grafica. Ho impostato un programma che genererà cubi di colore e consentirò di ruotarli con la tastiera. Tuttavia stanno ottenendo tagliato aperta dal piano di riquadro nei pressi della mia macchina fotografica:OpenGL Near Clip Plane

Color cubes being clipped

ho provato ad usare gluPerspective, ma la documentazione OpenGL non fornisce alcuna esempi del suo utilizzo. L'ho trovato utilizzato in un programma di esempio online e semi-replicato il loro codice:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(65, 1, 0.01, 100); 
glMatrixMode(GL_MODELVIEW); 

Qualche idea?

UPDATE: Come suggerito nei commenti qui sotto, ho provato ad utilizzare glFrustum invece, con il seguente codice:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustum(-0.5, 0.5, -0.5, 0.5, 0.1, 100); 
glMatrixMode(GL_MODELVIEW); 

Anche in questo caso, non c'era alcuna differenza. Non sto spingendo correttamente le matrici risultanti o qualcosa del genere?

+1

Stai seguendo un corso di grafica computazionale che prevede la proiezione prospettica e non parlano del piano vicino alla clip? –

+1

Forse è necessario spostare gli oggetti un po 'più lontano dalla fotocamera. In questo momento sembra che siano usciti più vicini che 0.0 – Kromster

+0

Come Krom ha dichiarato o aggiustato la vista Frustum – CStreel

risposta

2

Forse è necessario spostare gli oggetti un po 'più lontano dalla fotocamera. In questo momento sembra che siano più vicini di 0.0.

Considerando il tuo aggiornamento "Ho spostato i cubi di un'intera unità lontano dalla videocamera, e ora mentre ruotano vengono tagliati da entrambi i piani vicino e lontano" i cubi potrebbero essere troppo grandi per la profondità di ritaglio (100 - 0.1). Spostare i cubi lontano dalla fotocamera per 50 e impostare i piani di ritaglio su 0.1 .. 1000 per assicurarsi che tutto si adatti.

Se il problema persiste, potrebbe essere necessario esaminare il codice delle matrici.

+0

I miei cubi vengono creati dalla seguente matrice di punti: 'point4 vertici [8] = { point4 (-0.5, -0.5, 0.5, 1.0), point4 (-0.5, 0.5, 0.5, 1.0), point4 (0.5, 0.5, 0.5, 1.0), point4 (0.5, -0.5, 0.5, 1.0), point4 (-0.5, -0.5, -0.5, 1.0), point4 (-0.5, 0.5, -0.5, 1.0), point4 (0.5, 0.5, -0.5, 1.0), point4 (0.5, -0.5, -0.5, 1.0) }; ' sono posizionati a (-0.75, 0, 0) e (0.75, 0, 0) rispettivamente, (-0.75, 0, 1) e (0.75, 0, 1) dopo che li ho spostati più lontano dalla telecamera – Nick

+1

Sai che quando un cubo è posizionato a -1 e ruotato di 45 gradi i suoi bordi sono 1,41 di distanza m è al centro e dovrebbe essere tagliato? – Kromster

+0

Capisco che parte dell'immagine sarà fuori campo e dovrebbe essere ritagliata, ma è così visibile e puoi vedere all'interno dei cubi. Per non parlare del piano di clip lontano sta tagliando le cose pure. Se voglio avere una scena reale, non avrà un bell'aspetto.Nulla di ciò che cambio nella chiamata a glFrustum o gluPerspective sembra stia cambiando qualcosa, quindi non credo di usarli correttamente. Come li usate? – Nick