Origami
Plier une feuille de papier en 3D, à la souris
Un simulateur de pliage temps réel en C++ et OpenGL : on trace une ligne, on attrape, on plie, le maillage suit.
- 6
- unités de compilation
- 3
- outils
- ~85 Ko
- C++
Du clic au pli
Une feuille est un maillage de triangles. Plier, c'est faire tourner une partie de ses sommets autour d'une droite — encore faut-il savoir quel point de la feuille se trouve sous le curseur.
- 01Ray-picking
Le clic devient un rayon dans la scène, intersecté avec la feuille. Tout part de ce point : sans lui, aucune des interactions suivantes n'a de sens.
- 02La ligne
Deux points tracent la droite de pli. Elle coupe le maillage, qui est re-subdivisé le long de la coupe.
- 03La charnière
Un pli retient son origine, son axe et les arêtes concernées. C'est cet état qu'on conserve, pas le maillage résultant.
- 04L'angle
Le glissé vertical de la souris devient l'angle de rotation autour de l'axe. Seuls les sommets d'un côté tournent.
- 05Le renvoi GPU
Le maillage est marqué sale quand il change vraiment ; le tampon n'est renvoyé à la carte qu'à ce moment-là, jamais à chaque image.
Chaque clic devient un rayon, intersecté avec la feuille pour obtenir un point 3D. C'est ce point qui trace les lignes, retrouve le pli le plus proche et déclenche la rotation. Le moteur signale le maillage comme sale pour que le tampon GPU ne soit renvoyé que lorsqu'il a réellement changé.
- 01Chaque clic devient un rayon, intersecté avec la feuille
- 02Un pli stocke son origine, son axe et les arêtes concernées
- 03Le glissé vertical devient un angle de rotation autour de la charnière
- 04Le maillage n'est renvoyé au GPU que lorsqu'il a vraiment changé
Du pixel au papier
Tout part du passage écran vers monde. Sans un ray-picking correct, aucune des interactions suivantes n'a de sens.