Le unités de mesure des logiciels
Par Narann le samedi, 11 août 2018, 22:43 - Infographie 3D - Boulot - Lien permanent
Un billet pour expliquer un truc assez bête mais qui fait perdre la tête à pas mal de gens tant il est obscur. Je vais parler de la notion d’unité de mesure dans les logiciels, ou pourquoi elle n’aurait peut-être jamais dû exister. :grenadelauncher:
En début de production on tente souvent de se mettre d’accord sur un référentiel de mesure. La grande question est : « Quelle distance fait 1 ? », C’est-à-dire, quand un objet se déplace de 1 dans mon logiciel, à combien cela correspond-il dans le monde réel ? :gne:
Avant de rentrer dans le vif du sujet, voici un topo rapide des différents référentiels d’unité utilisés.
1 Unité = 1 mètre
Cette mesure permet de gérer de grands espaces mais fait souvent pester l’équipe modeling props qui, dans le cas d’un projet manipulant des dimensions de taille humaine, va se retrouver avec des 0.15, 0.47, etc pour dimensionner ses objets.
1 Unité = 1 centimètre
Cette mesure, pratique pour l’équipe modeling devient délirante lors de décors de plusieurs km. 1 km = 100 000 cm… À même pas 500 m vous risquez d’avoir des erreurs dû à la perte de précision des chiffres flottants dans les grandes valeurs (en version courte : Plus le chiffre avant la virgule est grand, moins il y a de place pour le chiffre après la virgule :reflechi: ).
Le meilleur des deux mondes ?
Un référentiel que j’ai souvent observé et qui est un bon compromis est 1 unité du logiciel = 10 cm dans le monde réel (1 dm).
Ça permet d’avoir un bon équilibre entre des unités proches de ce qui est manipulable par les humains, 1 mètre du monde réel correspondant à 10 unités, et des unités larges de décor.
Chouette ! On va tous configurer nos logiciels !
Et bim ! Dans le panneau ! :hehe:
La chose à comprendre est que, dans de nombreux cas, les nombres sont stockés sans référentiel. Ainsi, si vous avez un Alembic avec un cube de 1 sur 1, il est impossible de dire s’il s’agit de mètres ou de centimètres. C’est juste un cube de 1 sur 1.
Alors forcement, vous me répondez : « Bah si ! J’ai dit à mes équipes que 1 unité = 1 m, donc le cube est à 1 m. »
Vous en êtes sur ? :hihi:
- Ouvrez votre Maya
- Passez l’unité de mesure en mètre (Dans Preferences/Settings, voir image)
- Faites un cube de 1 sur 1
- Exportez-le en Alembic
Si vous aviez les capacités d’inspecter les valeurs à l’intérieur de votre Alembic, vous verriez… 100 sur 100.
« Mais pourquoi ?! :injures: » me demandez-vous ? Après tout, vous avez créé un cube de 1 sur 1, pas de 100 sur 100, vous l’avez vu, de vos yeux vu ce « 1 ». :casseTeteMur:
Et bien tout simplement parce que l’unité native de Maya c’est le centimètre. :youplaBoum:
Si vous le réimportez dans Maya (configuré en mètre), il fera 1 sur 1, bien que les valeurs stockées soit 100 sur 100.
On a donc quelque chose d’assez déroutant et un peu dangereux : Si vous modifiez la mesure par defaut, les unités vues ne sont pas les unités stockées. Ainsi, si vous faites un décor de 1 000 m, vous aurez des soucis de précision, car les valeurs stockées dans l’Alembic et la géométrie seront en fait beaucoup plus importantes.
Vous l’aurez compris, dans Maya, 1 unité est toujours égale a 1 cm, le reste, ce n’est que de l’affichage. Dès que vous changez la mesure, vous entrez dans des prises de tête sans fin entre vos graphistes : « Mais puisque je te dis que j’ai exporté un cube de 1 sur 1 regarde ! Là dans Maya c’est 1 sur 1 ! C’est ton logiciel qui fait n’importe quoi en important un cube de 100 sur 100 ! Faut que t’appelles le support ! Moi c’est bon et toi t’as tort ! ». Vous voyez le genre. :perplex:
Quand on quitte son unité native, Maya créé aussi toutes sortes de nœuds unitConversion, et bon nombre de valeurs par défaut deviennent absurdes.
Ne touchez à rien !
La plupart des logiciels gèrent très mal les unités de mesure qui ne sont pas les leur. Il est donc conseillé de ne jamais toucher aux unités de mesure native d’un logiciel, par contre, il faut connaître la différence de référentiel entre les logiciels car, devinez quoi ?… Il n’y a pas de standard dans l’industrie ! :smileFou:
Par exemple :
- L’unité native de Maya est le cm (1 unité dans Maya, vaut 1 cm dans le monde réel).
- L’unité native de Houdini est le m (1 unité dans Houdini, vaut 1 m dans le monde réel).
(Tu sens la prod qui va très bien se passer. :slow_clap: )
Ça implique une chose : Toujours avoir en tête à quoi correspond « 1 » quand on le voit dans les Alembics, les AOV de position, les fichiers textes de position, etc. En gros, combien vaut une distance de « 1 » dans les données que vous produisez.
Il vaut mieux penser les unités comme des données et non comme des mesures, chaque logiciel ayant sa propre façon de percevoir cette unité.
En pratique, Houdini ingurgite principalement des Alembics :
- Vous mettez un nœud de scale après votre nœud de lecture Alembic (récupération de l’animation)
- Vous mettez un nœud de scale inversé avant votre nœud d’écriture d’Alembic (livraison des FX)
Et vous êtes tranquille. :petrus:
Notez que vous pouvez gérer l’unité de mesure de Houdini dans les préférences : Hip File Options. Il y est précisé que seul certains paramètres des DOPs (Dynamic OPerators) semble se soucier de l’unité de mesure. :redface:
C’est donc souvent autour de Maya que les choses tournent. Quand vous vous dites « 1 unité = 1 trucomètre », pensez « 1 cm Maya (mesure native) = 1 trucomètre ».
Houdini va pouvoir se débrouiller et bien souvent le problème viendra des logiciels qui fabriquent des objets en dehors de Maya (ZBrush, etc.). Une fois dans Maya ses objets permettront de définir la différence de référentiel par rapport à Maya (et donc, la différence de référentiel par rapport à votre unité).
TL;PL : Laissez Maya dans son unité de mesure native et travaillez comme si 1 unité Maya = 10 cm.
:marioCours: