Simulation · la 3.4, mais déformée sommet par sommet
En 3.4, le cube mou s'écrase avec un
scale. C'est un mensonge commode : un objet mou ne s'échelonne pas,
il se renfle — sa base s'aplatit contre le sol, son ventre déborde sur les côtés.
Pour ça, il faut des sommets. Mettez la découpe à 1 : le cube n'a que 8 coins, il ne peut que s'échelonner. Montez-la : le tonneau apparaît.
(v₀ × v₁) · v₂ / 6 sur tous les triangles. Puis le code corrige la
largeur de 1/√V pour le ramener à 1 exactement. En 3.4, le
1/√s suffisait parce que la forme restait une boîte ; ici le tonneau
n'a plus de formule simple, alors on mesure.
computeVertexNormals() est obligatoire après chaque déformation.
Les normales sont calculées une fois, à la construction. Bouger les sommets sans les
recalculer laisse l'éclairage de la forme au repos : le cube s'écrase et sa
lumière ne bouge pas. C'est subtil, ça a l'air d'un bug de matériau, et ça coûte des
heures.
sin(πt) :
nul en bas, nul en haut, maximal au milieu — le tonneau. C'est une caricature
convaincante, pas de la mécanique des milieux continus. Un vrai solide déformable se
calcule par éléments finis, et c'est une autre discipline.