Logo Spiria

Comment animer un cube en rotation en 4D

30 octobre 2015.
  J’ai créé l’animation ci-dessus à l’aide de Houdini,  mon progiciel de modélisation préféré. Fait intéressant, Houdini n’offre pas de soutien particulier pour les modèles 4D, donc j’ai dû improviser. Cet article explique comment je m’y suis pris.

 

J’ai créé l’animation ci-dessus à l’aide de Houdini,  mon progiciel de modélisation préféré. Fait intéressant, Houdini n’offre pas de soutien particulier pour les modèles 4D, donc j’ai dû improviser. Cet article explique comment je m’y suis pris.

Modélisation

Un cube en 3D compte 2^3=8 sommets, alors qu’un cube en 4D en compte 2^4=16. Pour obtenir tous ces sommets, il suffit de créer deux cubes :

decorative

Pour un cube en 3D, la façon habituelle de représenter la distance des sommets sur l’axe Z est de jouer sur la perspective, c’est-à-dire de prendre les points les plus éloignés sur l’axe Z et de réduire l’échelle pour les rapprocher du centre de l’écran 2D. On procède de la même façon pour un cube en 4D : pour représenter la distance des sommets sur le quatrième axe (appelons-le F), prenez les points les plus éloignés sur l’axe F et réduisez l’échelle pour les rapprocher du centre de l’écran 3D. C’est pour cela que j’ai créé le deuxième cube à plus petite échelle dans l’image ci-dessus.

Dans cette image, j’ai réduit l’échelle du deuxième cube au hasard. Mais, pour créer une animation réelle, je devrais réduire l’échelle proportionnellement à la distance des points sur l’axe F. Pour cela, il faudra d’abord donner une coordonnée 4D exacte à chaque point sur l’axe F. Dans Houdini, il est facile d’ajouter des attributs aux sommets grâce au nœud AttributeCreate. Pour l’instant, assignons une valeur arbitraire de F=+0,5 à l’un des cubes et F=‑0,5 à l’autre. Après l’exécution de la rotation, je traduirai les valeurs du cube d’environ F=0,0 à F=10,0 afin que le cube au complet se trouve devant l’axe F de la caméra, et je diviserai les coordonnées X, Y et Z de chaque sommet par la coordonnée F afin d’obtenir un point 3D.

Maintenant,  j’aimerais faire tourner le cube en 4D. Mais qu’est-ce que ça veut dire exactement, faire tourner en quatre dimensions? Nous sommes habitués à appréhender la rotation autour d’un axe défini, car en 3D, cet axe est perpendiculaire à un seul plan. Mais en 2D,  la rotation est bien définie même s’il n’y a pas d’axe de rotation comme tel,  et donc la rotation dans un espace n‑D ne s’articulera pas autour d’une ligne. En fait, la rotation exige la modification de coordonnées sur deux axes perpendiculaires, sans toucher aux autres axes perpendiculaires. En 4D, l’on tourne autour de 2 axes sur 4 sans toucher aux deux autres axes. Prenons le plan XF.

S’il a été facile d’insérer l’attribut supplémentaire F dans Houdini, celui-ci interprète ces attributs supplémentaires comme des données plutôt que comme de nouvelles dimensions. C’est pourquoi le nœud XForm ne peut tourner qu’autour des plans XY, XZ ou YZ. Voici donc le truc pour résoudre le problème : d’abord, permutez les coordonnées F et Y; ensuite, effectuez la rotation sur le plan XY; enfin, permutez à nouveau les coordonnées F et Y. Puisque les axes Z et F (qui retiennent temporairement les coordonnées Y) n’ont pas été touchées par la rotation, les coordonnées Z et Y ne seront pas touchées par l’opération, comme s’il s’était agi d’une vraie rotation sur le plan XF.

Tada! Avec quelques faces supplémentaires et un peu de peinture bleue translucide, nous obtenons un hypercube en rotation en 4D.