Ho avuto problemi a trovare informazioni sulle decalcomanie, quindi forse questa domanda aiuterà gli altri. L'implementazione è per un renderer forward.
Qualcuno potrebbe confermare se ho ottenuto l'implementazione della decalcomania, giusto?
- Definisci un cubo di qualsiasi dimensione che definirà il volume di proiezione nello spazio comune. Controlli l'intersezione del triangolo con il cubo definito per ricevere i triangoli che influenzeranno la proiezione.
- Taglia questi triangoli e li salvi.
- Quindi usi i trucchi con la matrice per calcolare le coordinate UV per i triangoli salvati che faranno riferimento alla trama che stai proiettando.
- Per fare questo prendi i vettori che rappresentano l'altezza, la larghezza e la profondità del cubo nello spazio comune, in modo che l'angolo in basso a sinistra sia l'origine.
- Lo metti in una matrice come vettori di unità i, j, k, imposta la traduzione per il cubo, quindi inverti questa matrice.
- Moltiplichi i vertici dei triangoli salvati per questa matrice, in questo modo ottieni le loro coordinate all'interno di un cubo di dimensioni da 0 a 1 che usi come coordinate UV.
- In questo modo hai i triangoli originali su cui stai proiettando e hai coordinate UV per loro (le coordinate UV fanno riferimento alla trama che stai proiettando).
- Quindi si esegue nuovamente il rendering dei triangoli salvati sulla scena e sovrascrivono l'area di proiezione con l'immagine proiettata.
Ora le domande per le quali non sono riuscito a trovare le risposte. L'ultimo punto è giusto? Non ho mai eseguito il clipping del software, ma sembra essere abbastanza soggetto a errori, a causa della precisione limitata, che ci sarà un po 'di combattimento z che si verifica per la trama proiettata. Inoltre, il modo di ottenere le coordinate UV è corretto?