2014-06-20 28 views
6

Fondamentalmente, ho 2 triangoli che appaiono leggermente diversi nel colore (sembra un problema di illuminazione a causa di normali non corretti). Ma non credo che questo è il caso ...Rendering poligono casella w/normali che mostrano luci/colori strani

dettagli

Ho un semplice cubo (box), in cui ogni faccia è composta da 6 vertici utilizzando un vertex buffer (non sto usando un buffer di indice al momento).

Oltre ai miei vertici ho definito i valori normali per ogni faccia.

Tuttavia, sembra che qualcosa sia leggermente sbagliato con le normali (che non credo ci siano problemi) e/o con l'illuminazione.

enter image description here

Ciascuna faccia è tracciato usando WebGl.drawArrays utilizzando TRIANGLE_STRIP. L'immagine mostra la faccia anteriore del cubo. Di seguito sono riportati i suoi vertici (si noti che l'origine è l'angolo in alto a sinistra della faccia anteriore):

  0, 1, 0, 
      0, 0, 0, 
      1, 0, 0, 

      1, 0, 0, 
      1, 1, 0, 
      0, 1, 0 

Di seguito sono le sue normali:

  0, 0, 1, 
      0, 0, 1, 
      0, 0, 1, 

      0, 0, 1, 
      0, 0, 1, 
      0, 0, 1 

Domanda

Qualche idea per cui il 1 ° triangolo è più chiaro del secondo triangolo?

+0

Probabilmente questo non risolverà il problema, ma dovresti usare TRIANGLES invece di TRIANGLE_STRIP se hai 6 vertici per faccia. Per usare TRIANGLE_STRIP hai bisogno di 4 vertici, dal tuo array sarebbero 1 °, 2 °, 3 ° e 5 ° linea. Prova a risolvere il problema dal momento che stai attualmente disegnando 4 triangoli per facciata anziché 2. –

+0

Mostraci il codice responsabile del disegno degli array. Anche se i dati normali possono sembrare corretti, può accadere che i dati passati allo shader siano errati. Condividi un po 'di codice, perché scommetterei i miei soldi su dati normali cattivi. – Elvithari

+0

@Matic. Prenderò in considerazione l'idea di andare ai triangoli. Lo uso perché desidero che il mio cubo assomigli a una finestra wireframe quando si utilizza LINE_STRIP (nessuna linea diagonale). – AlvinfromDiaspar

risposta

1

Il trucco con striscia triangolare è che ogni triangolo aggiuntivo ottiene un vertice aggiuntivo ma tre vettori normali. Immagino che tu non stia specificando abbastanza vettori normali o specificando troppi vertici.

Problemi correlati