J'ai eu des problèmes pour trouver des informations sur les décalcomanies, alors peut-être que cette question aidera les autres. L'implémentation concerne un moteur de rendu direct.
Quelqu'un pourrait-il confirmer si j'ai bien appliqué la décalcomanie?
- Vous définissez un cube de n'importe quelle dimension qui définira le volume de projection dans l'espace commun. Vous vérifiez l'intersection du triangle avec le cube défini pour recevoir les triangles que la projection affectera.
- Vous coupez ces triangles et les enregistrez.
- Vous utilisez ensuite des astuces matricielles pour calculer les coordonnées UV des triangles enregistrés qui référenceront la texture que vous projetez.
- Pour ce faire, vous prenez les vecteurs représentant la hauteur, la largeur et la profondeur du cube dans l'espace commun, de sorte que le coin inférieur gauche soit l'origine.
- Vous mettez cela dans une matrice comme les vecteurs unitaires i, j, k, définissez la traduction pour le cube, puis vous inversez cette matrice.
- Vous multipliez les sommets des triangles enregistrés par cette matrice, de cette façon, vous obtenez leurs coordonnées à l'intérieur d'un cube de taille 0 à 1 que vous utilisez comme coordonnées UV.
- De cette façon, vous avez les triangles originaux sur lesquels vous projetez et vous avez des coordonnées UV pour eux (les coordonnées UV font référence à la texture que vous projetez).
- Ensuite, vous restituez les triangles enregistrés sur la scène et ils écrasent la zone de projection avec l'image projetée.
Maintenant, les questions pour lesquelles je n'ai pas pu trouver de réponses. Le dernier point est-il exact? Je n'ai jamais fait d'écrêtage logiciel, mais il semble suffisamment sujet aux erreurs, en raison de la précision limitée, que des combats z se produiront pour la texture projetée. La manière d'obtenir les coordonnées UV est-elle également correcte?