Graphique & rendu2026En cours

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.

C++17OpenGLGLFWGLADGLMCMakevcpkg
6
unités de compilation
3
outils
~85 Ko
C++
Comment ça marche

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.

  1. 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.

  2. 02La ligne

    Deux points tracent la droite de pli. Elle coupe le maillage, qui est re-subdivisé le long de la coupe.

  3. 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.

  4. 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.

  5. 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.

Du clic au plidémo interactive
dirtySourisclic + glisserRay-pickingécran → mondeFoldEngineétat · axes · charnièresMaillagesommets + indicesRenderer GLupload si sale

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é.

En bref
  • 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é
Le point dur

Du pixel au papier

Tout part du passage écran vers monde. Sans un ray-picking correct, aucune des interactions suivantes n'a de sens.