- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo on va voir comment modéliser un toit, donc on va voir qu'avec de la programmation,avec quelques boucles, on peut très bien faire de la modélisation et automatiser là encorequelque chose qui prendrait pas mal de temps à faire à la main. Donc je vais vous montrer ce
00:00:13 :que ça donne, j'exécute le script au complet et vous voyez qu'on a un toit qui est incliné avecdu random sur chacune des tuiles et on peut bien entendu relancer ce script pour trèsfacilement et rapidement recréer un toit avec un peu plus de random, avec une inclinaisondifférente etc. Donc une fois qu'on a le script qui fait une vingtaine de lignes, vous voyez que
00:00:31 :c'est très efficace de faire par exemple des variations sur ce toit, donc là encore pour dumodeling ça peut être vraiment très efficace, vous voyez que même des gens qui sont du côtéplus artistique ont un intérêt à créer des scripts pour faciliter leur vie, parce que faireun toit comme ça à la main et faire plusieurs variations ça prendrait pas mal de temps alors
00:00:49 :que là écrire une vingtaine de lignes de code il y en a peut-être pour quinze minutes en toutet ensuite vous pouvez créer des centaines de toits différents. Donc on va voir comment faire ce
00:00:58 :toit tout de suite ensemble. Alors bien entendu vous commencez par importer mayacommons, on vaensuite importer également le module random puisqu'on va s'en servir pour incliner de façonaléatoire les tuiles. Pour faire les tuiles on va créer un polycube, donc je vais faire mc.polycube
00:01:14 :et on va directement changer le height et le width, donc le height on va mettre une hauteur de 2 etle width on va mettre 0.2. Donc ça c'est des valeurs que moi j'ai trouvées qui fonctionnaient
00:01:24 :bien pour le toit, bien sûr c'est le genre de valeur que vous pouvez tester et modifier pouravoir quelque chose de votre côté qui vous satisfait. Donc ça ça va me permettre juste de
00:01:33 :créer ici une tuile comme ça, donc une tuile qui va constituer les tuiles de mon toit. On va ensuitemettre ce mc.polycube dans une boucle pour pouvoir en créer dix et on va remettre tout ça à
00:01:44 :l'intérieur d'une autre boucle puisqu'on va créer dix tuiles sur un premier axe, donc l'axe y parexemple, et ensuite dix tuiles sur l'axe z, donc ça va nous faire une grille de cubes qui va nouspermettre de constituer le toit. Donc on va mettre tout ça dans une première boucle, on va dire pour
00:01:58 :y in range de 10, donc là on va faire sur la hauteur, on va créer dix tuiles sur la hauteuret on va également rajouter un petit peu de random directement. Donc pour ça on va utiliser le module
00:02:11 :random et la fonction uniforme qui nous permet de créer un nombre décimal aléatoire. On va le faireentre moins 10 et 10 et on va stocker ça dans une variable qu'on va appeler r tout simplement. Et
00:02:23 :cette variable on va l'utiliser ensuite pour faire un rotate. Donc je vais récupérer mon cube ici dansune variable que je vais appeler cube et on va faire un mc.rotate de 0,0 et on va faire 15
00:02:37 :plus r. Donc en fait ce qu'on va faire c'est qu'on va faire aucune rotation sur l'axe des x et des yet sur l'axe des z, donc l'axe des z c'est celui ci, on va faire une rotation de 15 degrés et on vaajouter plus ou moins 10 à cette valeur. Donc on fait 15 plus r et r c'est compris entre moins 10 et 10.
00:02:54 :Donc comme ça on va avoir une inclinaison un peu différente selon les tuiles qu'on va créer. Icivous voyez qu'on utilise mc.rotate donc mc.rotate ça va fonctionner directement sur la sélection
00:03:04 :comme notre cube aura été créé juste avant, il sera sélectionné et on n'a même pas besoin despécifier ici le nom de l'objet, ça va directement faire une rotation sur l'objet sélectionné. On
00:03:12 :pourrait spécifier le nom de l'objet, on pourrait également utiliser setAttribute pour modifierl'attribut de rotation en z. Dans ce cas ci vous voyez que j'utilise mc.rotate, bien entendu il y a
00:03:22 :plusieurs façons de faire la même chose. Tous ces cubes que l'on crée on va également les ajouterdans une liste puisqu'on va vouloir créer un groupe à la fin pour regrouper toutes les tuiles quel'on a créé. Donc je vais créer une liste au début, je vais faire une liste qui s'appelle objects qui
00:03:35 :est pour l'instant égale à une liste vide, donc on l'initialise ici et ensuite on va la remplir.Donc on va faire objects.append qui me permet d'ajouter dans une liste et on va ajouter
00:03:45 :cube et on récupère crochet 0 puisque si vous vous souvenez bien quand on fait mc.polycube çanous retourne une liste avec p.cube1 et polycube qui est la node attachée au cube. Donc nous on
00:03:54 :veut juste récupérer le nom du cube. Donc on met crochet 0 et maintenant il ne nous reste plusqu'à modifier le translate Y. Pour ça dans ce cas ci on va faire un mc.setattribute donc mc.setattr,
00:04:06 :on va spécifier qu'on veut faire donc un fstring, dans ce fstring on va insérer le nom de notrecube donc on va faire cube crochet 0 et on veut modifier le translate Y et on va lui donner unevaleur de moins Y. Y qu'est ce que c'est ? C'est tout simplement la valeur que l'on récupère ici
00:04:23 :car on boucle sur le range de 10 donc Y ça va être égal à 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 et là on metjuste moins Y. Donc en fait ce qu'on fait c'est qu'on va créer des tuiles et à chaque fois on va
00:04:32 :les déplacer de 1 ici sur l'axe des Y. Donc on va déjà tester tout ça, voir si ça fonctionne. Jesupprime ma tuile, j'exécute tout mon code et vous voyez qu'on a bien les tuiles qui sont crééesavec la rotation aléatoire donc des fois ça se rentre un petit peu dedans comme ici. On va
00:04:47 :s'accommoder de cette interpénétration entre les objets et vous voyez qu'on a déjà une premièreligne de tuiles qui est créée de façon aléatoire avec notre variable object ici qui contient tousles objets que l'on a créés. Donc maintenant il ne nous reste plus qu'à faire la même chose mais
00:05:01 :sur l'autre axe donc sur l'axe des Z et ça on va devoir le faire dix fois également ou plus doncen fonction du nombre qu'on met dans les ranges ici. Donc pour ça en fait on va refaire une boucle,
00:05:10 :on refait une boucle pour Z cette fois ci on va dire in range et je vais mettre un range de 25puisqu'on va vouloir faire un toit qui va être un peu plus long que O. Donc je refais une boucle
00:05:20 :et je vais tout simplement sélectionner tout ce code, appuyer sur tabulation pour tout déplacerà l'intérieur de cette boucle. Donc là on va juste répéter en fait 25 fois tout le code qu'on a ici.
00:05:30 :En l'état si je ne change rien, que je supprime mes tuiles et que je relance le script, on vajuste recréer 25 lignes les unes sur les autres. Donc nous c'est pas ce qu'on veut, on veut à
00:05:39 :chaque fois déplacer ces lignes sur l'axe des Z. Donc pour ça on va devoir rajouter un set attributesauf que cette fois ci je vais copier tout simplement la ligne et on va faire un set attributesur l'axe des Z et on va utiliser la valeur de Z que l'on récupère au début. Donc Z en fait ça
00:05:54 :va être égal à 0, 1, 2, 3, 4 etc donc comme pour le Y jusqu'à 25 sauf que tant qu'on vaboucler sur le Y, le Z ne va pas changer. Donc on va créer 10 tuiles à 0, ensuite on va créer 10
00:06:05 :tuiles à 1, 10 tuiles à 2, à 3, à 4 etc. Donc là normalement on a tout ce qu'il faut, il ne resteplus qu'à changer ici le "-Y", pour mettre "-Z", à la place et on a bien changé le translate Y pourle translate Z. Donc si je relance tout ça, là vous voyez qu'on a bien notre toit qui est créé,
00:06:21 :donc on a 10 tuiles comme ça qui sont avec un Z de 0, ensuite 10 tuiles avec un Z de 1, 10 tuilesavec un Z de 2 etc etc. Donc vous voyez déjà la puissance de tout ça, vraiment là on a très
00:06:32 :peu de lignes de code et on a déjà presque réussi à créer notre toit. Donc la seule chose qu'il resteà faire maintenant c'est de regrouper tout ça à l'intérieur d'un groupe, donc pour ça on va pouvoirutiliser la commande mc.group et on va lui passer notre liste d'objets que l'on a récupéré à chaque
00:06:47 :fois qu'on itérait dans la boucle. Donc cette liste ici qui va contenir tous les objets quel'on a créé. Donc on lui passe cette liste ici en premier, on donne object et on va lui donner un
00:06:56 :nom, donc on va l'appeler tout simplement Roof, et ça ça va nous permettre de créer un groupeavec tous les objets que l'on a créé. On va ensuite faire une rotation de ce groupe, donc le
00:07:05 :groupe quand on va le créer il va être automatiquement sélectionné, donc là encore on peut faire unrotate et on va faire une inclinaison de 45 degrés par exemple sur l'axe des Z. Pour finir je vais
00:07:16 :tout simplement faire un mc.selectclear="true", qui va me permettre de désélectionner tous leséléments de ma scène, donc de ne pas avoir le toit de sélectionné après l'avoir créé. Donc
00:07:25 :normalement on a tout ce qu'il faut ici, je vais exécuter le script pour voir si ça fonctionne,et vous voyez qu'on a bien donc un toit qui est créé, qui est incliné de 45 degrés avec tousles objets qui sont contenus à l'intérieur de ce groupe Roof, et le groupe est bien désélectionné
00:07:39 :à la fin du script. Donc vous voyez on n'a même pas 20 lignes de code ici, la difficulté ici c'estvraiment les deux boucles l'une dans l'autre avec le Z et le Y, ça c'est le genre de chose qui peuttrès facilement perturber les débutants et c'est vraiment avec l'expérience et les cas de figure
00:07:53 :que vous allez voir le genre de choses que vous pouvez faire avec des boucles, avec ici deuxboucles l'une dans l'autre, mais après vous voyez qu'au niveau de la création des objets ça resteassez simple, on a juste un random uniforme ici pour ajouter un petit peu d'aléatoire, mais là
00:08:06 :encore sinon c'est du polycube tout simple, un set attribute, un peu de rotate, le groupe, le select,donc voilà des opérations de base de Maya qui nous permettent de faire de la modélisation. Si
00:08:17 :jamais vous passiez ce script à un collègue vous pourriez utiliser la fonction input pour luipermettre de modifier par exemple la largeur et la hauteur du toit, on pourrait également comme onl'avait vu dans des parties précédentes spécifier ici des constantes, donc dire par exemple lengthégale à 25 et height égale à 10 et on pourrait utiliser donc ces valeurs ici à la place de 25
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.