- 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 la partie précédente, on a créé un script qui nous a permis de créer plein de cubes aléatoires comme ceci.Dans cette partie, on va voir ce qu'on appelle les structures conditionnelles.
00:00:09 :C'est vraiment une autre brique de ce qu'on appelle l'algorithmie,qui va vous permettre de rajouter de la logique à l'intérieur de vos scripts.Dans ce cas-ci, ce que j'aimerais bien faire, c'est boucler sur tous les cubes que j'ai sélectionnéset supprimer uniquement les cubes qui sont en dessous de ma grille,
00:00:24 :donc les cubes dont la coordonnée en Y est négative.Pour ça, comme je vous dis, il va falloir rajouter de la logique,puisqu'on va devoir boucler sur tous les cubes qu'on a sélectionnés,récupérer la valeur en Y,et si cette valeur en Y est négative, supprimer le cube.
00:00:39 :Je vais ouvrir un nouvel onglet en faisant un clic droit New Tab.On va ouvrir un nouvel onglet de Python.On va remettre l'import au début, même si on l'a déjà effectué.
00:00:49 :J'aime bien le remettre comme ça, vous avez vraiment l'entièreté du script sous les yeux.Donc import maya.cmds azmc.On va ensuite boucler sur notre sélection.
00:00:57 :Pour ça, on utilise mc.ls et on lui passe le paramètre sl, qui est a true.Ls, c'est liste et sl, c'est selected.Donc on va lister les objets sélectionnés.
00:01:08 :Si j'exécute tout ça, vous voyez qu'on a une liste qui contient le nomde tous les objets que l'on a sélectionnés, donc dans ce cas-ci tous les cubes.
00:01:14 :On va boucler sur cette sélection.On va dire pour selected object in ma sélection.Là, si je fais un print de selected object,on va juste afficher tous les objets qui sont sélectionnés.
00:01:25 :Donc là encore on a tous les cubes que l'on a sélectionnés.Je vous conseille par la même occasion de mettre des noms explicites pour vos variables.
00:01:32 :Si vous mettez i par exemple ici, c'est pas très explicite,on sait pas i à quoi ça fait référence.Si je mets object selected, ou comme j'avais mis selected object plutôt,là quelqu'un qui lit votre script clairement comprend de quoi il s'agit,sans même avoir besoin de savoir à quoi correspond cette ligne de code ici.
00:01:47 :Donc là on a récupéré l'objet sélectionné,et on va pouvoir récupérer sa valeur en y.Donc sa valeur, la coordonnée en y.Pour ça on va utiliser getAttribute cette fois-ci,qui est l'opposé de setAttribute.
00:01:58 :Et on va passer dans une fString,selectedObject, donc entre acollades comme ceci,donc selectedObject.translate y.Et on va récupérer tout ça dans une variable que je vais appeler y.
00:02:10 :Si j'affiche y avec un print,normalement on devrait voir afficher icitoutes les valeurs en y de nos cubes qu'on a de sélectionnées.Donc je vais en sélectionner un peu moins,je vais en sélectionner un premier ici et un deuxième ici.
00:02:22 :Donc un cube en haut et un cube en dessous.J'exécute tout ça, et là vous voyez qu'on a bien une coordonnée qui est positive,donc qui est la coordonnée du premier cube,et une coordonnée négative, donc la coordonnée du deuxième cube.
00:02:33 :On va pouvoir ici donc faire une vérification.Pour ça on va utiliser l'instruction if,donc qui veut dire si en anglais.Vous allez voir vraiment qu'avec Python c'est vraiment le gros avantage,c'est que ça se lit vraiment comme de la littérature.
00:02:44 :Presque que si on traduit en fait chaque mot,ça fait un texte que l'on comprend tout de suite.Donc là on va dire en fait si la coordonnée en y est plus petite que 0,alors, et donc là on va à la ligne,on retrouve les deux points et l'indentation,
00:02:57 :comme je vous disais avec Maya elle se met automatiquement.Et donc à l'intérieur de ce bloc ici,on va exécuter la commande delete,et on va lui dire qu'on veut supprimer le selected object.
00:03:07 :Donc on dit si y est plus petit que 0,deux points à la ligne, tabulation ici,mc.deleteSelectedObject.Je reprends mes deux cubes, donc celui-là et celui-là,j'exécute mon script, et là on a bien le deuxième cube qui a été supprimé.
00:03:22 :Donc vous voyez à quel point c'est vraiment très facile,juste un mot ici, la condition,et si cette condition est vérifiée, on exécute cette ligne de code.
00:03:29 :Si je veux inverser la condition, je vais mettre plus grand que ici,je réexécute tout ça, et là c'est bien le cube au-dessus de 0 qui a été supprimé.
00:03:36 :Je peux refaire le test avec tous les cubes sélectionnés,et là hop, directement avec quatre lignes de code,on a supprimé tous les cubes qui étaient au-dessus en Y,et là vous voyez qu'on n'a pas supprimé les cubes qui avaient une coordonnée en Yqui était égale à 0, donc pour ça on peut spécifier un peu plus,
00:03:52 :on peut dire supérieur ou égal à 0, et si je relance tout,on va supprimer également les cubes qui ont une coordonnée de 0.Donc là si je reviens ici, celui-là ne doit pas avoir une coordonnée de 0,on va aller voir dans le attribute editor, ou dans le channel box,
00:04:05 :et vous voyez qu'en Y il a 0.0024,donc il n'est pas exactement à 0, on pourrait mettre un petit peu moins,on pourrait mettre supérieur ou égal à "-0.5", par exemple,
00:04:16 :et là on supprimerait ce cube.Donc voilà pour une condition très simple, je vais remettre ici mon supérieur à 0pour garder quelque chose d'un peu plus facile à comprendre,et on va voir également qu'on peut faire d'autres conditions à la suite.
00:04:28 :Donc là on a dit que si Y est plus grand que 0, on supprime,et on peut mettre d'autres conditions avec un elif.On va dire elif Y plus petit que 0 cette fois-ci,donc si Y est plus petit que 0, qu'est-ce qu'on fait ?
00:04:40 :Et dans ce cas-ci on pourrait dire, si c'est plus petit que 0,on va faire un setAttribute de selectedObject,donc en tracolade, selectedObject.translateY,je vais dézoomer un petit peu pour que vous voyez quelque chose,et cette fois-ci on va le remettre à 0.
00:04:54 :Donc si la coordonnée en Y est plus petite que 0,on remet la coordonnée en Y à 0 avec le setAttribute.Donc là on a deux conditions qui sont reliées les unes aux autres,puisqu'on a if et elif, on pourrait mettre deux conditions à la suite,mais dans ce cas-ci elles seraient complètement indépendantes l'une de l'autre.
00:05:08 :Si on met un elif, ça veut dire que si cette condition est vérifiée,si Y est plus grand que 0, on va supprimer le cube,et on ne va pas tester cette deuxième condition.
00:05:16 :Par contre si cette première condition n'est pas vérifiée,on va passer à la deuxième, et on pourrait avoir une troisième conditionavec un deuxième elif ici, et tester d'autres conditions comme ça.
00:05:25 :Donc là je vais exécuter ces deux lignes de code,en sélectionnant tous mes cubes,et vous allez voir que pour les cubes supérieurs à 0, on va les supprimer,et inférieurs à 0, on va les remettre à 0 sur l'axe d'Y.
00:05:36 :Donc là vous voyez qu'on a deux conditions qui fonctionnent.On a un dernier élément avec les structures conditionnelles, c'est le else.Donc on pourrait dire en fait ici else,et dans ce cas-ci on n'a pas vraiment de cas de figure où ça pourrait être le cas,puisque s'il n'est pas supérieur à 0 ou inférieur à 0,
00:05:51 :en fait il y a juste le cas de figure dans ce cas-ci où on aurait des cubesavec une coordonnée précise de 0 qui serait détectée.
00:05:57 :Donc par exemple ici je vais faire un print de selected object,et on va prendre un cube et on va lui mettre sa coordonnée en Y à 0,pour qu'on ait quand même un cube qui ait ce cas de figure.
00:06:07 :Donc je sélectionne tout ça. Pour les cubes supérieurs à 0,on va les supprimer. Les cubes qui sont plus petits que 0 en Y,on va remettre leur translate Y à 0.
00:06:16 :Et les cubes qui ne sont pas dans ce cas de figure ou ce cas de figure,donc ça veut dire les cubes dont la coordonnée en Y est égale à 0,on va tout simplement les afficher.
00:06:25 :Donc je vais effacer un petit peu tout ce qu'on a ici pour voir si ça fonctionne.Je relance, et là on a bien le P cube 50 qui est affiché,et le cube que l'on a modifié et que l'on a mis à 0 en Y.
00:06:34 :Donc là vous avez vraiment une structure conditionnelle complèteavec un IF, un ELIF et un ELSE.Le ELSE n'est pas obligatoire, vous voyez on peut très bien ne pas le mettre.
00:06:43 :Le ELSE va juste récupérer tous les cas de figure qui n'ont pas été géréspar les IF ou les ELIF. On a forcément un premier IF au début,
00:06:49 :on n'est pas obligé d'avoir des ELIF ou des ELSE,donc vous voyez qu'on peut juste faire ça. Ensuite on peut avoir plusieurs ELIF,donc plusieurs ELIF qui pourraient tester plusieurs conditions.
00:06:58 :Et on a le ELSE qui va récupérer toutes les conditions qui n'ont pas été récupéréesau préalable. Donc vous voyez qu'avec les structures conditionnelleset les boucles, on a tout ce qui va nous servirà faire la logique de nos programmes. Et vraiment,
00:07:10 :il n'y a pas grand chose de plus. Tout le reste que vous allez voiravec Python, ça va être différentes façons de faireun script un peu plus optimisé, qui va être rangé différemmentavec des fonctions, avec de l'orienté objet, donc des choses un peu plus avancéesqui vous permettent notamment d'éviter de répéter du code.
00:07:25 :Mais au niveau de la logique, c'est vraiment ces deux éléments qui vont vous permettred'automatiser des tâches et d'avoir une logiquedans votre code en disant si cette condition est vraie,alors tu fais ça, sinon tu fais ça. Et si aucune de ces conditions
00:07:37 :n'est vérifiée, eh bien tu fais autre chose. Donc entraînez-vousavec ça. Comme je vous disais, là encore, je vous montre la théorie.De votre côté, prenez ces exemples. Essayez de faire
00:07:46 :des choses de votre côté avec des IF, des ELIF et des ELSEavec différents types de conditions. Et dans les prochaines parties,là encore, on va avoir d'autres exercices qui vont vous permettre de voircomment on peut utiliser les boucles et les conditions pour faire des scriptsun peu plus intéressants.
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.