[{"data":1,"prerenderedAt":9282},["ShallowReactive",2],{"tag-count-blender-fr":3,"tag-blender-fr":4,"tags-sidebar-fr":18,"posts-tag-blender-fr-1":76,"tags-header-fr":9238,"tags-footer-fr":9260},15,{"id":5,"title":6,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":10,"meta":11,"navigation":12,"pageType":13,"path":14,"seo":15,"slug":10,"stem":16,"__hash__":17},"jsonPages/fr/tags/blender.json","Blender",null,"json","fr","blender",{"name":6},true,"tags","/fr/tags/blender",{},"fr/tags/blender","u-xLCehv_Ilq2anh5_cFS1bx4PNMvys14B7kvQ884Uo",[19,22,31,40,49,58,67],{"id":5,"title":6,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":10,"meta":20,"navigation":12,"pageType":13,"path":14,"seo":21,"slug":10,"stem":16,"__hash__":17},{"name":6},{},{"id":23,"title":24,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":25,"meta":26,"navigation":12,"pageType":13,"path":27,"seo":28,"slug":25,"stem":29,"__hash__":30},"jsonPages/fr/tags/company.json","Entreprise","entreprise",{"name":24},"/fr/tags/company",{},"fr/tags/company","ZnxcgShl8j1LrB9lNissqyDBBv-M0IQ1UTvfM9VA7uA",{"id":32,"title":33,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":34,"meta":35,"navigation":12,"pageType":13,"path":36,"seo":37,"slug":34,"stem":38,"__hash__":39},"jsonPages/fr/tags/customer-stories.json","Témoignages Clients","temoignages-clients",{"name":33},"/fr/tags/customer-stories",{},"fr/tags/customer-stories","PkwpZviQy6qvOrnpkoEf2r_jEdZHBRpm0_3YomqKBrQ",{"id":41,"title":42,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":43,"meta":44,"navigation":12,"pageType":13,"path":45,"seo":46,"slug":43,"stem":47,"__hash__":48},"jsonPages/fr/tags/glossary.json","Glossaire","glossaire",{"name":42},"/fr/tags/glossary",{},"fr/tags/glossary","1cqZB0j3SRYa-cITb-b3kMPlofRoQawI2W7KdpahrzQ",{"id":50,"title":51,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":52,"meta":53,"navigation":12,"pageType":13,"path":54,"seo":55,"slug":52,"stem":56,"__hash__":57},"jsonPages/fr/tags/pipeline.json","Pipeline","pipeline",{"name":51},"/fr/tags/pipeline",{},"fr/tags/pipeline","kfaZYlzFQKfsv4EziXrMBjLDHb768UBv6eNirJ3oRNo",{"id":59,"title":60,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":61,"meta":62,"navigation":12,"pageType":13,"path":63,"seo":64,"slug":61,"stem":65,"__hash__":66},"jsonPages/fr/tags/production-management.json","Gestion de Production","gestion-de-production",{"name":60},"/fr/tags/production-management",{},"fr/tags/production-management","olfUuTcaQuuPL2oXUqUxC1V-VMiQ6_de80ZdQsDJpp8",{"id":68,"title":69,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":70,"meta":71,"navigation":12,"pageType":13,"path":72,"seo":73,"slug":70,"stem":74,"__hash__":75},"jsonPages/fr/tags/resources.json","Ressources Animation","ressources",{"name":69},"/fr/tags/resources",{},"fr/tags/resources","4ipa755g5-wReMgNYNc3YBVdop1OSilM_6y3UCpoFyI",[77,641,1436,1936,2654,3260,3984,4824,5564,6030,6550,7402,7968,8372,8652],{"id":78,"title":79,"authors":80,"body":86,"description":243,"extension":621,"feature_image":622,"html":7,"meta":623,"navigation":12,"path":627,"published_at":628,"seo":629,"slug":630,"stem":631,"tags":632,"__hash__":640,"updated_at":624,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/self-hosted-blender-render-farm/index.md","Héberger soi-même un render farm Blender avec Flamenco en 2026",[81],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},"630632b2ca5910003d4a70af","Basile Samel","basile","https://blog.cg-wire.com/author/basile/",{"type":87,"value":88,"toc":610},"minimark",[89,106,110,113,116,119,122,135,138,143,146,158,170,177,184,186,190,198,204,207,209,213,216,232,249,251,255,280,283,293,296,304,306,310,316,319,322,330,336,338,342,345,375,385,390,409,412,421,423,427,430,436,447,450,488,498,504,522,524,527,537,540,553,555,559,565,568,571,574,581,599],[90,91,96,101],"div",{"className":92},[93,94,95],"kg-card","kg-callout-card","kg-callout-card-yellow",[90,97,100],{"className":98},[99],"kg-callout-emoji","🖥️",[90,102,105],{"className":103},[104],"kg-callout-text","Transformez des machines inutilisées en un puissant render farm Blender sans toucher au cloud.",[107,108,109],"p",{},"Quand est-ce que vous avez presque manqué une échéance à cause du rendu, pour la dernière fois ?",[107,111,112],{},"À chaque fois que vous ouvrez Blender, votre station de travail ressemble à un moteur d’avion en préparation du décollage, et tout le film valant des mois de travail se retrouve pris en otage par une seule barre de progression.",[107,114,115],{},"Pendant ce temps, votre vieux PC portable de l’université est rangé dans une boîte, à prendre la poussière. Ce n’est pas une bête de course, mais il a un GPU. Il a de la RAM. C’est un ordinateur parfaitement fonctionnel qui ne fait absolument rien pendant que vous paniquez.",[107,117,118],{},"Le concept de « render farm » peut sembler intimidant pour un studio à une seule personne. Vous imaginez peut-être des racks de serveurs dans une pièce climatisée, des licences coûteuses et des professionnels de l’IT qui s’alarment en hurlant au sujet des adresses IP.",[107,120,121],{},"Mais dans l’écosystème Blender moderne, ce n’est plus la réalité.",[107,123,124,125,134],{},"Dans cet article, ",[126,127,128,129,133],"strong",{},"je vais vous montrer comment transformer de vieux appareils en un système de rendu unifié grâce à ",[130,131,132],"em",{},"Flamenco","."," Nous allons rendre la configuration réseau beaucoup plus simple et vous faire produire vos rendus sur plusieurs machines en quelques heures.",[136,137],"hr",{},[139,140,142],"h2",{"id":141},"why-self-host-a-render-farm","Pourquoi s’auto-héberger un render farm ?",[107,144,145],{},"Avant de brancher des câbles Ethernet, parlons du « pourquoi ». Vous pourriez vous dire : « Pourquoi ne pas tout envoyer simplement à un render farm cloud ? » Les render farms cloud sont incroyables, mais avoir un render farm local auto-hébergé change votre workflow de trois façons fondamentales.",[107,147,148,149,154,155],{},"Quand vous payez un render farm cloud, vous payez la sortie finale. ",[150,151,153],"a",{"href":152},"https://blog.cg-wire.com/blender-kitsu-low-res-preview/","Ce qui vous décourage psychologiquement de faire des tests de rendu",". ",[126,156,157],{},"Vous avez peur de cliquer sur « Render » tant que vous n’êtes pas à 100 % certain que tout est parfait.",[107,159,160,161,165,166,169],{},"Quand vous possédez le render farm, le coût d’un rendu, c’est l’électricité. ",[150,162,164],{"href":163},"https://blog.cg-wire.com/getting-started-with-blender-rendering/","Vous pouvez rendre une animation approximative"," en résolution à 50 % pour vérifier le timing ou l’éclairage. ",[126,167,168],{},"Cette liberté vous permet d’itérer plus vite."," Vous arrêtez d’hésiter et vous commencez à tester.",[107,171,172,173,176],{},"Parfois, travailler sur un projet commercial pour un client tech avec un NDA est tellement strict que vous n’êtes même pas autorisé à prononcer ne serait-ce que le nom du produit. ",[126,174,175],{},"Le fait de téléverser ces assets sur un serveur cloud tiers — même sécurisé — peut parfois enfreindre des clauses strictes du NDA."," Garder vos données sur votre réseau local (LAN) garantit qu’aucun pixel ne quitte votre studio tant que vous ne l’avez pas décidé.",[107,178,179,180,183],{},"Il y a un type bien particulier d’angoisse à téléverser un fichier de projet de 2 Go dans le cloud, à attendre le rendu, à télécharger les images, puis à se rendre compte que vous avez oublié d’« en bucher » un cache de physique. ",[126,181,182],{},"Avec un render farm local comme Flamenco, si vous repérez une erreur, vous cliquez simplement sur « Cancel », vous corrigez, puis vous cliquez à nouveau sur « Render ». Pas de temps de téléversement, pas de temps de téléchargement."," On a l’impression que c’est une extension de votre station de travail.",[136,185],{},[139,187,189],{"id":188},"what-is-blender-flamenco","Qu’est-ce que Blender Flamenco ?",[107,191,192,193,197],{},"Configurer un render farm à partir de zéro ",[150,194,196],{"href":195},"https://blog.cg-wire.com/blender-programmatic-rendering/","impliquait autrefois du scripting complexe"," ou des logiciels tiers coûteux. Maintenant, nous avons Blender Flamenco.",[107,199,200,203],{},[126,201,202],{},"Flamenco est le render farm open-source de Blender."," La mise en place est extrêmement simple : le manager est le cerveau qui détient la liste des tâches (les frames à rendre) et indique aux autres ordinateurs quoi faire. Les workers sont vos ordinateurs portables ou bureaux supplémentaires. Ils écoutent le Manager, demandent une frame, la rendent, la sauvegardent, puis demandent la suivante.",[107,205,206],{},"Flamenco est conçu pour être « zéro configuration ». Il se découvre quasiment tout seul sur votre réseau. Si vous pouvez installer Blender, vous pouvez configurer Flamenco.",[136,208],{},[139,210,212],{"id":211},"_1-the-setup","1. La configuration",[107,214,215],{},"Pour ce tutoriel, nous commençons avec la configuration la plus simple possible : notre ordinateur de bureau agit à la fois comme manager et comme worker. Nous verrons plus tard comment ajouter notre ordinateur portable.",[217,218,219,226],"ol",{},[220,221,222,225],"li",{},[126,223,224],{},"Installer Blender"," - Assurez-vous que Blender est installé sur votre ordinateur.",[220,227,228,231],{},[126,229,230],{},"Télécharger Flamenco"," - Allez sur le site de Flamenco et téléchargez le package pour votre système d’exploitation. Décompressez-le dans un dossier.",[233,234,237],"figure",{"className":235},[93,236],"kg-image-card",[238,239],"img",{"src":240,"className":241,"alt":243,"loading":244,"width":245,"height":246,"srcSet":247,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png",[242],"kg-image","","lazy",1064,721,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 1064w","(min-width: 720px) 720px",[136,250],{},[139,252,254],{"id":253},"_2-run-flamenco-manager","2. Lancer Flamenco Manager",[217,256,257,260,267,270,273],{},[220,258,259],{},"Ouvrez le dossier Flamenco que vous venez d’extraire.",[220,261,262,263,133],{},"Double-cliquez sur ",[264,265,266],"code",{},"flamenco-manager",[220,268,269],{},"Une fenêtre de terminal s’ouvrira avec des logs de texte.",[220,271,272],{},"Suivez l’assistant de configuration pour définir le dossier de job dans lequel vous téléverserez vos fichiers .blend à rendre.",[220,274,275,276,279],{},"Peu après, votre navigateur web devrait s’ouvrir automatiquement sur ",[264,277,278],{},"http://localhost:8080",". C’est l’interface web de Flamenco.",[107,281,282],{},"Si vous voyez un tableau de bord convivial en thème sombre, félicitations. Vous êtes déjà à moitié administrateur de serveur. Le Manager est en vie.",[233,284,286],{"className":285},[93,236],[238,287],{"src":288,"className":289,"alt":243,"loading":244,"width":290,"height":291,"srcSet":292,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png",[242],1319,821,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 1319w",[107,294,295],{},"Le manager vous demandera de télécharger l’addon. Faites-le maintenant, car nous en aurons besoin à l’étape 4.",[233,297,299],{"className":298},[93,236],[238,300],{"src":301,"className":302,"alt":243,"loading":244,"width":245,"height":246,"srcSet":303,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 1064w",[136,305],{},[139,307,309],{"id":308},"_3-the-worker","3. Le Worker",[107,311,312,313,133],{},"Maintenant, laissez le manager en cours et double-cliquez sur ",[264,314,315],{},"flamenco-worker",[107,317,318],{},"C’est tout.",[107,320,321],{},"Le Worker va analyser votre réseau local, trouver le Manager en cours d’exécution sur le même ordinateur, puis se présenter. Si vous regardez le navigateur web de votre Desktop (l’interface du Manager), vous devriez le voir apparaître dans l’onglet « Workers », listé comme « Idle » et prêt à entrer en action.",[233,323,325],{"className":324},[93,236],[238,326],{"src":327,"className":328,"alt":243,"loading":244,"width":290,"height":291,"srcSet":329,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 1319w",[107,331,332,333,335],{},"Vous devriez aussi lancer ",[264,334,315],{}," sur votre Desktop ! Votre ordinateur principal peut rendre et gérer en même temps.",[136,337],{},[139,339,341],{"id":340},"_4-add-the-blend-file-and-render","4. Ajouter le fichier Blend et lancer le rendu",[107,343,344],{},"La scène est prête. Maintenant, on passe à l’action !",[217,346,347,353,359,365],{},[220,348,349,352],{},[126,350,351],{},"Ouvrez Blender"," sur votre Desktop.",[220,354,355,358],{},[126,356,357],{},"Activez l’Addon"," - Allez dans Edit > Preferences > Add-ons > Install from Disk. Recherchez le fichier zip flamenco que vous avez téléchargé pendant la configuration du manager.",[220,360,361,364],{},[126,362,363],{},"Lier le Manager"," - Dans les préférences de l’addon Flamenco, copiez/collez l’adresse URL du manager.",[220,366,367,370,371,374],{},[126,368,369],{},"Enregistrez votre fichier"," - Enregistrez votre fichier ",[264,372,373],{},".blend"," dans le dossier de job configuré.",[233,376,378],{"className":377},[93,236],[238,379],{"src":380,"className":381,"alt":243,"loading":244,"width":382,"height":383,"srcSet":384,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png",[242],724,732,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png 600w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png 724w",[107,386,387,388,133],{},"Dans l’onglet Render Properties de Blender, descendez jusqu’au panneau ",[126,389,132],{},[217,391,392,398,404],{},[220,393,394,395,133],{},"Cliquez sur ",[126,396,397],{},"« Fetch Job Types »",[220,399,400,401,133],{},"Sélectionnez ",[126,402,403],{},"« Simple Render »",[220,405,394,406,133],{},[126,407,408],{},"« Submit to Flamenco »",[107,410,411],{},"Maintenant, basculez vers votre navigateur web. Vous verrez le job apparaître. Les barres d’état dans votre liste « Workers » passeront au vert. Votre Desktop récupère une frame à la fois pour la rendre.",[233,413,415],{"className":414},[93,236],[238,416],{"src":417,"className":418,"alt":243,"loading":244,"width":290,"height":419,"srcSet":420,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png",[242],918,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 1319w",[136,422],{},[139,424,426],{"id":425},"_5-bringing-in-the-laptop","5. Ajouter l’ordinateur portable",[107,428,429],{},"Maintenant, il est temps d’ajouter votre ordinateur portable poussiéreux au render farm.",[107,431,432,433],{},"Voici le conseil le plus directement actionnable que je puisse vous donner, et c’est là que 90 % des débutants se trompent : ",[126,434,435],{},"Tous les ordinateurs doivent voir les fichiers exactement au même endroit.",[107,437,438,439,442,443,446],{},"Si votre texture est située à ",[264,440,441],{},"C:\\Users\\Dave\\Texture.png"," sur votre desktop, votre ordinateur portable ",[130,444,445],{},"ne peut pas"," accéder à ce chemin. Le portable n’a pas d’utilisateur nommé Dave, et il n’a pas le fichier sur son disque C.",[107,448,449],{},"Vous avez besoin d’un dossier réseau partagé, typiquement via un NAS. Selon votre système d’exploitation, les étapes sont similaires, mais peuvent légèrement différer :",[217,451,452,455,461,475],{},[220,453,454],{},"Connectez votre desktop et votre ordinateur portable via un câble Ethernet",[220,456,457,458,133],{},"Créez un dossier NAS sur votre Desktop appelé ",[264,459,460],{},"RenderFarm",[220,462,463,464,467,468,467,471,474],{},"Clic droit dessus > ",[126,465,466],{},"Propriétés"," > ",[126,469,470],{},"Partage",[126,472,473],{},"Partager",". Donnez les permissions de lecture/écriture à votre utilisateur.",[220,476,477,480,481,484,485,487],{},[126,478,479],{},"Associez le lecteur réseau :"," Sur votre Desktop, associez ce dossier à une lettre de lecteur, par exemple ",[264,482,483],{},"Z:",". Sur votre Laptop, allez dans le partage réseau du Desktop et associez-le à **la même lettre ",[264,486,483],{},"**.",[107,489,490,491,494,495,497],{},"Maintenant, lorsque vous enregistrez votre fichier Blender dans ",[264,492,493],{},"Z:\\RenderFarm\\MyProject.blend",", les deux ordinateurs le voient à ",[264,496,493],{},". Le chemin est absolu et identique.",[107,499,500,501,133],{},"Laissez maintenant le Desktop en cours d’exécution et passez sur ",[126,502,503],{},"Computer B (Laptop)",[217,505,506,512,515,518],{},[220,507,508,509,511],{},"Assurez-vous que votre lecteur ",[264,510,483],{}," (ou le stockage partagé que vous avez configuré) est accessible. Ouvrez un fichier dedans pour vérifier.",[220,513,514],{},"Installez et ouvrez le dossier Flamenco sur l’ordinateur portable.",[220,516,517],{},"Vérifiez que vous avez la même version de Blender installée que sur votre desktop.",[220,519,262,520,133],{},[264,521,315],{},[107,523,318],{},[107,525,526],{},"Le Worker analysera votre réseau local et trouvera le Manager lancé sur le Desktop.",[233,528,530],{"className":529},[93,236],[238,531],{"src":532,"className":533,"alt":243,"loading":244,"width":534,"height":535,"srcSet":536,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png",[242],1504,932,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 1504w",[107,538,539],{},"Flamenco va maintenant orchestrer automatiquement les jobs entre vos ordinateurs.",[107,541,542,543,547,548,552],{},"Si vous n’avez pas accès à un NAS ou ne souhaitez pas en acheter un, vous pouvez regarder comment installer un serveur Samba gratuit sur un poste Linux. L’utilisation d’un stockage cloud n’est pas possible car Flamenco ne gère pas les services asynchrones, sauf si vous créez votre propre type de job. Nous verrons comment faire ",[150,544,546],{"href":545},"https://blog.cg-wire.com/","dans un futur article",", en utilisant Kitsu comme ",[150,549,551],{"href":550},"https://blog.cg-wire.com/animation-asset-storage/","serveur de stockage d’assets"," asynchrone.",[136,554],{},[139,556,558],{"id":557},"conclusion-knowing-when-to-scale","Conclusion : savoir quand étendre",[107,560,561,562],{},"Nous avons couvert la configuration matérielle, la logique cruciale du stockage partagé, ainsi que l’installation du logiciel. Si vous avez suivi, ",[126,563,564],{},"vous avez maintenant un render farm fonctionnel chez vous, et votre ordinateur portable poussiéreux est devenu un membre productif de votre équipe.",[107,566,567],{},"Flamenco rend l’entrée vers le rendu auto-hébergé incroyablement simple. Il respecte votre vie privée, ne coûte rien à part l’électricité, et vous permet d’extraire chaque once de performance du matériel que vous possédez déjà.",[107,569,570],{},"Mais il y a une limite à ce que vous pouvez accomplir seul.",[107,572,573],{},"À un moment, vous rencontrerez une échéance où même la combinaison Desktop + Laptop ne suffit plus. Peut-être que vous devez rendre une séquence 4K avec de lourds volumetrics en 24 heures, et que votre render farm à la maison estime un temps de complétion de 3 semaines. C’est le plafond de l’auto-hébergement.",[107,575,576,577,580],{},"Quand vous atteignez ce mur, vous n’avez pas besoin d’acheter cinq ordinateurs de plus. ",[126,578,579],{},"C’est là que vous passez à un service comme Ranch Computing",", qui vous permet d’accéder instantanément à des centaines de nœuds CPU/GPU. Votre render farm maison est un excellent outil du quotidien, parfait pour les tests, les prévisualisations et les projets plus légers, tandis qu’un render farm cloud est indispensable pour rendre rapidement des livrables de haute qualité pour vos clients.",[90,582,584,588],{"className":583},[93,94,95],[90,585,587],{"className":586},[99],"📽️",[90,589,591,592,598],{"className":590},[104],"Pour en savoir plus sur le processus d’animation ",[150,593,597],{"href":594,"rel":595},"https://www.cg-wire.com/community?ref=blog.cg-wire.com",[596],"noreferrer","pensez à rejoindre notre communauté Discord"," ! Nous échangeons avec plus d’un millier d’experts qui partagent les meilleures pratiques et organisent parfois des événements en personne. Nous serions ravis de vous accueillir ! 😊",[90,600,604],{"className":601},[93,602,603],"kg-button-card","kg-align-center",[150,605,609],{"href":594,"className":606},[607,608],"kg-btn","kg-btn-accent","Rejoignez notre communauté Discord",{"title":243,"searchDepth":611,"depth":611,"links":612},2,[613,614,615,616,617,618,619,620],{"id":141,"depth":611,"text":142},{"id":188,"depth":611,"text":189},{"id":211,"depth":611,"text":212},{"id":253,"depth":611,"text":254},{"id":308,"depth":611,"text":309},{"id":340,"depth":611,"text":341},{"id":425,"depth":611,"text":426},{"id":557,"depth":611,"text":558},"md","https://images.unsplash.com/photo-1683322499436-f4383dd59f5a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGRhdGElMjBjZW50ZXJ8ZW58MHx8fHwxNzY3NjE4NDAxfDA&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":624,"featured_at":625,"visibility":626},"2026-02-20T06:04:52.000+01:00","false","public","/blog-i18n/fr/self-hosted-blender-render-farm","2026-01-19T10:00:41.000+01:00",{"title":79,"description":243},"self-hosted-blender-render-farm","blog-i18n/fr/self-hosted-blender-render-farm/index",[633,637],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},"5fff0e54653a0c003924f7f2","Pipeline Automation","https://blog.cg-wire.com/tag/pipeline/",{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"69c20ddbcb09d8000107cfe5","https://blog.cg-wire.com/tag/blender/","H5V9WqFCtuEBqT5IyPlJeObvFfs168gOv0RQbKgwtpI",{"id":642,"title":643,"authors":644,"body":646,"description":243,"extension":621,"feature_image":1424,"html":7,"meta":1425,"navigation":12,"path":1427,"published_at":1428,"seo":1429,"slug":1430,"stem":1431,"tags":1432,"__hash__":1435,"updated_at":1426,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-shaders-explained/index.md","Travailler avec les shaders Blender (2026) : Nodes & scripting",[645],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":647,"toc":1406},[648,659,666,669,672,678,680,686,689,699,704,727,730,745,755,757,763,766,769,772,779,794,801,804,806,812,819,828,835,838,876,882,885,893,899,902,940,946,949,969,975,978,1004,1010,1013,1039,1045,1048,1074,1080,1083,1091,1097,1100,1114,1116,1122,1129,1132,1135,1167,1174,1177,1200,1203,1227,1230,1264,1268,1271,1316,1319,1329,1335,1345,1347,1353,1360,1371,1385,1399],[90,649,651,655],{"className":650},[93,94,95],[90,652,654],{"className":653},[99],"🎨",[90,656,658],{"className":657},[104],"Les shaders ne sont pas de la magie : ce sont des recettes visuelles que vous pouvez contrôler et automatiser.",[107,660,661,662,665],{},"La première fois que vous entendez le mot ",[130,663,664],{},"shader",", il est facile de paniquer. Quelqu’un mentionne GLSL, les GPU se mettent à transpirer, et vous imaginez soudain des murs de code illisible pendant que le ventilateur de votre ordinateur hurle, demandant grâce.",[107,667,668],{},"oVoici la partie que personne ne vous dit assez tôt : vous n’avez pas besoin d’être mathématicien ou programmeur en informatique graphique pour utiliser des shaders. On ne vous demande pas d’écrire du code GPU bas niveau, ni de comprendre toutes les équations derrière la physique de la lumière. Blender n’attend pas cela de vous. À la place, il vous donne des nœuds : des briques visuelles qui ressemblent plus à du Lego qu’à du code. Vous assemblez les éléments, vous voyez le résultat instantanément, puis vous ajustez jusqu’à ce que ça vous semble juste.",[107,670,671],{},"Pensez aux shaders moins comme du code et plus comme des recettes. Vous mélangez des valeurs, des textures et de la logique pour décrire comment une surface doit réagir à la lumière. Parfois, vous suivrez une recette connue, parfois vous improviserez, et parfois vous casserez des choses juste pour voir ce qui se passe. C’est comme ça que vous apprendrez.",[107,673,674,677],{},[126,675,676],{},"Dans cet article, nous allons démystifier ce qu’est réellement l’ombrage, enlever la peur qui l’entoure, et explorer comment manipuler les shaders de manière procédurale avec le système de nœuds de Blender ou, un peu, avec du scripting pour une chaîne de production d’animation."," À la fin, l’ombrage ne ressemblera plus à une pièce interdite.",[136,679],{},[139,681,683],{"id":682},"whats-a-shader",[126,684,685],{},"Qu’est-ce qu’un Shader ?",[107,687,688],{},"Pour comprendre les shaders, il faut arrêter de penser aux « couleurs » et commencer à penser à la « physique ».",[107,690,691,698],{},[150,692,694],{"href":693},"https://blog.cg-wire.com/hard-surface-modeling/",[695,696,697],"u",{},"Si vous peignez une chaise en bois en rouge dans le monde réel",", vous ne changez pas seulement sa couleur. Vous ajoutez une couche de matériau qui interagit avec la lumière. Cette peinture rouge possède une rugosité spécifique (dans quelle mesure elle diffuse la lumière), une spécularité spécifique (à quel point elle est brillante) et un indice de réfraction spécifique.",[107,700,701],{},[126,702,703],{},"Un shader est un ensemble d’instructions qui dit à l’ordinateur comment simuler cette interaction avec la lumière.",[233,705,708,715],{"className":706},[93,236,707],"kg-card-hascaption",[238,709],{"src":710,"className":711,"alt":243,"loading":244,"width":712,"height":713,"srcSet":714,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png",[242],1600,1067,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 1600w",[716,717,718],"figcaption",{},[719,720,721],"i",{},[130,722,726],{"className":723,"style":725},[724],"italic","white-space: pre-wrap;","Source : TurboSquid",[107,728,729],{},"Quand un rayon de lumière issu de votre soleil numérique frappe la surface de votre objet, le shader intervient et demande :",[731,732,733,736,739,742],"ul",{},[220,734,735],{},"« Vous réfléchissez ? » (Réflexion)",[220,737,738],{},"« Vous traversez ? » (Transmission/Verre)",[220,740,741],{},"« Vous vous faites piéger à l’intérieur ? » (Absorption)",[220,743,744],{},"« Vous diffusez sous la peau ? » (Subsurface Scattering)",[107,746,747,748],{},"Si vous modélisez une rue pavée mouillée, une simple texture image la fait ressembler à une photo plate d’une rue. Un shader indique au moteur de rendu que l’eau dans les fissures est parfaitement réfléchissante et lisse, tandis que la pierre est rugueuse et terne. Il dit à la lumière de rebondir différemment sur les parties mouillées que sur les parties sèches.",[150,749,751,752],{"href":750},"https://blog.cg-wire.com/how-light-shapes-emotion-in-animation/"," ",[695,753,754],{},"La lumière façonne la réalité.",[136,756],{},[139,758,760],{"id":759},"why-you-must-master-shader-nodes",[126,761,762],{},"Pourquoi Vous Devez Maîtriser les Nodes de Shader",[107,764,765],{},"Vous pourriez vous demander : « Pourquoi ne pas simplement télécharger des textures ? »",[107,767,768],{},"La numérisation de photos est excellente, mais le shading procédural offre trois super-pouvoirs que des images fixes ne peuvent pas égaler.",[107,770,771],{},"Quand vous utilisez une texture image (JPG ou PNG), vous êtes limité par les pixels. Si vous zoomez trop près d’un mur, elle devient floue.",[107,773,774,775,778],{},"Les shaders utilisent les mathématiques. ",[126,776,777],{},"Les mathématiques n’ont aucune limite de résolution."," Vous pouvez zoomer sur une rayure procédurale dans le métal jusqu’à voir les micro-reliefs, et cela restera net. Même si vous avez un modèle dont vous êtes fier, avec une topologie propre et de belles proportions, il aura quand même l’air plat sans shaders.",[107,780,781,782,785,786,789,790,793],{},"Les nodes de shader de Blender rendent le ",[126,783,784],{},"fait d’ajuster vos textures de manière cohérente"," incroyablement simple. Prenons un exemple : vous texturez un vaisseau spatial. Vous appliquez de la rouille sur la coque à l’aide d’une texture. Votre directeur artistique arrive et dit : « D’accord, mais le vaisseau a l’air trop vieux. Réduis la rouille de 50 %. » Si vous l’avez peinte à la main, vous devez tout recommencer ou passer des heures à effacer. Avec les nodes de shader, vous repérez simplement la valeur « Rust Amount » que vous avez créée, puis vous la faites passer de ",[264,787,788],{},"1.0"," à ",[264,791,792],{},"0.5",". C’est fait.",[107,795,796,797,800],{},"Les textures statiques donnent une impression figée, mais ",[126,798,799],{},"les shaders peuvent aussi être animés",". Vous pouvez construire un setup de shader où de la mousse pousse sur une roche au fil du temps en fonction du numéro de frame, ou bien un bouclier qui s’illumine davantage quand il se fait toucher. Les shaders permettent à vos matériaux de réagir à l’environnement.",[107,802,803],{},"Pour toutes ces raisons, apprendre à maîtriser les nodes de shader est un énorme levier pour les artistes professionnels qui ont des délais serrés.",[136,805],{},[139,807,809],{"id":808},"the-different-types-of-shader-nodes",[126,810,811],{},"Les Différents Types de Nodes de Shader",[107,813,814,815,818],{},"Le système de nœuds de Blender fonctionne comme un organigramme. Vous cliquez sur ",[264,816,817],{},"Add"," pour ajouter des nœuds et les relier entre eux. Les données circulent de gauche à droite. Pour exploiter chaque fonctionnalité, vous devez comprendre les différents types de nœuds disponibles.",[233,820,822],{"className":821},[93,236],[238,823],{"src":824,"className":825,"alt":243,"loading":244,"width":712,"height":826,"srcSet":827,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png",[242],900,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 1600w",[829,830,832],"h3",{"id":831},"_1-input-nodes",[126,833,834],{},"1. Nodes d’entrée",[107,836,837],{},"Les nodes d’entrée fournissent des données depuis la scène, l’objet, la géométrie ou des valeurs définies par l’utilisateur, vers le réseau de shader.",[731,839,840,846,852,858,864,870],{},[220,841,842,845],{},[126,843,844],{},"Texture Coordinate"," - Fournit les coordonnées UV, objet, générées et caméra + utilisez la sortie UV pour mapper correctement une texture image sur un modèle déplié en UV",[220,847,848,851],{},[126,849,850],{},"Geometry"," - Donne des informations géométriques comme les normales et l’« aspect pointu » + utilisez Pointiness pour créer une accumulation de saleté dans les creux",[220,853,854,857],{},[126,855,856],{},"Fresnel"," - Calcule la réflectivité basée sur l’angle de vue + utilisez-le pour créer des réflexions plus fortes sur les bords du verre",[220,859,860,863],{},[126,861,862],{},"Object Info"," - Fournit des données par objet comme des valeurs aléatoires ou la couleur de l’objet + utilisez la sortie Random pour donner à chaque objet une couleur légèrement différente",[220,865,866,869],{},[126,867,868],{},"Value"," - Sort une valeur numérique constante + utilisez-la pour contrôler la rugosité avec un seul curseur",[220,871,872,875],{},[126,873,874],{},"Color"," - Sort une valeur de couleur constante + utilisez-la comme couleur de base pour un matériau stylisé",[829,877,879],{"id":878},"_2-output-nodes",[126,880,881],{},"2. Nodes de sortie",[107,883,884],{},"Les nodes de sortie définissent le résultat final d’un shader et connectent le réseau de nœuds au système de rendu de Blender.",[731,886,887],{},[220,888,889,892],{},[126,890,891],{},"Material Output"," - Sort les données finales de surface, de volume et de displacement + connectez un Principled BSDF à l’entrée Surface",[829,894,896],{"id":895},"_3-shader-nodes",[126,897,898],{},"3. Nodes de shader",[107,900,901],{},"Les nodes de shader définissent comment la lumière interagit avec une surface, y compris la réflexion, la réfraction et l’émission.",[731,903,904,910,916,922,928,934],{},[220,905,906,909],{},[126,907,908],{},"Principled BSDF"," - Shader de surface tout-en-un basé sur la physique + créez des matériaux réalistes en métal, plastique ou peau",[220,911,912,915],{},[126,913,914],{},"Diffuse BSDF"," - Produit des surfaces mates et non réfléchissantes + utilisez-le pour la craie, l’argile ou la pierre non polie",[220,917,918,921],{},[126,919,920],{},"Glossy BSDF"," - Produit des réflexions comme un miroir + utilisez-le pour le métal poli ou des miroirs",[220,923,924,927],{},[126,925,926],{},"Glass BSDF"," - Combine réfraction et réflexion + utilisez-le pour des fenêtres ou des bouteilles en verre",[220,929,930,933],{},[126,931,932],{},"Emission"," - Émet de la lumière depuis une surface + utilisez-le pour des écrans, des LED ou des enseignes néon",[220,935,936,939],{},[126,937,938],{},"Mix Shader"," - Mélange deux sorties de shader + mélangez des shaders diffuse et glossy pour du métal usé",[829,941,943],{"id":942},"_4-displacement-nodes",[126,944,945],{},"4. Nodes de displacement",[107,947,948],{},"Les nodes de displacement modifient le détail de la surface en agissant sur la géométrie ou sur les normales d’ombrage.",[731,950,951,957,963],{},[220,952,953,956],{},[126,954,955],{},"Displacement"," - Réalise un vrai déplacement géométrique + créez une profondeur réelle dans un mur en briques grâce à une height map (Cycles)",[220,958,959,962],{},[126,960,961],{},"Bump"," - Simule le détail de surface via une perturbation des normales + ajoutez de fines rayures sans augmenter la géométrie",[220,964,965,968],{},[126,966,967],{},"Normal Map"," - Convertit des textures de normales en données de normales utilisables + appliquez une normal map cuite depuis un asset de jeu",[829,970,972],{"id":971},"_5-color-nodes",[126,973,974],{},"5. Nodes de couleur",[107,976,977],{},"Les nodes de couleur ajustent, mélangent et transforment l’information de couleur au sein du réseau de shader.",[731,979,980,986,992,998],{},[220,981,982,985],{},[126,983,984],{},"Mix Color"," - Mélange deux couleurs ou textures + mélangez une texture de saleté sur une couleur de base propre",[220,987,988,991],{},[126,989,990],{},"RGB Curves"," - Ajuste le contraste et l’équilibre des couleurs + augmentez le contraste de la texture sans retoucher l’image",[220,993,994,997],{},[126,995,996],{},"Hue/Saturation"," - Modifie la teinte, la saturation et la valeur + teintez un matériau en bleu sans repeindre les textures",[220,999,1000,1003],{},[126,1001,1002],{},"Invert"," - Inverse les valeurs de couleur + inversez une map de rugosité pour créer une map de brillance",[829,1005,1007],{"id":1006},"_6-texture-nodes",[126,1008,1009],{},"6. Nodes de texture",[107,1011,1012],{},"Les nodes de texture génèrent ou chargent des images et des textures procédurales pour les matériaux.",[731,1014,1015,1021,1027,1033],{},[220,1016,1017,1020],{},[126,1018,1019],{},"Image Texture"," - Charge des fichiers d’image externes + utilisez une albedo map pour un matériau PBR",[220,1022,1023,1026],{},[126,1024,1025],{},"Noise Texture"," - Génère un bruit procédural lisse + ajoutez une variation subtile de rugosité au plastique",[220,1028,1029,1032],{},[126,1030,1031],{},"Voronoi Texture"," - Produit des motifs basés sur des cellules + créez des fissures, des échelles ou des dalles de pierre",[220,1034,1035,1038],{},[126,1036,1037],{},"Gradient Texture"," - Sort des dégradés lisses + utilisez-les comme masque pour mélanger des matériaux",[829,1040,1042],{"id":1041},"_7-utility-nodes",[126,1043,1044],{},"7. Nodes utilitaires",[107,1046,1047],{},"Les nodes utilitaires réalisent des opérations mathématiques et des conversions de données.",[731,1049,1050,1056,1062,1068],{},[220,1051,1052,1055],{},[126,1053,1054],{},"Mapping"," - Transforme les coordonnées de texture + met à l’échelle et fait tourner un motif de texture",[220,1057,1058,1061],{},[126,1059,1060],{},"Math"," - Effectue des opérations numériques + limite les valeurs de rugosité pour éviter les extrêmes",[220,1063,1064,1067],{},[126,1065,1066],{},"Vector Math"," - Réalise des calculs basés sur les vecteurs + modifie les vecteurs de normales ou de direction",[220,1069,1070,1073],{},[126,1071,1072],{},"Clamp"," - Limite les valeurs à une plage donnée + évite les valeurs d’émission trop lumineuses",[829,1075,1077],{"id":1076},"_8-group-nodes",[126,1078,1079],{},"8. Nodes de groupe",[107,1081,1082],{},"Les nodes de groupe emballent plusieurs nœuds dans des composants réutilisables et organisés.",[731,1084,1085],{},[220,1086,1087,1090],{},[126,1088,1089],{},"Node Group"," - Encapsule des setups de nœuds complexes + créez un « Rust Shader » réutilisable utilisé sur plusieurs assets",[829,1092,1094],{"id":1093},"_9-layout-nodes",[126,1095,1096],{},"9. Nodes de mise en page",[107,1098,1099],{},"Les nodes de mise en page organisent le graphe de nœuds visuellement et n’affectent pas le rendu.",[731,1101,1102,1108],{},[220,1103,1104,1107],{},[126,1105,1106],{},"Frame"," - Regroupe visuellement les nœuds liés + cadre tous les nœuds liés aux textures ensemble",[220,1109,1110,1113],{},[126,1111,1112],{},"Reroute"," - Redirige les connexions de nœuds pour plus de clarté + nettoie les connexions enchevêtrées",[136,1115],{},[139,1117,1119],{"id":1118},"the-next-level-scripting-your-shaders",[126,1120,1121],{},"Niveau supérieur : Scripter vos shaders",[107,1123,1124,1125,1128],{},"Quand vous êtes à l’aise pour connecter les nœuds manuellement, vous pouvez créer du bois, du plastique, de l’or, ou n’importe quel type de matériau. Mais ",[126,1126,1127],{},"et si vous avez une scène avec 500 objets uniques, et que vous devez générer une variation aléatoire"," d’un matériau métallique usé pour chacun, avec quelques ajustements ?",[107,1130,1131],{},"C’est là que le scripting Python devient essentiel. Vous pouvez l’utiliser pour vous assurer que chaque matériau de votre projet suit la même structure de nœuds. Vous pouvez écrire un script qui dit : « Rendez ce matériau rouge, mais faites varier légèrement la teinte avec un nombre aléatoire pour chaque objet. »",[107,1133,1134],{},"Passons à l’action. Nous allons écrire un script Python qui crée un nouveau matériau, ajoute un Principled BSDF, génère une texture de bruit pour contrôler la couleur, puis connecte tout ensemble.",[90,1136,1139,1143],{"className":1137},[93,94,1138],"kg-callout-card-blue",[90,1140,1142],{"className":1141},[99],"💡",[90,1144,1146,1152,1155,1157,1158,1160,1162,1163],{"className":1145},[104],[1147,1148,1149],"b",{},[126,1150,1151],{"style":725},"Vous cherchez des exemples fonctionnels ?",[1153,1154],"br",{},[1153,1156],{},"Vous pouvez trouver le code source complet de l’exemple d’intégration présenté dans ce guide sur notre GitHub :",[1153,1159],{},[1153,1161],{},"🔗 ",[150,1164,1166],{"href":1165},"https://github.com/cgwire/blog-tutorials/tree/main/blender-shaders?ref=blog.cg-wire.com","https://github.com/cgwire/blog-tutorials/tree/main/blender-shaders",[107,1168,1169,1170,1173],{},"Ouvrez l’onglet ",[130,1171,1172],{},"Scripting"," dans Blender, créez un nouveau bloc de texte, puis suivez.",[107,1175,1176],{},"D’abord, nous devons importer la bibliothèque et indiquer à Blender que nous voulons créer un nouveau matériau.",[1178,1179,1180,1194],"pre",{},[264,1181,1184,1185,1188,1191],{"className":1182},[1183],"language-python","import random\n",[107,1186,1187],{},"import bpy",[107,1189,1190],{},"def create_procedural_material(mat_name):\n    mat = bpy.data.materials.new(name=mat_name)",[107,1192,1193],{},"    mat.use_nodes = True\n    nodes = mat.node_tree.nodes\n    links = mat.node_tree.links",[107,1195,1196],{},[264,1197,1199],{"className":1198},[1183],"    nodes.clear()",[107,1201,1202],{},"Maintenant, ajoutons les nœuds. Pensez-y comme si vous sortiez des éléments du menu « Add », mais de façon programmatique :",[1178,1204,1205,1212],{},[264,1206,1208,1209],{"className":1207},[1183],"    node_output = nodes.new(type='ShaderNodeOutputMaterial')\n    node_output.location = (400, 0)",[107,1210,1211],{},"    node_principled = nodes.new(type='ShaderNodeBsdfPrincipled')\n    node_principled.location = (0, 0)",[107,1213,1214],{},[264,1215,1217,1218,1222,1223,1226],{"className":1216},[1183],"    node_principled.inputs",[1219,1220,1221],"span",{},"'Roughness'",".default_value = 0.2\n    node_principled.inputs",[1219,1224,1225],{},"'Metallic'",".default_value = 1.0",[107,1228,1229],{},"Maintenant, rendons-le intéressant. Nous allons ajouter une Noise Texture et une ColorRamp pour générer un motif de couleur aléatoire.",[1178,1231,1232,1254],{},[264,1233,1235,1236,1239,1240,1243,1244,1247],{"className":1234},[1183],"node_noise = nodes.new(type='ShaderNodeTexNoise')\n    node_noise.location = (-600, 0)\n    node_noise.inputs",[1219,1237,1238],{},"'Scale'",".default_value = 15.0\n    node_noise.inputs",[1219,1241,1242],{},"'Detail'",".default_value = 10.0",[107,1245,1246],{},"    node_ramp = nodes.new(type='ShaderNodeValToRGB')\n    node_ramp.location = (-300, 0)",[107,1248,1249,1250,1253],{},"    node_ramp.color_ramp.elements",[1219,1251,1252],{},"0",".color = (0.1, 0.1, 0.1, 1)",[107,1255,1256],{},[264,1257,1259,1260,1263],{"className":1258},[1183],"    rand_r = random.random()\n    rand_g = random.random()\n    rand_b = random.random()\n    node_ramp.color_ramp.elements",[1219,1261,1262],{},"1",".color = (rand_r, rand_g, rand_b, 1)",[107,1265,1266],{},[1153,1267],{},[107,1269,1270],{},"Enfin, il faut tout câbler et appliquer ce nouveau shader au contexte actuel (le cube par défaut) :",[1178,1272,1273,1310],{},[264,1274,1276,1277,1280,1281,1283,1284,1294,1304,1307],{"className":1275},[1183],"    links.new(node_noise.outputs",[1219,1278,1279],{},"'Fac'",", node_ramp.inputs",[1219,1282,1279],{},")",[107,1285,1286,1287,1290,1291,1283],{},"    links.new(node_ramp.outputs",[1219,1288,1289],{},"'Color'",", node_principled.inputs",[1219,1292,1293],{},"'Base Color'",[107,1295,1296,1297,1300,1301,1283],{},"    links.new(node_principled.outputs",[1219,1298,1299],{},"'BSDF'",", node_output.inputs",[1219,1302,1303],{},"'Surface'",[107,1305,1306],{},"    return mat",[107,1308,1309],{},"my_new_mat = create_procedural_material(\"SciFi_Metal_Random\")",[107,1311,1312],{},[264,1313,1315],{"className":1314},[1183],"bpy.context.object.data.materials.append(my_new_mat)",[107,1317,1318],{},"Copiez ce code dans votre éditeur de texte et appuyez sur « Run Script » (le bouton Play). Regardez votre objet actif. Il s’agit maintenant d’une surface métallique avec un motif de bruit de couleur aléatoire. Lancez-le à nouveau (changez le nom dans l’appel de fonction) et vous obtiendrez une autre couleur.",[233,1320,1322],{"className":1321},[93,236],[238,1323],{"src":1324,"className":1325,"alt":243,"loading":244,"width":1326,"height":1327,"srcSet":1328,"sizes":248},"https://blog.cg-wire.com/content/images/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png",[242],1268,827,"https://blog.cg-wire.com/content/images/size/w600/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 1000w, https://blog.cg-wire.com/content/images/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 1268w",[107,1330,1331,1332],{},"Félicitations, ",[126,1333,1334],{},"vous venez de créer un générateur de matériau procédural !",[107,1336,1337,1338,1344],{},"Jetez un œil à",[150,1339,751,1341],{"href":1165,"rel":1340},[596],[695,1342,1343],{},"notre dépôt GitHub associé"," pour jouer avec le code !",[136,1346],{},[139,1348,1350],{"id":1349},"conclusion",[126,1351,1352],{},"Conclusion",[107,1354,1355,1356,1359],{},"Les shaders ne servent pas qu’à colorer à l’intérieur des lignes. Ce sont la peau de votre monde numérique. ",[126,1357,1358],{},"Ils racontent l’histoire de l’objet"," : depuis quand il a l’air vieux, où il est passé, et de quoi il est fait.",[107,1361,1362,1363,1366,1367,1370],{},"En comprenant la logique des nodes de shader, ",[126,1364,1365],{},"vous pouvez créer tout, de la peau photoréaliste au feu de cartoon stylisé",". Et en faisant le pas vers le scripting Python, vous débloquez la capacité de ",[126,1368,1369],{},"travailler plus vite et plus intelligemment",", en automatisant les parties fastidieuses du travail pour que vous puissiez vous concentrer sur l’art.",[107,1372,1373,1374,1377,1378,1384],{},"Mais ce n’est qu’une pièce du puzzle. Vous pouvez changer la surface, mais qu’en est-il de la forme ? La prochaine étape logique de votre parcours, c’est ",[130,1375,1376],{},"Geometry Nodes",". Tout comme les Shader Nodes contrôlent la couleur et la lumière de manière procédurale, les Geometry Nodes contrôlent le maillage et la structure de manière programmatique.",[150,1379,751,1381],{"href":1380},"https://blog.cg-wire.com/blender-scripting-geometry-nodes-2/",[695,1382,1383],{},"Jetez un œil à notre article dédié"," pour créer des scènes entières à partir de code !",[90,1386,1388,1391],{"className":1387},[93,94,95],[90,1389,587],{"className":1390},[99],[90,1392,1394,1395,598],{"className":1393},[104],"Pour en savoir plus sur le processus d’animation, ",[150,1396,1398],{"href":594,"rel":1397},[596],"envisagez de rejoindre notre communauté Discord",[90,1400,1402],{"className":1401},[93,602,603],[150,1403,1405],{"href":594,"className":1404},[607,608],"Rejoindre notre communauté Discord",{"title":243,"searchDepth":611,"depth":611,"links":1407},[1408,1409,1410,1422,1423],{"id":682,"depth":611,"text":685},{"id":759,"depth":611,"text":762},{"id":808,"depth":611,"text":811,"children":1411},[1412,1414,1415,1416,1417,1418,1419,1420,1421],{"id":831,"depth":1413,"text":834},3,{"id":878,"depth":1413,"text":881},{"id":895,"depth":1413,"text":898},{"id":942,"depth":1413,"text":945},{"id":971,"depth":1413,"text":974},{"id":1006,"depth":1413,"text":1009},{"id":1041,"depth":1413,"text":1044},{"id":1076,"depth":1413,"text":1079},{"id":1093,"depth":1413,"text":1096},{"id":1118,"depth":611,"text":1121},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1664526936810-ec0856d31b92?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fHNoYWRlciUyMG5vZGVzfGVufDB8fHx8MTc2NzYwMzU4M3ww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":1426,"featured_at":625,"visibility":626},"2026-03-26T09:56:11.000+01:00","/blog-i18n/fr/blender-shaders-explained","2026-01-05T10:35:18.000+01:00",{"title":643,"description":243},"blender-shaders-explained","blog-i18n/fr/blender-shaders-explained/index",[1433,1434],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"ClBBnYQeZn8xIGKZGK6f7s_mmtJ5tCppbG4Y3vsBv3M",{"id":1437,"title":1438,"authors":1439,"body":1441,"description":243,"extension":621,"feature_image":1924,"html":7,"meta":1925,"navigation":12,"path":1927,"published_at":1928,"seo":1929,"slug":1930,"stem":1931,"tags":1932,"__hash__":1935,"updated_at":1926,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-programmatic-rendering/index.md","Rendu vidéo programmatique dans Blender avec Python (2026)",[1440],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":1442,"toc":1915},[1443,1454,1457,1460,1463,1466,1473,1476,1478,1484,1487,1531,1534,1537,1563,1566,1593,1595,1601,1604,1610,1622,1633,1635,1641,1644,1650,1656,1659,1665,1668,1677,1679,1685,1695,1698,1704,1707,1713,1716,1724,1726,1732,1741,1751,1754,1760,1763,1769,1772,1778,1781,1787,1790,1796,1799,1805,1807,1813,1820,1846,1849,1856,1859,1869,1885,1887,1891,1894,1897,1909],[90,1444,1446,1450],{"className":1445},[93,94,95],[90,1447,1449],{"className":1448},[99],"🧠",[90,1451,1453],{"className":1452},[104],"Transformez Blender en moteur de rendu programmable avec seulement quelques lignes de Python.",[107,1455,1456],{},"Apprendre Blender en tant qu’artiste 3D signifie généralement découvrir son écosystème d’add-ons. Des tâches qui prendraient des heures, comme le rig d’un personnage, peuvent être réduites à quelques secondes grâce à des add-ons comme Rigify. Il en va de même pour la plupart des workflows, et on finit souvent par se poser la même question récurrente : « Blender peut-il faire ça automatiquement ? »",[107,1458,1459],{},"La réponse est oui. La clé, c’est le langage de programmation Python.",[107,1461,1462],{},"Blender inclut un moteur de script intégré puissant, et avec quelques lignes de code, vous pouvez créer des objets, positionner des caméras, et même déclencher des rendus complets.",[107,1464,1465],{},"Vous n’aurez pas besoin de payer un add-on si vous savez comment en créer un vous-même. Et à la base, un add-on n’est rien d’autre qu’un script enveloppé dans une interface utilisateur Blender personnalisée.",[107,1467,1468,1469,1472],{},"Si vous n’avez jamais scripté dans Blender auparavant, découvrir le module ",[264,1470,1471],{},"bpy"," donne l’impression d’ouvrir une porte secrète à l’intérieur d’un outil que vous pensiez déjà connaître : soudain, chaque partie de l’interface devient programmable. Vous ne faites plus seulement des clics sur des boutons, vous donnez des instructions pour construire des systèmes reproductibles.",[107,1474,1475],{},"L’un des workflows les plus importants que vous pouvez automatiser, c’est le rendu. Non seulement pour accélérer votre pipeline, mais aussi pour aider à maintenir des réglages de rendu cohérents et prévisibles. Dans ce tutoriel, nous allons mettre en place un système de rendu programmatique de base pour animer automatiquement un texte 3D et le transformer en une vidéo Full HD. Nous partirons de zéro, en explorant comment exécuter Python pour Blender et comment l’utiliser pour contrôler la scène. À la fin, vous aurez une bonne vue d’ensemble de la manière d’automatiser des tâches d’animation courantes.",[136,1477],{},[139,1479,1481],{"id":1480},"use-cases",[126,1482,1483],{},"Cas d’usage",[107,1485,1486],{},"Le rendu programmatique débloque une grande variété de workflows puissants, bien au-delà de la construction manuelle traditionnelle de scènes :",[731,1488,1489,1495,1501,1507,1513,1519,1525],{},[220,1490,1491,1494],{},[126,1492,1493],{},"Motion graphics pilotés par les données"," — Graphiques animés, graphismes diffusés en temps réel via API, ou encore vidéos sociales générées automatiquement.",[220,1496,1497,1500],{},[126,1498,1499],{},"Art génératif"," — Motifs procéduraux, champs de bruit, expériences de particules et illustrations algorithmiques qui évoluent à partir du code.",[220,1502,1503,1506],{},[126,1504,1505],{},"Variantes rendues par lots"," — Publicités personnalisées, variations de couleur produit, recadrages automatiques au bon format, et génération massive d’assets sociaux.",[220,1508,1509,1512],{},[126,1510,1511],{},"Contenu 3D procédural"," — Générateurs de terrain, modélisation paramétrique, peuplement de la végétation / monde, et variations automatisées d’assets 3D.",[220,1514,1515,1518],{},[126,1516,1517],{},"UI & systèmes de design génératifs"," — SVG dynamiques, bannières pré-écrites, et graphismes cohérents avec la marque rendus à la demande.",[220,1520,1521,1524],{},[126,1522,1523],{},"Scripting VFX et animation"," — Contrôles de rig automatisés, systèmes de foule, population de particules, et setups de simulation reproductibles.",[220,1526,1527,1530],{},[126,1528,1529],{},"Visualisations de simulation"," — Simulations de fluide et de fumée, dynamique du trafic et de la foule, et rendus scientifiques ou basés sur la physique.",[107,1532,1533],{},"De nombreuses tâches de modélisation 3D sont répétitives et longues. En les intégrant à un pipeline automatisé piloté par script, les artistes peuvent se concentrer davantage sur la construction créative du monde, tandis que Python gère les parties fastidieuses en arrière-plan.",[107,1535,1536],{},"Dans tous les cas, le workflow de développement reste quasiment le même :",[217,1538,1539,1545,1551,1557],{},[220,1540,1541,1544],{},[126,1542,1543],{},"Configuration"," - définir les données d’entrée nécessaires et nettoyer la scène",[220,1546,1547,1550],{},[126,1548,1549],{},"Génération de géométrie"," - modéliser les assets nécessaires à la tâche",[220,1552,1553,1556],{},[126,1554,1555],{},"Animation"," - définir les transformations et leurs keyframes associées",[220,1558,1559,1562],{},[126,1560,1561],{},"Sortie"," - les assets souhaités (modèles 3D, vidéo, séquence d’images, etc.)",[107,1564,1565],{},"Et c’est exactement le chemin que nous allons suivre pour notre exemple de rendu vidéo de texte 3D.",[90,1567,1569,1572],{"className":1568},[93,94,1138],[90,1570,1142],{"className":1571},[99],[90,1573,1575,1580,1582,1584,1585,1587,1162,1589],{"className":1574},[104],[1147,1576,1577],{},[126,1578,1579],{"style":725},"Vous cherchez des exemples qui fonctionnent ?",[1153,1581],{},[1153,1583],{},"Vous pouvez trouver le code source complet de l’intégration de l’exemple présenté dans ce guide sur notre GitHub :",[1153,1586],{},[1153,1588],{},[150,1590,1592],{"href":1591},"https://github.com/cgwire/blender-programmatic-rendering?ref=blog.cg-wire.com","https://github.com/cgwire/blender-programmatic-rendering",[136,1594],{},[139,1596,1598],{"id":1597},"_1-scene-setup",[126,1599,1600],{},"1. Configuration de la scène",[107,1602,1603],{},"Avant de nous lancer dans la génération de scènes, il nous faut d’abord un point de départ propre. Lorsque vous ouvrez Blender, il charge une scène par défaut contenant généralement un cube, une caméra et une lumière. Pour ce tutoriel, nous n’aurons besoin que des deux derniers.",[107,1605,1606,1607,1609],{},"La première étape pour utiliser Blender de manière programmatique consiste à importer le module ",[264,1608,1471],{},". Cela vous donne un accès complet aux données, outils et pipeline de rendu de Blender directement depuis Python :",[1178,1611,1612,1616],{},[264,1613,1615],{"className":1614},[1183],"import bpy\n",[107,1617,1618],{},[264,1619,1621],{"className":1620},[1183],"bpy.data.objects.remove(bpy.data.objects.get(\"Cube\"), do_unlink=True)",[107,1623,1624,1625,1628,1629,1632],{},"Ici, nous supprimons l’objet ",[126,1626,1627],{},"Cube"," par défaut. Le paramètre ",[264,1630,1631],{},"do_unlink=True"," garantit que Blender supprime non seulement l’objet, mais aussi le désunlinks de toute scène susceptible d’y faire référence.",[136,1634],{},[139,1636,1638],{"id":1637},"_2-manipulating-3d-text",[126,1639,1640],{},"2. Manipuler du texte 3D",[107,1642,1643],{},"Ensuite, nous ajoutons un objet de texte 3D à la scène pour en faire l’élément central que nous allons manipuler et, finalement, rendre de manière programmatique.",[1178,1645,1646],{},[264,1647,1649],{"className":1648},[1183],"bpy.ops.object.text_add(location=(0, 0, 0))\ntext_obj = bpy.context.object\ntext_obj.name = \"CaptionText\"\ntext_obj.data.body = \"Hello world!\"",[107,1651,1652,1653,133],{},"Ce fragment de code crée un nouvel objet texte à l’origine du monde, lui assigne un nom lisible, et définit le texte affiché sur ",[264,1654,1655],{},"\"Hello world!\"",[107,1657,1658],{},"Pour donner plus de présence au texte dans la scène, nous pouvons ajuster sa géométrie. En augmentant sa taille et en ajoutant une extrusion, on obtient un texte pleinement 3D, et le centrer sur les deux axes simplifie les futures transformations et animations :",[1178,1660,1661],{},[264,1662,1664],{"className":1663},[1183],"text_obj.data.size = 0.6\ntext_obj.data.extrude = 0.05\ntext_obj.data.align_x = \"CENTER\"\ntext_obj.data.align_y = \"CENTER\"",[107,1666,1667],{},"Avec ces ajustements, le texte est proprement centré, correctement mis à l’échelle, et prêt pour un traitement ultérieur.",[233,1669,1671],{"className":1670},[93,236],[238,1672],{"src":1673,"className":1674,"alt":243,"loading":244,"width":712,"height":1675,"srcSet":1676,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png",[242],901,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 1600w",[136,1678],{},[139,1680,1682],{"id":1681},"_3-adding-keyframes",[126,1683,1684],{},"3. Ajouter des keyframes",[107,1686,1687,1688,1694],{},"Nous",[150,1689,751,1691],{"href":1690},"https://blog.cg-wire.com/stepped-animation/",[695,1692,1693],{},"créons une animation simple en insérant des keyframes"," pour la position du texte au fil du temps.",[107,1696,1697],{},"Tout d’abord, nous déplaçons le curseur de la timeline sur la frame 1, positionnons le texte à l’emplacement de départ, puis enregistrons cette position avec une keyframe :",[1178,1699,1700],{},[264,1701,1703],{"className":1702},[1183],"bpy.context.scene.frame_set(1)\ntext_obj.location = (-4.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=1)",[107,1705,1706],{},"Ensuite, nous avançons à la frame 40, décalons le texte le long de l’axe X, et insérons une nouvelle keyframe pour marquer sa nouvelle position :",[1178,1708,1709],{},[264,1710,1712],{"className":1711},[1183],"bpy.context.scene.frame_set(40)\ntext_obj.location = (0.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=40)",[107,1714,1715],{},"Avec ces deux keyframes en place, Blender interpole automatiquement le mouvement entre elles, créant une animation fluide pendant que le texte glisse vers le centre de l’image.",[233,1717,1719],{"className":1718},[93,236],[238,1720],{"src":1721,"className":1722,"alt":243,"loading":244,"width":712,"height":1675,"srcSet":1723,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 1600w",[136,1725],{},[139,1727,1729],{"id":1728},"_4-video-rendering",[126,1730,1731],{},"4. Rendu vidéo",[107,1733,1734,1735,1740],{},"Il ne nous reste plus qu’à",[150,1736,751,1737],{"href":163},[695,1738,1739],{},"configurer les réglages de rendu de Blender"," et à générer la vidéo finale.",[107,1742,1743,1744,1747,1748,133],{},"Le premier choix concerne le moteur de rendu à utiliser : ",[126,1745,1746],{},"Eevee"," ou ",[126,1749,1750],{},"Cycles",[107,1752,1753],{},"Eevee est un moteur de rasterisation temps réel, ce qui le rend extrêmement rapide et idéal pour les aperçus ou les animations stylisées. Cycles, quant à lui, est un traceur de trajectoires physiquement basé qui produit un éclairage plus réaliste, mais nécessite des temps de rendu beaucoup plus longs. Pour un prototypage rapide et la plupart des workflows automatisés, Eevee est généralement le meilleur choix :",[1178,1755,1756],{},[264,1757,1759],{"className":1758},[1183],"bpy.context.scene.render.engine = \"BLENDER_EEVEE\"",[107,1761,1762],{},"Ensuite, nous spécifions la résolution de sortie :",[1178,1764,1765],{},[264,1766,1768],{"className":1767},[1183],"bpy.context.scene.render.resolution_x = 1920\nbpy.context.scene.render.resolution_y = 1080",[107,1770,1771],{},"Puis nous définissons la fréquence d’images et la plage d’animation. Ici, un plan de 60 frames à 24 fps :",[1178,1773,1774],{},[264,1775,1777],{"className":1776},[1183],"bpy.context.scene.render.fps = 24\nbpy.context.scene.frame_start = 1\nbpy.context.scene.frame_end = 60",[107,1779,1780],{},"Blender doit aussi savoir comment encoder la vidéo finale. Nous l’exportons en MP4 en utilisant l’encodage vidéo H.264 pour la vitesse de rendu :",[1178,1782,1783],{},[264,1784,1786],{"className":1785},[1183],"bpy.context.scene.render.image_settings.file_format = \"FFMPEG\"\nbpy.context.scene.render.ffmpeg.format = \"MPEG4\"\nbpy.context.scene.render.ffmpeg.codec = \"H264\"",[107,1788,1789],{},"Enfin, nous choisissons où le fichier de sortie sera écrit, en utilisant le dossier courant pour plus de commodité :",[1178,1791,1792],{},[264,1793,1795],{"className":1794},[1183],"bpy.context.scene.render.filepath = \"//render.mp4\"",[107,1797,1798],{},"Une fois tout configuré, nous pouvons lancer le rendu avec une seule commande :",[1178,1800,1801],{},[264,1802,1804],{"className":1803},[1183],"bpy.ops.render.render(animation=True)",[136,1806],{},[139,1808,1810],{"id":1809},"_5-putting-it-all-together",[126,1811,1812],{},"5. Tout réunir",[107,1814,1815,1816,1819],{},"Notre code est terminé : il ne reste plus qu’à le placer dans un fichier Python ",[264,1817,1818],{},"render.py"," :",[1178,1821,1822,1841],{},[264,1823,1187,1825,1827,1829,1831,1833,1835,1838],{"className":1824},[1183],[107,1826,1621],{},[107,1828,1649],{},[107,1830,1664],{},[107,1832,1703],{},[107,1834,1712],{},[107,1836,1837],{},"bpy.context.scene.render.engine = \"BLENDER_EEVEE\"\nbpy.context.scene.render.resolution_x = 1920\nbpy.context.scene.render.resolution_y = 1080\nbpy.context.scene.render.resolution_percentage = 100\nbpy.context.scene.render.fps = 24\nbpy.context.scene.frame_start = 1\nbpy.context.scene.frame_end = 60",[107,1839,1840],{},"bpy.context.scene.render.image_settings.file_format = \"FFMPEG\"\nbpy.context.scene.render.ffmpeg.format = \"MPEG4\"  # container\nbpy.context.scene.render.ffmpeg.codec = \"H264\"\nbpy.context.scene.render.ffmpeg.constant_rate_factor = \"HIGH\"\nbpy.context.scene.render.ffmpeg.gopsize = 12\nbpy.context.scene.render.ffmpeg.audio_codec = \"AAC\"\nbpy.context.scene.render.filepath = \"//render.mp4\"",[107,1842,1843],{},[264,1844,1804],{"className":1845},[1183],[107,1847,1848],{},"Maintenant, exécutez le script pour démarrer le rendu :",[1178,1850,1851],{},[264,1852,1855],{"className":1853},[1854],"language-bash","python3 render.py",[107,1857,1858],{},"Une fois le rendu terminé, vérifiez votre répertoire de travail et votre animation générée entièrement de manière programmatique devrait maintenant être prête à être visionnée.",[233,1860,1862],{"className":1861},[93,236],[238,1863],{"src":1864,"className":1865,"alt":243,"loading":244,"width":1866,"height":1867,"srcSet":1868,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png",[242],1088,722,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 1088w",[90,1870,1872,1876],{"className":1871},[93,94,1138],[90,1873,1875],{"className":1874},[99],"🔗",[90,1877,1879,1880],{"className":1878},[104],"Vous pouvez trouver notre code dans un dépôt Github pour une reproductibilité facile :",[150,1881,751,1882],{"href":1591},[695,1883,1884],{},"github.com/cgwire/blender-programmatic-rendering",[136,1886],{},[139,1888,1889],{"id":1349},[126,1890,1352],{},[107,1892,1893],{},"Dans cette démo pas à pas, vous avez construit un pipeline automatisé complet à l’intérieur de Blender : configurer une scène propre, créer et modifier du texte 3D, l’animer avec des keyframes, puis rendre la séquence avec une interpolation fluide. Tout cela est géré via Python, sans aucun réglage manuel nécessaire !",[107,1895,1896],{},"Maintenant que vous avez vu à quel point l’API Blender offre du contrôle, vous pouvez aller beaucoup plus loin avec ces idées : automatiser vos workflows, générer des graphismes à partir de données, construire des outils internes qui assemblent des scènes, rendre des variantes, ou créer des animations entières avec une seule commande... la liste pour aider votre studio d’animation à gagner en productivité ne s’arrête jamais.",[90,1898,1900,1903],{"className":1899},[93,94,95],[90,1901,587],{"className":1902},[99],[90,1904,591,1906,598],{"className":1905},[104],[150,1907,1398],{"href":594,"rel":1908},[596],[90,1910,1912],{"className":1911},[93,602,603],[150,1913,1405],{"href":594,"className":1914},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":1916},[1917,1918,1919,1920,1921,1922,1923],{"id":1480,"depth":611,"text":1483},{"id":1597,"depth":611,"text":1600},{"id":1637,"depth":611,"text":1640},{"id":1681,"depth":611,"text":1684},{"id":1728,"depth":611,"text":1731},{"id":1809,"depth":611,"text":1812},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1622547748225-3fc4abd2cca0?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fHJlbmRlcnN8ZW58MHx8fHwxNzY2MzgyNjA1fDA&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":1926,"featured_at":625,"visibility":626},"2026-02-20T06:04:02.000+01:00","/blog-i18n/fr/blender-programmatic-rendering","2025-12-29T10:00:10.000+01:00",{"title":1438,"description":243},"blender-programmatic-rendering","blog-i18n/fr/blender-programmatic-rendering/index",[1933,1934],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"NwtID8SrkpQdHNIDBLUw2pnwigsNNhe1kkLVg-uGpAI",{"id":1937,"title":1938,"authors":1939,"body":1941,"description":243,"extension":621,"feature_image":2642,"html":7,"meta":2643,"navigation":12,"path":2645,"published_at":2646,"seo":2647,"slug":2648,"stem":2649,"tags":2650,"__hash__":2653,"updated_at":2644,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-kitsu-versioning-addon/index.md","Gérer les révisions de fichiers Blender avec un addon de versioning Kitsu (2026)",[1940],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":1942,"toc":2633},[1943,1954,1961,1964,1969,1972,1975,1978,1981,1984,1986,1992,1995,1998,2024,2027,2053,2055,2061,2070,2093,2103,2106,2109,2139,2149,2152,2155,2158,2160,2166,2173,2194,2203,2210,2213,2216,2239,2242,2245,2260,2267,2283,2286,2329,2332,2338,2341,2343,2349,2352,2359,2377,2380,2383,2416,2418,2424,2431,2434,2437,2454,2457,2460,2485,2488,2490,2496,2504,2521,2551,2554,2580,2583,2593,2595,2599,2602,2605,2614,2627],[90,1944,1946,1950],{"className":1945},[93,94,95],[90,1947,1949],{"className":1948},[99],"🧱",[90,1951,1953],{"className":1952},[104],"Remplacez une nomenclature chaotique par une source unique de vérité pour les révisions Blender.",[107,1955,1956,1957,1960],{},"Chaque projet commence avec de bonnes intentions. Vous démarrez avec un ",[264,1958,1959],{},"model.blend"," bien propre, des dossiers organisés, et la promesse que, cette fois, vous garderez tout bien rangé.",[107,1962,1963],{},"Mais quand les délais se resserrent, la tranquille entropie de la production s’installe. Très vite, votre dossier de projet commence à ressembler à un site de fouilles archéologiques d’ultimes modifications prises dans la panique :",[1178,1965,1966],{},[264,1967,1968],{},"model.blend\nmodel_v2.blend\nmodel_v2b.blend\nmodel_final.blend\nmodel_final_really_final.blend\nmodel_FINAL_v3.blend",[107,1970,1971],{},"Vous savez comment ça se passe : quelqu’un a besoin d’un changement rapide, un autre artiste part sur une version « juste au cas où », et bientôt plus personne n’est vraiment sûr de savoir quel fichier est « le vrai ». Les commentaires dans les fils de discussion contredisent les noms de fichiers, des rendus de plans sortent à partir de versions obsolètes, et le superviseur soupire profondément.",[107,1973,1974],{},"Dans un studio d’animation, ces micro-instants de chaos s’accumulent. C’est là qu’une source de vérité adaptée doit entrer en scène.",[107,1976,1977],{},"Pour beaucoup d’équipes, cette source, c’est Kitsu. Et pour les artistes Blender, la pièce manquante est un pont automatisé qui conserve les fichiers versionnés, traçables et alignés avec les données de production du projet.",[107,1979,1980],{},"Alors vous décidez de reprendre le contrôle : vous allez faire parler Blender avec Kitsu et construire un système de versioning qui donne à votre pipeline l’impression, enfin, d’avoir votre dos.",[107,1982,1983],{},"Dans ce tutoriel, nous allons créer un addon qui gère les révisions de fichiers directement depuis Blender. Vous pourrez connecter Blender à un projet Kitsu, créer et téléverser des révisions de vos modèles 3D, consulter toutes les révisions existantes, et ramener d’anciennes révisions dans Blender.",[136,1985],{},[139,1987,1989],{"id":1988},"workflow-overview",[126,1990,1991],{},"Aperçu du workflow",[107,1993,1994],{},"Dans un workflow typique piloté par Kitsu, un artiste ouvre une scène Blender, fait son travail, atteint une étape (milestone) et téléverse une révision. Les artistes consultent, itèrent, révisent et téléversent à nouveau. Kitsu garde chaque étape bien rangée.",[107,1996,1997],{},"Mais ça ne ferait pas de mal de pouvoir simplement téléverser ou ramener des révisions d’un clic, non ?",[217,1999,2000,2006,2012,2018],{},[220,2001,2002,2005],{},[126,2003,2004],{},"Démarrer dans Blender"," - Nous ouvrons notre scène de travail : modélisation, shading, rigging, bref, tout ce que la tâche exige.",[220,2007,2008,2011],{},[126,2009,2010],{},"Créer un point de contrôle"," - Quand on atteint une étape (« blocking terminé », « prêt pour la relecture »), on crée une nouvelle révision dans Kitsu.",[220,2013,2014,2017],{},[126,2015,2016],{},"Consulter l’historique"," - Kitsu stocke toutes les révisions, ce qui donne aux superviseurs une chronologie claire et vous permet de comparer des versions sans fouiller dans les fichiers.",[220,2019,2020,2023],{},[126,2021,2022],{},"Ramener de nouveaux changements"," - Quand nous avons besoin d’une version différente, il suffit de cliquer pour ramener un asset dans notre espace de travail actuel.",[107,2025,2026],{},"C’est un workflow très basique, donc nous risquons de rencontrer des problèmes comme la façon de gérer la résolution de conflits (et si deux artistes travaillent sur le même plan et créent chacun une nouvelle révision, comment gère-t-on cela ?), mais c’est suffisant pour nous donner un addon fonctionnel que nous pourrons améliorer plus tard pour répondre aux besoins du pipeline d’animation.",[90,2028,2030,2033],{"className":2029},[93,94,1138],[90,2031,1142],{"className":2032},[99],[90,2034,2036,2041,2043,1157,2045,2047,1162,2049],{"className":2035},[104],[1147,2037,2038],{},[126,2039,2040],{"style":725},"Vous cherchez des exemples concrets ?",[1153,2042],{},[1153,2044],{},[1153,2046],{},[1153,2048],{},[150,2050,2052],{"href":2051},"https://github.com/cgwire/blender-kitsu-versioning-addon?ref=blog.cg-wire.com","https://github.com/cgwire/blender-kitsu-versioning-addon",[136,2054],{},[139,2056,2058],{"id":2057},"_1-populating-the-kitsu-dashboard",[126,2059,2060],{},"1. Renseigner le tableau de bord Kitsu",[107,2062,2063,2064,1819],{},"L’interface web de Kitsu est conçue pour que les producteurs, coordinateurs ou leads puissent rapidement mettre en place la structure d’un projet. Avant que les artistes Blender puissent publier des révisions, nous devons alimenter notre production avec des assets en cours. Dans",[150,2065,751,2067],{"href":2066},"https://blog.cg-wire.com/dcc-integration-blender-kitsu/",[695,2068,2069],{},"l’instance Docker Kitsu pour le développement local",[217,2071,2072,2078,2084,2090],{},[220,2073,2074,2075,133],{},"Connectez-vous au ",[126,2076,2077],{},"tableau de bord Kitsu",[220,2079,2080,2081,133],{},"Dans la barre de navigation principale, allez dans ",[126,2082,2083],{},"Productions",[220,2085,394,2086,2089],{},[126,2087,2088],{},"\"Create production\""," (généralement le coin supérieur droit).",[220,2091,2092],{},"Renseignez les détails de la production",[233,2094,2096],{"className":2095},[93,236],[238,2097],{"src":2098,"className":2099,"alt":243,"loading":244,"width":2100,"height":2101,"srcSet":2102,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png",[242],985,694,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png 600w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png 985w",[107,2104,2105],{},"La nouvelle production apparaît dans la liste, et vous pouvez l’ouvrir pour commencer à ajouter des assets.",[107,2107,2108],{},"Les assets sont les éléments de base de votre projet : personnages, props, environnements, véhicules… tout ce qui doit être tracé dans la production.",[217,2110,2111,2117,2123,2128],{},[220,2112,2113,2114,133],{},"Allez dans ",[126,2115,2116],{},"Productions → le nom de votre production",[220,2118,1169,2119,2122],{},[126,2120,2121],{},"Assets"," à l’intérieur de la production.",[220,2124,394,2125,133],{},[126,2126,2127],{},"\"Create Asset\"",[220,2129,2130,2131,2134,2135,2138],{},"Renseignez un ",[126,2132,2133],{},"Asset Name"," (par ex. « RobotHead ») et un ",[126,2136,2137],{},"Asset Type"," (Character, Prop, Set, etc.)",[233,2140,2142],{"className":2141},[93,236],[238,2143],{"src":2144,"className":2145,"alt":243,"loading":244,"width":2146,"height":2147,"srcSet":2148,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png",[242],1270,870,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 1270w",[107,2150,2151],{},"Votre asset existe désormais et possède 3 tâches qui lui sont assignées. ",[107,2153,2154],{},"Les tâches définissent les étapes du workflow (Modélisation, Shading, Rigging, etc.) que les artistes effectueront sur chaque asset.",[107,2156,2157],{},"Nous avons maintenant tout ce qu’il faut pour tester notre addon.",[136,2159],{},[139,2161,2163],{"id":2162},"_2-linking-the-current-blender-project-to-a-kitsu-task",[126,2164,2165],{},"2. Lier le projet Blender actuel à une tâche Kitsu",[107,2167,2168,2169,2172],{},"Nous commençons par une déclaration d’addon minimale qui définit l’emplacement de l’interface, charge ",[264,2170,2171],{},"gazu",", et prépare les données que nous exposerons dans les menus déroulants :",[1178,2174,2175,2188],{},[264,2176,2178,2179,2182,2185],{"className":2177},[1183],"bl_info = {\n    \"name\": \"Model Versioning (Production/Task/Asset/Revisions)\",\n    \"author\": \"cgwire\",\n    \"version\": (1, 0, 0),\n    \"blender\": (2, 80, 0),\n    \"location\": \"View3D > Sidebar > ModelVersioning\",\n    \"description\": \"Browse productions, tasks, assets, and manage revisions (list/create/load)\",\n     \"category\": \"3D View\",\n}\n",[107,2180,2181],{},"import sys",[107,2183,2184],{},"sys.path.append(\"~/.local/lib/python3.11/site-packages\")",[107,2186,2187],{},"import os\nimport tempfile",[107,2189,2190],{},[264,2191,2193],{"className":2192},[1183],"import bpy\nimport gazu\nfrom bpy.props import EnumProperty, PointerProperty\nfrom bpy.types import Operator, Panel, PropertyGroup",[107,2195,2196,2197,2199,2200,2202],{},"Notez que ",[264,2198,2184],{}," nous permet d’utiliser notre installation Python locale pour accéder à des packages externes comme ",[264,2201,2171],{},". Par défaut, Blender exécute sa propre installation Python, donc installer des packages peut être fastidieux. Pour résoudre ce problème, on indique simplement à Blender d’aller regarder nos modules locaux. Mettez ce chemin à jour pour qu’il corresponde à la configuration de votre système.",[107,2204,2205,2206,2209],{},"Avant de pouvoir automatiser le versioning, Blender doit savoir ",[130,2207,2208],{},"où"," dans Kitsu appartient le modèle actuel. Cela signifie d’identifier le projet, l’asset, la tâche, et finalement les révisions qui y sont associées.",[107,2211,2212],{},"La première étape est simple : s’authentifier auprès de Kitsu, récupérer les productions disponibles, et laisser l’artiste choisir le contexte directement depuis l’interface de la Sidebar.",[107,2214,2215],{},"Une fois l’addon chargé, on s’authentifie et on pointe l’addon vers l’hôte de l’API Kitsu :",[1178,2217,2218,2233],{},[264,2219,2221,2222,2227,2228,2232],{"className":2220},[1183],"gazu.set_host(\"\u003C",[150,2223,2224],{"href":2224,"rel":2225},"http://localhost/api",[2226],"nofollow",">\")\nuser = gazu.log_in(\"",[150,2229,2231],{"href":2230},"mailto:admin@example.com","admin@example.com","\", \"mysecretpassword\")",[107,2234,2235],{},[264,2236,2238],{"className":2237},[1183],"temp_dir_path = tempfile.gettempdir()",[107,2240,2241],{},"Cela établit la session que nous utiliserons pour parcourir les productions, trouver des tâches, et finalement créer des révisions.",[107,2243,2244],{},"À partir de là, nous pouvons commencer à exposer la structure de la production. Avec des fonctions d’assistance pour la recherche de projet, d’asset, de tâche et de révision, nous remplissons chaque menu déroulant de manière dynamique :",[1178,2246,2247,2254],{},[264,2248,2250,2251],{"className":2249},[1183],"def find_project(name):\n    return gazu.project.get_project_by_name(name)",[107,2252,2253],{},"def find_asset(project, name):\n    return gazu.asset.get_asset_by_name(project, name)",[107,2255,2256],{},[264,2257,2259],{"className":2258},[1183],"def find_task(asset, type_id):\n    return gazu.task.get_task_by_name(asset, type_id, \"main\")",[107,2261,2262,2263,2266],{},"Chaque rappel de ",[264,2264,2265],{},"EnumProperty"," récupère des données fraîches depuis Kitsu :",[1178,2268,2269],{},[264,2270,2272,2273,2275,2276,2279,2280,2282],{"className":2271},[1183],"def enum_projects(self, context):\n    items = ",[1219,2274],{},"\n    projects = gazu.project.all_projects()\n    for p in projects:\n        items.append((p",[1219,2277,2278],{},"\"name\"",", p",[1219,2281,2278],{},", \"\"))\n    if not items:\n        items.append((\"NONE\", \"--- no productions ---\", \"\"))\n    return items",[107,2284,2285],{},"Les assets, tâches et révisions suivent le même schéma :",[1178,2287,2288,2313],{},[264,2289,2291,2292,2294,2295,2297,2298,2300,2301],{"className":2290},[1183],"def enum_assets(self, context):\n    project = find_project(context.scene.mv_state.project)\n    items = ",[1219,2293],{},"\n    if project:\n        assets = gazu.asset.all_assets_for_project(project)\n        for t in assets:\n            items.append((t",[1219,2296,2278],{},", t",[1219,2299,2278],{},", \"\"))\n    if not items:\n        items.append((\"NONE\", \"--- no tasks ---\", \"\"))\n    return items",[107,2302,2303,2304,2306,2307,2297,2310,2300],{},"def enum_tasks(self, context):\n    project = find_project(context.scene.mv_state.project)\n    asset = find_asset(project, context.scene.mv_state.asset)\n    items = ",[1219,2305],{},"\n    if asset:\n        tasks = gazu.task.all_tasks_for_asset(asset)\n        for t in tasks:\n            items.append((t",[1219,2308,2309],{},"\"task_type_id\"",[1219,2311,2312],{},"\"task_type_name\"",[107,2314,2315],{},[264,2316,2318,2319,2321,2322,2325,2326,2328],{"className":2317},[1183],"def enum_revisions(self, context):\n    project = find_project(context.scene.mv_state.project)\n    asset = find_asset(project, context.scene.mv_state.asset)\n    task = find_task(asset, context.scene.mv_state.task)\n    items = ",[1219,2320],{},"\n    if task:\n        revisions = gazu.files.get_all_preview_files_for_task(task)\n        for r in revisions:\n            items.append((str(r",[1219,2323,2324],{},"\"revision\"","), str(r",[1219,2327,2324],{},"), \"\"))\n    if not items:\n        items.append((\"NONE\", \"--- no revisions ---\", \"\"))\n    return items",[107,2330,2331],{},"Enfin, nous stockons toutes les sélections de l’interface dans un unique objet d’état :",[1178,2333,2334],{},[264,2335,2337],{"className":2336},[1183],"class MV_State(PropertyGroup):\n    project: EnumProperty(\n        name=\"Project\", description=\"Select project\", items=enum_projects\n    )\n    asset: EnumProperty(name=\"Asset\", description=\"Select asset\", items=enum_assets)\n    task: EnumProperty(name=\"Task\", description=\"Select task\", items=enum_tasks)\n    revision: EnumProperty(\n        name=\"Revision\", description=\"Select revision\", items=enum_revisions\n     )",[107,2339,2340],{},"Voici la base de notre intégration au pipeline : Blender sait maintenant parcourir Kitsu et se lier à la tâche exacte sur laquelle l’artiste travaille. À partir de là, nous pouvons commencer à travailler sur le cycle de vie des révisions.",[136,2342],{},[139,2344,2346],{"id":2345},"_3-creating-a-new-revision-button",[126,2347,2348],{},"3. Créer un bouton « Nouvelle révision »",[107,2350,2351],{},"Nous pouvons commencer à automatiser la partie avec laquelle les artistes interagissent le plus : la création de nouvelles révisions. Dans un workflow manuel classique, vous exportez votre fichier puis vous le téléversez dans Kitsu sur la tâche correcte. Notre addon simplifie tout cela en une seule pression de bouton à l’intérieur de Blender.",[107,2353,2354,2355,2358],{},"Kitsu gère les nouvelles révisions via ",[264,2356,2357],{},"publish_preview()",". Cet appel envoie à la fois le fichier et les métadonnées :",[1178,2360,2361,2371],{},[264,2362,2364,2365,2368],{"className":2363},[1183],"temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")",[107,2366,2367],{},"bpy.ops.export_scene.gltf(filepath=temp_file_path, export_format=\"GLB\")",[107,2369,2370],{},"(comment, preview_file) = gazu.task.publish_preview(\n    task,\n    task_status,\n    revision=new_revision,\n    comment=\"increment revision\",\n    preview_file_path=temp_file_path,\n)",[107,2372,2373],{},[264,2374,2376],{"className":2375},[1183],"os.remove(temp_file_path)",[107,2378,2379],{},"Dans notre addon, on déclenchera cela depuis un bouton dans la Sidebar.",[107,2381,2382],{},"L’opérateur effectue trois étapes principales : récupérer les sélections de l’utilisateur depuis l’état de l’addon, calculer le prochain numéro de révision, puis téléverser le fichier exporté comme nouvelle révision :",[1178,2384,2385,2410],{},[264,2386,2388,2389,2392,2395,2398,2401,2404,2407],{"className":2387},[1183],"class MV_OT_create_revision(Operator):\n    bl_idname = \"mv.create_revision\"\n    bl_label = \"Create Revision\"",[107,2390,2391],{},"    def invoke(self, context, event):\n        wm = context.window_manager\n        return wm.invoke_props_dialog(self, width=400)",[107,2393,2394],{},"    def execute(self, context):\n        project = find_project(context.scene.mv_state.project)\n        asset = find_asset(project, context.scene.mv_state.asset)\n         task = find_task(asset, context.scene.mv_state.task)\n         revision = context.scene.mv_state.revision\n         new_revision = int(revision) + 1",[107,2396,2397],{},"        task_status = gazu.task.get_task_status_by_name(\"todo\")",[107,2399,2400],{},"        temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")",[107,2402,2403],{},"        bpy.ops.export_scene.gltf(filepath=temp_file_path, export_format=\"GLB\")",[107,2405,2406],{},"        (comment, preview_file) = gazu.task.publish_preview(\n            task,\n            task_status,\n            revision=new_revision,\n            comment=\"increment revision\",\n            preview_file_path=temp_file_path,\n        )",[107,2408,2409],{},"        os.remove(temp_file_path)",[107,2411,2412],{},[264,2413,2415],{"className":2414},[1183],"        self.report({\"INFO\"}, \"Revision created\")\n        return {\"FINISHED\"}",[136,2417],{},[139,2419,2421],{"id":2420},"_4-pulling-a-revision-into-blender",[126,2422,2423],{},"4. Importer une révision dans Blender",[107,2425,2426,2427,2430],{},"Le versioning n’est pas seulement une question de publication de votre travail : il s’agit aussi de pouvoir ",[130,2428,2429],{},"revenir en arrière",". Que vous révisiez des étapes précédentes, compariez la topologie, ou récupériez un détail depuis une itération antérieure, vous avez besoin d’un moyen rapide et fiable pour charger de nouvelles révisions et d’anciennes révisions dans Blender.",[107,2432,2433],{},"Une fois qu’une tâche est sélectionnée, importer une révision depuis Kitsu devient une opération simple en deux étapes : télécharger le fichier d’aperçu associé à la révision sélectionnée, puis l’importer dans Blender.",[107,2435,2436],{},"Après avoir récupéré tous les fichiers d’aperçu pour la tâche en cours, nous pouvons cibler la révision via son index et apporter l’asset directement dans Blender :",[1178,2438,2439,2449],{},[264,2440,2364,2442],{"className":2441},[1183],[107,2443,2444,2445,2448],{},"preview_file = preview_files",[1219,2446,2447],{},"int(revision) - 1","\ngazu.files.download_preview_file(preview_file, temp_file_path)\nbpy.ops.import_scene.gltf(filepath=temp_file_path)",[107,2450,2451],{},[264,2452,2376],{"className":2453},[1183],[107,2455,2456],{},"Cela nous donne une façon cohérente de récupérer les assets tels qu’ils étaient exactement à ce moment de la production.",[107,2458,2459],{},"Nous encapsulons ce workflow dans un opérateur qui reproduit la structure du bouton « Create Revision » :",[1178,2461,2462,2479],{},[264,2463,2465,2466,2469,2471,2477],{"className":2464},[1183],"class MV_OT_load_revision(Operator):\n    bl_idname = \"mv.load_revision\"\n    bl_label = \"Load Revision\"",[107,2467,2468],{},"    def execute(self, context):\n        project = find_project(context.scene.mv_state.project)\n        asset = find_asset(project, context.scene.mv_state.asset)\n        task = find_task(asset, context.scene.mv_state.task)\n        revision = context.scene.mv_state.revision\n        preview_files = gazu.files.get_all_preview_files_for_task(task)",[107,2470,2400],{},[107,2472,2473,2474,2476],{},"        preview_file = preview_files",[1219,2475,2447],{},"\n        gazu.files.download_preview_file(preview_file, temp_file_path)\n        bpy.ops.import_scene.gltf(filepath=temp_file_path)",[107,2478,2409],{},[107,2480,2481],{},[264,2482,2484],{"className":2483},[1183],"        self.report({\"INFO\"}, \"Opened Revision\")\n        return {\"FINISHED\"}",[107,2486,2487],{},"Cet opérateur permet aux artistes de parcourir et charger n’importe quelle version stockée dans Kitsu sans quitter Blender.",[136,2489],{},[139,2491,2493],{"id":2492},"_5-registering-the-addon",[126,2494,2495],{},"5. Enregistrer l’addon",[107,2497,2498,1819],{},[150,2499,2501],{"href":2500},"https://blog.cg-wire.com/blender-addon-ui-scripting-guide/",[695,2502,2503],{},"Le panneau relie maintenant l’ensemble du workflow de révision",[731,2505,2506,2509,2512,2515,2518],{},[220,2507,2508],{},"Sélectionnez le projet",[220,2510,2511],{},"Choisissez l’asset",[220,2513,2514],{},"Choisissez la tâche",[220,2516,2517],{},"Parcourez les révisions",[220,2519,2520],{},"Créez ou chargez des versions en un seul clic",[1178,2522,2523,2545],{},[264,2524,2526,2527,2530,2533,2536,2539,2542],{"className":2525},[1183],"class MV_PT_panel(Panel):\n    bl_label = \"Model Versioning\"\n    bl_idname = \"MV_PT_panel\"\n    bl_space_type = \"VIEW_3D\"\n    bl_region_type = \"UI\"\n    bl_category = \"ModelVersion\"",[107,2528,2529],{},"    def draw(self, context):\n        layout = self.layout\n        scene = context.scene\n        mv = scene.mv_state",[107,2531,2532],{},"        layout.label(text=\"Project\")\n        layout.prop(mv, \"project\", text=\"\")\n        layout.separator()",[107,2534,2535],{},"        layout.label(text=\"Asset\")\n        layout.prop(mv, \"asset\", text=\"\")\n        layout.separator()",[107,2537,2538],{},"        layout.label(text=\"Task\")\n        layout.prop(mv, \"task\", text=\"\")\n        layout.separator()",[107,2540,2541],{},"        layout.label(text=\"Revision\")\n        layout.prop(mv, \"revision\", text=\"\")\n        layout.separator()",[107,2543,2544],{},"        row = layout.row(align=True)\n        row.operator(\"mv.create_revision\", text=\"Create Revision\", icon=\"ADD\")",[107,2546,2547],{},[264,2548,2550],{"className":2549},[1183],"        layout.operator(\n            \"mv.load_revision\", text=\"Load Selected Revision\", icon=\"IMPORT\"\n        )",[107,2552,2553],{},"Enfin, nous enregistrons les opérateurs, le panneau et l’état pour que Blender sache comment construire l’interface :",[1178,2555,2556,2566],{},[264,2557,2559,2560,2563],{"className":2558},[1183],"classes = (\n    MV_State,\n    MV_OT_create_revision,\n    MV_OT_load_revision,\n    MV_PT_panel,\n)",[107,2561,2562],{},"def register():\n    for c in classes:\n        bpy.utils.register_class(c)\n    bpy.types.Scene.mv_state = PointerProperty(type=MV_State)",[107,2564,2565],{},"def unregister():\n    for c in reversed(classes):\n        bpy.utils.unregister_class(c)\n    if hasattr(bpy.types.Scene, \"mv_state\"):\n        del bpy.types.Scene.mv_state",[107,2567,2568],{},[264,2569,2571,2572,2575,2576,2579],{"className":2570},[1183],"if ",[126,2573,2574],{},"name"," == \"",[126,2577,2578],{},"main","\":\n    register()",[107,2581,2582],{},"À ce stade, le workflow de versioning des modèles est entièrement bidirectionnel : vous pouvez publier de nouvelles révisions depuis Blender et récupérer instantanément les révisions précédentes.",[233,2584,2586],{"className":2585},[93,236],[238,2587],{"src":2588,"className":2589,"alt":243,"loading":244,"width":2590,"height":2591,"srcSet":2592,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png",[242],759,488,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png 600w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png 759w",[136,2594],{},[139,2596,2597],{"id":1349},[126,2598,1352],{},[107,2600,2601],{},"Avec seulement quelques opérateurs de l’API Blender et la commodité du SDK Gazu, nous avons construit un workflow de versioning pratique (mais basique) qui vit directement dans Blender et reste synchronisé avec Kitsu. Les artistes peuvent lier leur scène Blender à un projet Kitsu, un asset et une tâche, créer de nouvelles révisions en un seul clic, parcourir l’historique complet des révisions pour n’importe quelle tâche, puis ramener d’anciennes versions directement dans Blender chaque fois qu’ils doivent comparer ou récupérer un travail.",[107,2603,2604],{},"Ce workflow n’est qu’un début. Ensuite, vous pourriez étendre l’addon avec des exports automatisés, des rendus de vignettes ou de turntable, la prise en charge de plusieurs formats de sortie, des outils de revue pour les superviseurs, voire des connexions vers un render farm.",[107,2606,2607,2608,2613],{},"Pour vous lancer, assurez-vous de cloner",[150,2609,751,2610],{"href":2051},[695,2611,2612],{},"notre repository Github"," pour cet addon de versioning et testez-le par vous-même !",[90,2615,2617,2620],{"className":2616},[93,94,95],[90,2618,587],{"className":2619},[99],[90,2621,1394,2623,2626],{"className":2622},[104],[150,2624,1398],{"href":594,"rel":2625},[596]," ! Nous échangeons avec plus d’un millier d’experts qui partagent des bonnes pratiques et qui organisent parfois des événements en personne. Nous serions ravis de vous accueillir ! 😊",[90,2628,2630],{"className":2629},[93,602,603],[150,2631,1405],{"href":594,"className":2632},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":2634},[2635,2636,2637,2638,2639,2640,2641],{"id":1988,"depth":611,"text":1991},{"id":2057,"depth":611,"text":2060},{"id":2162,"depth":611,"text":2165},{"id":2345,"depth":611,"text":2348},{"id":2420,"depth":611,"text":2423},{"id":2492,"depth":611,"text":2495},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1617746533234-288e5cf484e2?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMwfHxhbmltYXRpb24lMjBwaXBlbGluZXxlbnwwfHx8fDE3NjYzODE5ODZ8MA&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":2644,"featured_at":625,"visibility":626},"2026-02-20T06:04:01.000+01:00","/blog-i18n/fr/blender-kitsu-versioning-addon","2025-12-22T10:00:20.000+01:00",{"title":1938,"description":243},"blender-kitsu-versioning-addon","blog-i18n/fr/blender-kitsu-versioning-addon/index",[2651,2652],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"37-KV4iy7_fdO_I5aewYlnv9Q_WsT02RjuFezAWeiGQ",{"id":2655,"title":2656,"authors":2657,"body":2659,"description":243,"extension":621,"feature_image":3249,"html":7,"meta":3250,"navigation":12,"path":3251,"published_at":3252,"seo":3253,"slug":3254,"stem":3255,"tags":3256,"__hash__":3259,"updated_at":2644,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-kitsu-low-res-preview/index.md","Automatiser les aperçus d’animation basse résolution dans Blender avec Kitsu (2026)",[2658],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":2660,"toc":3239},[2661,2672,2675,2678,2681,2684,2702,2705,2731,2733,2739,2742,2745,2760,2768,2770,2776,2783,2797,2800,2803,2805,2811,2818,2827,2848,2855,2858,2861,2864,2869,2877,2880,2882,2888,2902,2905,2923,2960,2963,2971,2978,2980,2986,2995,2998,3062,3082,3092,3095,3098,3107,3110,3120,3122,3128,3131,3138,3144,3147,3153,3162,3164,3170,3173,3176,3185,3187,3191,3194,3214,3217,3220,3233],[90,2662,2664,2668],{"className":2663},[93,94,95],[90,2665,2667],{"className":2666},[99],"⚡",[90,2669,2671],{"className":2670},[104],"Accélérez les revues d’animation grâce à des aperçus légers qui se rendent en quelques secondes, pas en heures.",[107,2673,2674],{},"Attendre des rendus pleine résolution juste pour évaluer un plan ralentit toute la production. Les artistes passent du temps à attendre et les superviseurs voient leurs retours différés. La boucle d’itération est inefficace.",[107,2676,2677],{},"Pour y remédier, nous pouvons créer des aperçus d’animation basse résolution directement dans Blender et les téléverser automatiquement sur Kitsu via Python dans le cadre de notre pipeline d’animation. Ces aperçus se rendent rapidement, sont faciles à examiner et peuvent être utilisés sans délai dans Kitsu pour validation.",[107,2679,2680],{},"C’est un gros avantage, car les rendus pleine résolution peuvent prendre des heures, et les coûts de stockage cloud et de bande passante réseau ne sont pas anodins quand vous gérez des milliers de plans. Passer de 1080p à 480p peut diviser la taille jusqu’à 5× !",[107,2682,2683],{},"Dans ce tutoriel, nous allons voir comment :",[731,2685,2686,2689,2692,2699],{},[220,2687,2688],{},"Configurer les réglages de rendu Blender pour des aperçus basse résolution",[220,2690,2691],{},"Automatiser le processus de rendu avec Python",[220,2693,2694,2695,2698],{},"Utiliser ",[264,2696,2697],{},"ffmpeg"," pour ajouter un filigrane et un horodatage à la vidéo afin de la contextualiser rapidement",[220,2700,2701],{},"Exporter les vidéos et les téléverser sur Kitsu",[107,2703,2704],{},"À la fin, vous disposerez d’un script qui fait gagner du temps sur les revues de plans sans sacrifier la qualité des retours.",[90,2706,2708,2711],{"className":2707},[93,94,1138],[90,2709,1142],{"className":2710},[99],[90,2712,2714,2718,2720,2722,2723,2725,1162,2727],{"className":2713},[104],[1147,2715,2716],{},[126,2717,1151],{"style":725},[1153,2719],{},[1153,2721],{},"Vous pouvez trouver le code source complet de l’intégration d’exemple présentée dans ce guide sur notre GitHub :",[1153,2724],{},[1153,2726],{},[150,2728,2730],{"href":2729},"https://github.com/cgwire/blender-kitsu-low-res-preview?ref=blog.cg-wire.com","https://github.com/cgwire/blender-kitsu-low-res-preview",[136,2732],{},[139,2734,2736],{"id":2735},"_1-simple-blender-scene-setup",[126,2737,2738],{},"1. Configuration simple de la scène Blender",[107,2740,2741],{},"Avant de pouvoir créer un aperçu animé, nous avons besoin d’un objet de départ dans la scène. Pour ce tutoriel, nous utiliserons le cube par défaut de Blender.",[107,2743,2744],{},"D’abord, nous créons une référence de la scène et du cube :",[1178,2746,2747,2750],{},[264,2748,1615],{"className":2749},[1183],[107,2751,2752],{},[264,2753,2755,2756,2759],{"className":2754},[1183],"cube = bpy.data.objects",[1219,2757,2758],{},"\"Cube\"","\nscene = bpy.context.scene",[233,2761,2763],{"className":2762},[93,236],[238,2764],{"src":2765,"className":2766,"alt":243,"loading":244,"width":712,"height":1675,"srcSet":2767,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 1600w",[136,2769],{},[139,2771,2773],{"id":2772},"_2-adding-keyframes-for-animation",[126,2774,2775],{},"2. Ajouter des keyframes pour l’animation",[107,2777,2778,2779,2782],{},"La prochaine étape consiste à animer notre cube. Pour des aperçus rapides de modélisation, des séquences courtes sont idéales. Ici, nous allons créer une ",[126,2780,2781],{},"rotation de 360°"," sur 48 frames (2 secondes à 24 FPS) :",[1178,2784,2785],{},[264,2786,2788,2789,2792,2793,2796],{"className":2787},[1183],"for frame, angle in ",[1219,2790,2791],{},"(1, 0), (12, 1.57), (24, 3.14), (36, 4.71), (48, 6.28)",":\n    scene.frame_set(frame)\n    cube.rotation_euler",[1219,2794,2795],{},"2"," = angle\n    cube.keyframe_insert(data_path=\"rotation_euler\", index=2)",[107,2798,2799],{},"Cette boucle place des keyframes à intervalles réguliers, en faisant tourner le cube en douceur autour de son axe Z par incréments de pi/2. Utiliser un nombre limité de frames permet de garder le rendu rapide et rend le résultat parfait pour un usage d’aperçu.",[107,2801,2802],{},"À ce stade, vous pouvez parcourir la timeline dans Blender pour vérifier que le cube tourne comme prévu.",[136,2804],{},[139,2806,2808],{"id":2807},"_3-low-resolution-rendering",[126,2809,2810],{},"3. Rendu basse résolution",[107,2812,2813,2814,2817],{},"Une fois l’animation en place, nous pouvons configurer Blender pour rendre un ",[126,2815,2816],{},"aperçu rapide en basse résolution",". L’objectif est la vitesse plutôt que la qualité : nous voulons quelque chose d’assez clair pour être évalué, mais rapide à produire.",[107,2819,2820,2821,2826],{},"Ici, nous utilisons",[150,2822,751,2823],{"href":163},[695,2824,2825],{},"le moteur de rendu Eevee pour gagner en vitesse et réduire la surcharge de rendu inutile",". Il est beaucoup plus rapide que Cycles, car c’est un moteur de rasterisation simple, et dans 90 % des cas, nous n’avons pas besoin d’un rendu hyper réaliste.",[1178,2828,2829,2842],{},[264,2830,2832,2833,2836,2839],{"className":2831},[1183],"scene.render.engine = \"BLENDER_EEVEE\"",[107,2834,2835],{},"scene.render.resolution_x = 1920\nscene.render.resolution_y = 1080\nscene.render.resolution_percentage = 50",[107,2837,2838],{},"scene.render.fps = 24\nscene.frame_start = 1\nscene.frame_end = 48  # match your animation length",[107,2840,2841],{},"scene.render.image_settings.file_format = \"FFMPEG\"\nscene.render.ffmpeg.format = \"MPEG4\"\nscene.render.ffmpeg.codec = \"H264\"",[107,2843,2844],{},[264,2845,2847],{"className":2846},[1183],"scene.render.filepath = \"//preview.mp4\"",[107,2849,2850,2851,2854],{},"Bien que nous partions d’une résolution classique en paysage, réduire ",[264,2852,2853],{},"resolution_percentage"," ou désactiver l’échantillonnage de haute qualité dans Eevee peut diminuer drastiquement les temps de rendu pour les aperçus.",[107,2856,2857],{},"Le reste des réglages est assez standard : 24 images par seconde, 48 frames au total, et une vidéo de sortie en mp4 avec encodage H264 (pour une compression plus rapide) écrite dans le dossier courant du script.",[107,2859,2860],{},"Selon votre cas d’usage, vous pouvez réduire la résolution, diminuer le taux de rafraîchissement et abaisser le débit (bitrate) pour réduire la taille de vos aperçus. Il faut toutefois garder une qualité suffisante pour le processus de revue, donc ajustez les réglages pour obtenir un équilibre optimal avec les performances.",[107,2862,2863],{},"Enfin, nous pouvons lancer le rendu en une seule ligne :",[1178,2865,2866],{},[264,2867,1804],{"className":2868},[1183],[233,2870,2872],{"className":2871},[93,236],[238,2873],{"src":2874,"className":2875,"alt":243,"loading":244,"width":1866,"height":1867,"srcSet":2876,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 1088w",[107,2878,2879],{},"La vidéo d’aperçu peut être utilisée immédiatement pour la revue, ou traitée davantage avec des outils comme FFmpeg pour les horodatages, les filigranes ou des conventions de nommage personnalisées avant téléversement sur Kitsu.",[136,2881],{},[139,2883,2885],{"id":2884},"_4-ffmpeg-processing-timestamp-naming-watermark",[126,2886,2887],{},"4. Traitement avec FFmpeg : horodatage, nommage, filigrane",[107,2889,2890,2891,2894,2895,2901],{},"Une fois que Blender a rendu votre animation dans un fichier vidéo, vous pouvez la traiter davantage avec ",[126,2892,2893],{},"FFmpeg",". C’est",[150,2896,751,2898],{"href":2897},"https://blog.cg-wire.com/ffmpeg-commands-for-animators/",[695,2899,2900],{},"une étape courante dans les pipelines de production"," pour ajouter des horodatages, des filigranes ou un nommage personnalisé, afin de préparer les aperçus pour la revue.",[107,2903,2904],{},"Lancez la commande suivante dans un terminal après avoir rendu votre aperçu :",[1178,2906,2907],{},[264,2908,2910,2911,2914,2915,2918,2919,2922],{"className":2909},[1854],"ffmpeg -framerate 24 \\\\\n  -i preview.mp4 \\\\\n  -i watermark.png \\\\\n  -filter_complex \"\\\\\n    ",[1219,2912,2913],{},"0:v","drawtext=text='%{pts\\\\:hms}':x=10:y=10:fontsize=24:fontcolor=white:bordercolor=black:borderw=2",[1219,2916,2917],{},"v1","; \\\\\n    [v1]",[1219,2920,2921],{},"1:v","overlay=W-w-20:H-h-20\" \\\\\n  -c:v libx264 -crf 22 -pix_fmt yuv420p \\\\\n  preview_with_stamp.mp4",[731,2924,2925,2933,2945,2953],{},[220,2926,2927,2932],{},[126,2928,2929],{},[264,2930,2931],{},"drawtext"," superpose un horodatage en cours dans le coin supérieur gauche.",[220,2934,2935,2940,2941,2944],{},[264,2936,2937],{},[126,2938,2939],{},"overlay"," place une image de filigrane (",[264,2942,2943],{},"watermark.png",") dans le coin inférieur droit.",[220,2946,2947,2952],{},[126,2948,2949],{},[264,2950,2951],{},"c:v libx264 -crf 22 -pix_fmt yuv420p"," garantit une bonne qualité et une compatibilité étendue pour la lecture vidéo.",[220,2954,2955,2956,2959],{},"Le fichier de sortie, ",[264,2957,2958],{},"preview_with_stamp.mp4",", est votre aperçu finalisé prêt pour la revue.",[107,2961,2962],{},"Bien sûr, vous pouvez ajuster la taille de la police, la position ou le placement du filigrane selon vos besoins pour standardiser les aperçus pour vos revues d’équipe ou clients.",[233,2964,2966],{"className":2965},[93,236],[238,2967],{"src":2968,"className":2969,"alt":243,"loading":244,"width":1866,"height":1867,"srcSet":2970,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 1088w",[107,2972,2973,2974,2977],{},"Cette étape termine la préparation d’un aperçu d’animation basse résolution prêt pour la production. Le fichier est maintenant prêt à être téléversé sur ",[126,2975,2976],{},"Kitsu"," pour un retour rapide.",[136,2979],{},[139,2981,2983],{"id":2982},"_5-uploading-to-kitsu-via-gazu",[126,2984,2985],{},"5. Téléverser sur Kitsu via Gazu",[107,2987,2988,2989,2991,2992,2994],{},"Une fois votre aperçu basse résolution prêt, vous pouvez le téléverser directement sur ",[126,2990,2976],{}," via le tableau de bord ou utiliser le SDK Python ",[264,2993,2171],{},". Kitsu est un outil collaboratif de suivi de pipeline qui permet aux artistes et aux superviseurs d’accéder à l’aperçu immédiatement pour la revue.",[107,2996,2997],{},"Le script Python suivant fournit une CLI interactive simple qui vous permet de choisir le projet et la tâche vers lesquels téléverser votre aperçu :",[1178,2999,3000,3056],{},[264,3001,3003,3004,3014,3027,3040,3047,3050,3053],{"className":3002},[1183],"import gazu",[107,3005,3006,3007,3010,3011],{},"def pickProject(label, list_of_items):\n    \"\"\"Helper UI to pick one item from a list.\"\"\"\n    for i, item in enumerate(list_of_items):\n        print(f\"{i + 1}. {item",[1219,3008,3009],{},"'name'","}\")\n    idx = int(input(f\"Choose {label} number: \")) - 1\n    return list_of_items",[1219,3012,3013],{},"idx",[107,3015,3016,3017,3020,3021,3024,3025,1283],{},"def pickTask(label, list_of_items):\n    \"\"\"Helper UI to pick one item from a list.\"\"\"\n    for i, item in enumerate(list_of_items):\n        asset = gazu.entity.get_entity(item",[1219,3018,3019],{},"\"entity_id\"",")\n        status = gazu.task.get_task_status(item",[1219,3022,3023],{},"\"task_status_id\"",")\n        type = gazu.task.get_task_type(item",[1219,3026,2309],{},[107,3028,3029,3030,3032,3033,3035,3036,3010,3038],{},"        print(f\"{i + 1}. {asset",[1219,3031,3009],{},"} {type",[1219,3034,3009],{},"} {status",[1219,3037,3009],{},[1219,3039,3013],{},[107,3041,2221,3042,2227,3045,2232],{},[150,3043,2224],{"href":2224,"rel":3044},[2226],[150,3046,2231],{"href":2230},[107,3048,3049],{},"projects = gazu.project.all_projects()\nproject = pickProject(\"project\", projects)",[107,3051,3052],{},"tasks = gazu.task.all_tasks_for_project(project)\ntask = pickTask(\"task\", tasks)",[107,3054,3055],{},"print(\"Uploading preview...\")\ntask_status = gazu.task.get_task_status_by_name(\"todo\")\nresult = gazu.task.publish_preview(\n    task,\n    task_status,\n    comment=\"Auto-generated preview\",\n    preview_file_path=\"./preview.mp4\",\n)",[107,3057,3058],{},[264,3059,3061],{"className":3060},[1183],"print(\"Done:\", result)",[107,3063,3064,3065,3067,3068,3073,3074,3077,3078,3081],{},"D’abord, nous nous connectons à Kitsu via ",[264,3066,2171],{}," avec vos identifiants. Nous utilisons le",[150,3069,751,3070],{"href":2066},[695,3071,3072],{},"mode d’installation pour le développement local via Kitsu Docker",". Le programme vous permet de sélectionner le ",[126,3075,3076],{},"projet"," et la ",[126,3079,3080],{},"tâche"," parmi les options disponibles à l’aide de différents endpoints de l’API Kitsu afin d’obtenir toutes vos données de production :",[233,3083,3085],{"className":3084},[93,236],[238,3086],{"src":3087,"className":3088,"alt":243,"loading":244,"width":3089,"height":3090,"srcSet":3091,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png",[242],1343,816,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 1343w",[107,3093,3094],{},"Ensuite, nous téléversons la vidéo d’aperçu générée des étapes précédentes vers la tâche sélectionnée.",[107,3096,3097],{},"Une fois terminé, l’aperçu est disponible dans l’interface de revue de Kitsu, ce qui permet aux membres de l’équipe et aux superviseurs de donner leur avis sans attendre des rendus pleine résolution.",[233,3099,3101],{"className":3100},[93,236],[238,3102],{"src":3103,"className":3104,"alt":243,"loading":244,"width":2100,"height":3105,"srcSet":3106,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png",[242],948,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png 985w",[107,3108,3109],{},"Moteur de revue parfait pour annoter rapidement les images et ajouter des commentaires sur des plans précis :",[233,3111,3113],{"className":3112},[93,236],[238,3114],{"src":3115,"className":3116,"alt":243,"loading":244,"width":3117,"height":3118,"srcSet":3119,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png",[242],1438,809,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 1438w",[136,3121],{},[139,3123,3125],{"id":3124},"_6-putting-it-all-together",[126,3126,3127],{},"6. Tout assembler",[107,3129,3130],{},"Pour automatiser la tâche de bout en bout, écrivons une commande bash rapide :",[107,3132,3133],{},[126,3134,3135],{},[695,3136,3137],{},"preview.sh",[1178,3139,3140],{},[264,3141,3143],{"className":3142},[1183],"python3 render.py && ./watermark.sh && python3 upload.py",[107,3145,3146],{},"Ensuite, nous pouvons exécuter le script chaque fois que nous devons partager un aperçu :",[1178,3148,3149],{},[264,3150,3152],{"className":3151},[1183],"./preview.sh",[107,3154,3155,3156,3161],{},"Jetez un œil à notre",[150,3157,751,3158],{"href":2729},[695,3159,3160],{},"dépôt Github blender-kitsu-low-res-preview"," pour tester le résultat final par vous-même.",[136,3163],{},[139,3165,3167],{"id":3166},"_7-artist-friendly-addon-overview",[126,3168,3169],{},"7. Aperçu de l’addon pensé pour les artistes",[107,3171,3172],{},"Bien que cela sorte du cadre de cet article, il pourrait être simple d’envelopper notre code dans un addon Blender afin que les artistes puissent l’utiliser facilement.",[107,3174,3175],{},"Vous auriez besoin d’un panneau principal pour contenir des menus déroulants afin de choisir une production, un asset et une tâche à téléverser. Et d’un bouton à cliquer pour téléverser. La logique de téléversement prendrait en charge le rendu, l’appel à ffmpeg en tant que sous-processus pour le filigrane, et l’envoi des fichiers temporaires vers Kitsu.",[107,3177,3178,3179,3184],{},"Consultez notre article sur",[150,3180,751,3181],{"href":2500},[695,3182,3183],{},"le développement d’interface pour un add-on Blender"," pour plus d’informations.",[136,3186],{},[139,3188,3189],{"id":1349},[126,3190,1352],{},[107,3192,3193],{},"D’ici là, vous aurez mis en place un pipeline complet : créer un objet 3D simple dans Blender, l’animer, générer un aperçu basse résolution, ajouter des horodatages et des filigranes, puis le téléverser sur Kitsu. Les bénéfices sont immédiats :",[731,3195,3196,3202,3208],{},[220,3197,3198,3201],{},[126,3199,3200],{},"Des revues plus rapides"," - Les superviseurs et les membres de l’équipe peuvent regarder les aperçus immédiatement sans attendre des rendus pleine résolution.",[220,3203,3204,3207],{},[126,3205,3206],{},"Des itérations plus rapides"," - Les artistes reçoivent des retours plus tôt, ce qui raccourcit la boucle d’itération et réduit les goulots d’étranglement.",[220,3209,3210,3213],{},[126,3211,3212],{},"Moins de blocages"," - Les aperçus et téléversements automatisés éliminent les étapes manuelles répétitives du pipeline pour garantir des livrables cohérents.",[107,3215,3216],{},"Ce qui prenait autrefois une heure de travail manuel peut désormais être géré avec quelques scripts, offrant à l’équipe plus de temps pour se concentrer sur le côté créatif de la production plutôt que sur des tâches répétitives.",[107,3218,3219],{},"Vous pouvez aller encore plus loin avec ce workflow selon les besoins de votre studio d’animation : ajouter des boutons ou des panneaux dans Blender pour exécuter l’intégralité du pipeline en un clic, générer automatiquement des aperçus par lot pour plusieurs plans ou scènes dans un seul script, etc.",[90,3221,3223,3226],{"className":3222},[93,94,95],[90,3224,587],{"className":3225},[99],[90,3227,591,3229,3232],{"className":3228},[104],[150,3230,1398],{"href":594,"rel":3231},[596]," ! Nous échangeons avec plus d’un millier d’experts qui partagent les meilleures pratiques et organisent occasionnellement des événements en personne. Nous serions ravis de vous accueillir ! 😊",[90,3234,3236],{"className":3235},[93,602,603],[150,3237,1405],{"href":594,"className":3238},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":3240},[3241,3242,3243,3244,3245,3246,3247,3248],{"id":2735,"depth":611,"text":2738},{"id":2772,"depth":611,"text":2775},{"id":2807,"depth":611,"text":2810},{"id":2884,"depth":611,"text":2887},{"id":2982,"depth":611,"text":2985},{"id":3124,"depth":611,"text":3127},{"id":3166,"depth":611,"text":3169},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1653200256306-6dc84510dfb6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGFuaW1hdGlvbiUyMHBpcGVsaW5lfGVufDB8fHx8MTc2NTA5ODQ2Mnww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":2644,"featured_at":625,"visibility":626},"/blog-i18n/fr/blender-kitsu-low-res-preview","2025-12-15T10:00:23.000+01:00",{"title":2656,"description":243},"blender-kitsu-low-res-preview","blog-i18n/fr/blender-kitsu-low-res-preview/index",[3257,3258],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"170wyq20d2qJm0mUN-v6ZZuSEjvoz5Zwl_GvM3o48fA",{"id":3261,"title":3262,"authors":3263,"body":3265,"description":243,"extension":621,"feature_image":3972,"html":7,"meta":3973,"navigation":12,"path":3975,"published_at":3976,"seo":3977,"slug":3978,"stem":3979,"tags":3980,"__hash__":3983,"updated_at":3974,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-kitsu-breakdown-automation/index.md","Comment générer automatiquement des plans Blender avec Python et Kitsu (2026)",[3264],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":3266,"toc":3963},[3267,3278,3285,3291,3294,3297,3304,3330,3332,3338,3352,3355,3358,3399,3409,3415,3418,3426,3433,3460,3465,3468,3470,3476,3483,3486,3530,3535,3542,3545,3547,3553,3556,3562,3568,3573,3581,3584,3586,3592,3603,3614,3626,3647,3650,3652,3658,3669,3684,3697,3707,3709,3715,3718,3726,3890,3895,3904,3914,3923,3925,3929,3932,3941,3944,3957],[90,3268,3270,3274],{"className":3269},[93,94,95],[90,3271,3273],{"className":3272},[99],"🧩",[90,3275,3277],{"className":3276},[104],"Automatisez la préparation de vos plans et éliminez des heures de placement manuel d’assets.",[107,3279,3280,3281,3284],{},"Les studios d’animation s’appuient sur des ",[126,3282,3283],{},"listes de breakdown"," pour suivre les assets qui doivent apparaître dans chaque plan.",[107,3286,3287,3288],{},"Imaginez ceci. Vous êtes un(e) artiste VFX, face à un viewport Blender vide pour la production en cours. Votre responsable vous remet la liste détaillée des assets, des plans et des repères de timing, puis vous dit : ",[130,3289,3290],{},"\"Transforme ça en scène Blender.\"",[107,3292,3293],{},"Votre première idée pourrait être de vous connecter à votre gestionnaire d’assets et de placer chaque objet manuellement. Mais qu’en est-il des scènes complexes avec des centaines d’assets ?",[107,3295,3296],{},"C’est à ce moment qu’une simple automatisation peut sauver la mise. Avec le scripting Python pour Blender, vous pouvez lire les données de breakdown de Kitsu et générer automatiquement une scène initiale en quelques minutes.",[107,3298,3299,3300,3303],{},"Dans cet article, nous allons parcourir un exemple complet : récupérer des breakdowns via la ",[126,3301,3302],{},"API Python de Gazu",", créer une nouvelle scène Blender, télécharger les assets, et les importer dans Blender. À la fin, vous disposerez d’un pipeline minimal qui construit des scènes automatiquement, prêtes pour le layout ou l’animation.",[90,3305,3307,3310],{"className":3306},[93,94,1138],[90,3308,1142],{"className":3309},[99],[90,3311,3313,3317,3319,3321,3322,3324,1162,3326],{"className":3312},[104],[1147,3314,3315],{},[126,3316,1151],{"style":725},[1153,3318],{},[1153,3320],{},"Vous pouvez trouver le code source complet de l’intégration de l’exemple présentée dans ce guide sur notre GitHub :",[1153,3323],{},[1153,3325],{},[150,3327,3329],{"href":3328},"https://github.com/cgwire/blender-kitsu-automated-scene-composition?ref=blog.cg-wire.com","https://github.com/cgwire/blender-kitsu-automated-scene-composition",[136,3331],{},[139,3333,3335],{"id":3334},"_1-getting-the-breakdown",[126,3336,3337],{},"1. Obtenir le breakdown",[107,3339,3340,3341,3351],{},"Chaque plan 3D commence comme une toile vierge, mais les instructions pour remplir cette toile existent déjà dans Kitsu :",[150,3342,751,3344],{"href":3343},"https://blog.cg-wire.com/3d-animation-process/",[695,3345,3346,3347,3350],{},"le ",[126,3348,3349],{},"breakdown"," indique précisément ce qui doit se trouver sur scène"," avant que l’animateur commence son travail.",[107,3353,3354],{},"Un breakdown typique fournit le contexte narratif essentiel dont votre script a besoin pour assembler la scène : la scène (images de départ et de fin, durée et autres annotations stockées dans les informations de séquence), et la distribution (le breakdown réel des modèles de personnages, des props et des assets d’environnement).",[107,3356,3357],{},"Avant d’écrire du code, vous devez définir le breakdown dans le tableau de bord Kitsu. C’est là que vous reliez manuellement votre bibliothèque d’assets 3D aux plans spécifiques pour lesquels ils sont requis. Ici, vous ne créez pas de nouveaux modèles : vous affectez simplement des « acteurs » (assets) à un plan précis :",[217,3359,3360,3369,3379,3389],{},[220,3361,3362,3365,3366,133],{},[126,3363,3364],{},"Accédez à votre production"," - Naviguez vers votre projet dans Kitsu et ouvrez l’onglet ",[126,3367,3368],{},"Shots",[220,3370,3371,3374,3375,3378],{},[126,3372,3373],{},"Trouvez la feuille de casting"," - Cherchez l’onglet ",[126,3376,3377],{},"Breakdown"," (généralement situé dans le panneau de droite ou dans un onglet dédié selon votre version).",[220,3380,3381,3384,3385,3388],{},[126,3382,3383],{},"Sélectionnez le plan"," - Cliquez sur le plan précis que vous souhaitez remplir (par ex. ",[264,3386,3387],{},"SH01",") pour ouvrir la vue détaillée du casting.",[220,3390,3391,3394,3395,3398],{},[126,3392,3393],{},"Assignez les assets"," - Dans le panneau latéral droit, cliquez sur le bouton ",[126,3396,3397],{},"+ (Plus)"," ou sur « Add Asset ». Vous pouvez aussi indiquer ici la quantité de chaque asset dont vous avez besoin.",[233,3400,3402],{"className":3401},[93,236],[238,3403],{"src":3404,"className":3405,"alt":243,"loading":244,"width":3406,"height":3407,"srcSet":3408,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-ef6fba58-9c73-4a38-b466-0b9d92e4efc0.png",[242],1466,804,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-ef6fba58-9c73-4a38-b466-0b9d92e4efc0.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-ef6fba58-9c73-4a38-b466-0b9d92e4efc0.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-ef6fba58-9c73-4a38-b466-0b9d92e4efc0.png 1466w",[107,3410,3411,3412,3414],{},"Assurez-vous que votre page ",[126,3413,2121],{}," contient déjà les modèles (Characters, Props, etc.) que vous avez l’intention d’utiliser.",[107,3416,3417],{},"Une fois que vous cliquez sur enregistrer, le lien est établi. Maintenant, lorsque votre script Python demande à Gazu : « Qui est dans ce plan ? », Kitsu répond avec la liste des assets que vous venez d’assigner. Votre script Python joue le rôle de passerelle : il analyse ce casting pour remplir automatiquement le viewport Blender.",[107,3419,3420,3421,133],{},"Si vous avez besoin d’un environnement local de développement, jetez un œil à ",[150,3422,751,3423],{"href":2066},[695,3424,3425],{},"comment installer Kitsu depuis Docker dans le guide Custom DCC Bridge",[107,3427,3428,3429,3432],{},"Pendant que Kitsu détient les données, nous avons besoin d’un moyen de les récupérer. Passons à ",[126,3430,3431],{},"Gazu",", le SDK Python pour l’API REST de Kitsu :",[1178,3434,3435,3454],{},[264,3436,3438,3439,3446,3451],{"className":3437},[1183],"import gazu\n",[107,3440,2221,3441,2227,3444,2232],{},[150,3442,2224],{"href":2224,"rel":3443},[2226],[150,3445,2231],{"href":2230},[107,3447,3448,3449],{},"projects = gazu.project.all_projects()\nproject = projects",[1219,3450,1252],{},[107,3452,3453],{},"sequence = gazu.shot.get_sequence_by_name(project, \"SQ01\")\nshot = gazu.shot.get_shot_by_name(sequence, \"SH01\")",[107,3455,3456],{},[264,3457,3459],{"className":3458},[1183],"assets = gazu.casting.get_shot_casting(shot)",[107,3461,3462,3464],{},[1153,3463],{},"On se connecte à notre instance locale de Kitsu, puis on choisit notre première production (vous pouvez aussi récupérer une production par nom) et le plan pour lequel nous avons besoin du casting.",[107,3466,3467],{},"Nous pouvons utiliser cet identifiant de plan pour récupérer le casting correspondant des assets, c’est-à-dire la liste de breakdown.",[136,3469],{},[139,3471,3473],{"id":3472},"_2-getting-assets-from-a-breakdown",[126,3474,3475],{},"2. Obtenir des assets à partir d’un breakdown",[107,3477,3478,3479,3482],{},"Maintenant que nous savons ",[130,3480,3481],{},"qui"," se trouve dans le plan, nous devons déterminer à quoi ils ressemblent.",[107,3484,3485],{},"Dans Kitsu, un asset peut avoir de nombreux fichiers d’aperçu que nous pouvons utiliser selon les révisions. Notre script doit pouvoir parcourir ces données pour obtenir la dernière révision de chaque asset :",[1178,3487,3488,3524],{},[264,3489,3491,3492,3494,3495,3498,3499,1283,3502,3507,3510,3521],{"className":3490},[1183],"local_paths = ",[1219,3493],{},"\nfor asset in assets:\n    tasks = gazu.task.all_tasks_for_asset(asset",[1219,3496,3497],{},"\"asset_id\"",")\n    last_task = max(tasks, key=lambda x: x",[1219,3500,3501],{},"\"updated_at\"",[107,3503,3504,3505,1283],{},"    preview_files = gazu.files.get_all_preview_files_for_task(last_task)\n    last_preview_file = max(preview_files, key=lambda x: x",[1219,3506,3501],{},[107,3508,3509],{},"    download_dir = \"./previews\"\n    os.makedirs(download_dir, exist_ok=True)",[107,3511,3512,3513,3516,3517,3520],{},"    save_path = os.path.join(\n        download_dir,\n        last_preview_file",[1219,3514,3515],{},"\"original_name\""," + \".\" + last_preview_file",[1219,3518,3519],{},"\"extension\"",",\n    )",[107,3522,3523],{},"    gazu.files.download_preview_file(last_preview_file, save_path)",[107,3525,3526],{},[264,3527,3529],{"className":3528},[1183],"    local_paths.append(save_path)",[107,3531,3532,3534],{},[1153,3533],{},"Pour chaque asset, nous récupérons une liste de toutes les tasks correspondantes, quel que soit le type (« Modeling », « Animation », etc.) ou le statut (« done », « todo »…). Nous filtrons cette liste pour obtenir la task mise à jour le plus récemment.",[107,3536,3537,3538,3541],{},"Nous pouvons utiliser l’identifiant de cette task pour obtenir la dernière révision du fichier d’aperçu correspondant et le télécharger dans un dossier local ",[264,3539,3540],{},"previews",". Nous conservons ces chemins de téléchargement en mémoire pour l’étape d’import.",[107,3543,3544],{},"À la fin de cette boucle, vous avez transformé avec succès des entrées de base de données en fichiers modèles concrets sur votre disque dur, prêts à être importés par Blender.",[136,3546],{},[139,3548,3550],{"id":3549},"_3-creating-a-new-blender-scene",[126,3551,3552],{},"3. Créer une nouvelle scène Blender",[107,3554,3555],{},"Une fois les fichiers d’assets téléchargés en toute sécurité, la tâche suivante consiste à préparer l’environnement Blender afin d’accueillir son nouveau membre de distribution.",[107,3557,3558,3559,3561],{},"Le module ",[264,3560,1471],{},", l’API Python native de Blender, agit comme votre console de commandes et vous permet de manipuler chaque élément de l’application.",[107,3563,3564,3565,3567],{},"Avant d’importer nos assets Kitsu, nous devons supprimer tous les objets par défaut qui accompagnent une nouvelle scène Blender. Pour ce tutoriel simple, nous visons le ",[126,3566,1627],{}," par défaut, souvent le seul objet présent en dehors de la Camera et de la Light :",[1178,3569,3570],{},[264,3571,1621],{"className":3572},[1183],[107,3574,3575,3577,3578,3580],{},[1153,3576],{},"Le paramètre ",[264,3579,1631],{}," indique à Blender de supprimer complètement le bloc de données de l’objet (comme ses données de maillage) s’il n’est plus utilisé par un autre objet, afin de ne laisser aucun élément superflu.",[107,3582,3583],{},"Nous sommes maintenant prêts à placer les assets importés à leur position.",[136,3585],{},[139,3587,3589],{"id":3588},"_4-importing-asset-files",[126,3590,3591],{},"4. Importer des fichiers d’assets",[107,3593,3594,3595,3598,3599,3602],{},"Passons au résultat ! Le fichier que nous avons téléchargé depuis Kitsu est un format d’échange standardisé ",[264,3596,3597],{},".glb",", qui gère à la fois la géométrie et les matériaux de base ; nous utilisons donc l’opérateur d’import dédié ",[264,3600,3601],{},"gltf"," de Blender.",[107,3604,3605,3606,3609,3610,3613],{},"La partie cruciale est de fournir le ",[126,3607,3608],{},"chemin de fichier absolu"," (",[264,3611,3612],{},"glb_path",") vers l’asset téléchargé. Heureusement, nous les avons stockés dans l’extrait de code précédent :",[1178,3615,3616,3620],{},[264,3617,3619],{"className":3618},[1183],"for path in local_paths:\n    if path.lower().endswith((\".glb\")):\n        print(f\"Importing: {path}\")\n        bpy.ops.import_scene.gltf(filepath=path)",[107,3621,3622],{},[264,3623,3625],{"className":3624},[1183],"print(\"All preview GLB files imported successfully!\")",[107,3627,3628,3630,3631,3634,3635,3638,3639,3642,3643,3646],{},[1153,3629],{},"Une fois que ",[264,3632,3633],{},"bpy.ops.import_scene.gltf()"," s’exécute, Blender lit le fichier et crée automatiquement les ",[126,3636,3637],{},"objets",", ",[126,3640,3641],{},"meshes"," et ",[126,3644,3645],{},"materials"," correspondants dans la scène en cours.",[107,3648,3649],{},"L’asset importé est désormais un objet Blender à part entière, placé à l’origine du monde (0, 0, 0), prêt pour les étapes suivantes du pipeline.",[136,3651],{},[139,3653,3655],{"id":3654},"_5-saving-the-scene",[126,3656,3657],{},"5. Enregistrer la scène",[107,3659,3660,3661,3664,3665,3668],{},"La dernière étape dans ce segment de pipeline est d’enregistrer la mise en page assemblée dans un fichier permanent et versionnable. Si vous fermez Blender sans cette étape, tout le travail automatisé est perdu : nous utilisons donc l’opérateur ",[264,3662,3663],{},"bpy.ops.wm.save_as_mainfile",". C’est l’équivalent programmatique du clic ",[126,3666,3667],{},"File &gt; Save As"," dans l’interface Blender :",[1178,3670,3671,3678],{},[264,3672,3674,3675],{"className":3673},[1183],"scene_save_dir = \"./\"\nos.makedirs(scene_save_dir, exist_ok=True)",[107,3676,3677],{},"blend_filename = \"SH01.blend\"\nblend_path = os.path.join(scene_save_dir, blend_filename)",[107,3679,3680],{},[264,3681,3683],{"className":3682},[1183],"bpy.ops.wm.save_as_mainfile(filepath=blend_path)",[107,3685,3686,3688,3689,3692,3693,3696],{},[1153,3687],{},"Le résultat est un nouveau fichier Blender, ",[264,3690,3691],{},"SH01.blend",", qui reflète parfaitement les ",[126,3694,3695],{},"exigences de breakdown"," depuis Kitsu, prêt pour que le prochain département puisse le récupérer.",[233,3698,3700],{"className":3699},[93,236],[238,3701],{"src":3702,"className":3703,"alt":243,"loading":244,"width":3704,"height":3705,"srcSet":3706,"sizes":248},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-91e5cf8e-acb1-4ac0-b5ec-d2c37a6a1ed6.png",[242],1460,828,"https://blog.cg-wire.com/content/images/size/w600/2025/12/data-src-image-91e5cf8e-acb1-4ac0-b5ec-d2c37a6a1ed6.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/12/data-src-image-91e5cf8e-acb1-4ac0-b5ec-d2c37a6a1ed6.png 1000w, https://blog.cg-wire.com/content/images/2025/12/data-src-image-91e5cf8e-acb1-4ac0-b5ec-d2c37a6a1ed6.png 1460w",[136,3708],{},[139,3710,3712],{"id":3711},"_6-user-friendly-addon",[126,3713,3714],{},"6. Un addon convivial",[107,3716,3717],{},"Le script fonctionne comme prévu, mais qu’en est-il des artistes ? Tout le monde ne sait pas comment exécuter un script.",[107,3719,3720,3721,1819],{},"Modifions légèrement notre code pour ",[150,3722,751,3723],{"href":2500},[695,3724,3725],{},"le transformer en addon Blender",[1178,3727,3728,3881],{},[264,3729,3731,3732,3735,3737,3740,3755,3772,3787,3790,3793,3796,3799,3802,3805,3808,3813,3819,3825,3830,3839,3842,3845,3848,3851,3857,3860,3863,3866,3869,3872,3875,3878],{"className":3730},[1183],"bl_info = {\n    \"name\": \"Kitsu Shot Auto-Importer\",\n    \"description\": \"Pick a project and shot and auto-import the latest preview assets\",\n    \"author\": \"cgwire\",\n    \"version\": (1, 0, 0),\n    \"blender\": (3, 0, 0),\n    \"location\": \"Viewport > N-Panel > Kitsu\",\n    \"category\": \"Import-Export\",\n}",[107,3733,3734],{},"import os\nimport sys",[107,3736,2184],{},[107,3738,3739],{},"import bpy\nimport gazu\nfrom bpy.props import EnumProperty, StringProperty",[107,3741,3742,3743,3752,3753],{},"def get_projects():\n    try:\n        projects = gazu.project.all_projects()\n        return ",[1219,3744,3745,3746,2279,3749,3751],{},"(p",[1219,3747,3748],{},"\"id\"",[1219,3750,2278],{},", \"\") for p in projects","\n    except:\n        return ",[1219,3754],{},[107,3756,3757,3758,3760,3761,3752,3770],{},"def get_sequences(project_id):\n    if not project_id:\n        return ",[1219,3759],{},"\n    try:\n        seqs = gazu.shot.all_sequences_for_project(project_id)\n        return ",[1219,3762,3763,3764,3766,3767,3769],{},"(s",[1219,3765,3748],{},", s",[1219,3768,2278],{},", \"\") for s in seqs",[1219,3771],{},[107,3773,3774,3775,3777,3778,3752,3785],{},"def get_shots(sequence_id):\n    if not sequence_id:\n        return ",[1219,3776],{},"\n    try:\n        shots = gazu.shot.all_shots_for_sequence(sequence_id)\n        return ",[1219,3779,3763,3780,3766,3782,3784],{},[1219,3781,3748],{},[1219,3783,2278],{},", \"\") for s in shots",[1219,3786],{},[107,3788,3789],{},"class KITSU_Props(bpy.types.PropertyGroup):\n    project: EnumProperty(name=\"Project\", items=lambda self, context: get_projects())",[107,3791,3792],{},"    sequence: EnumProperty(\n        name=\"Sequence\", items=lambda self, context: get_sequences(self.project)\n    )",[107,3794,3795],{},"    shot: EnumProperty(\n        name=\"Shot\", items=lambda self, context: get_shots(self.sequence)\n    )",[107,3797,3798],{},"class KITSU_OT_import_shot(bpy.types.Operator):\n    bl_idname = \"kitsu.import_shot_assets\"\n    bl_label = \"Import Shot Assets\"\n    bl_description = (\n        \"Download and import latest preview GLB/GLTF files for selected shot\"\n    )",[107,3800,3801],{},"    def execute(self, context):\n        props = context.scene.kitsu_props",[107,3803,3804],{},"        # Fetch shot data\n        shot = gazu.shot.get_shot(props.shot)\n        assets = gazu.casting.get_shot_casting(shot)",[107,3806,3807],{},"        download_dir = os.path.join(bpy.app.tempdir, \"kitsu_previews\")\n        os.makedirs(download_dir, exist_ok=True)",[107,3809,3810,3811],{},"        local_paths = ",[1219,3812],{},[107,3814,3815,3816,3818],{},"        for asset in assets:\n            tasks = gazu.task.all_tasks_for_asset(asset",[1219,3817,3497],{},")\n            if not tasks:\n                continue",[107,3820,3821,3822,3824],{},"            last_task = max(tasks, key=lambda x: x",[1219,3823,3501],{},")\n            preview_files = gazu.files.get_all_preview_files_for_task(last_task)\n            if not preview_files:\n                continue",[107,3826,3827,3828,1283],{},"            last_preview = max(preview_files, key=lambda x: x",[1219,3829,3501],{},[107,3831,3832,3833,3835,3836,3838],{},"            save_path = os.path.join(\n                download_dir,\n                last_preview",[1219,3834,3515],{}," + \".\" + last_preview",[1219,3837,3519],{},",\n            )",[107,3840,3841],{},"            gazu.files.download_preview_file(last_preview, save_path)\n            local_paths.append(save_path)",[107,3843,3844],{},"        # Clean default cube\n        obj = bpy.data.objects.get(\"Cube\")\n        if obj:\n            bpy.data.objects.remove(obj, do_unlink=True)",[107,3846,3847],{},"        # Import GLB/GLTF assets\n        for path in local_paths:\n            if path.lower().endswith((\".glb\", \".gltf\")):\n                bpy.ops.import_scene.gltf(filepath=path)",[107,3849,3850],{},"        # Auto-save blend file\n        save_dir = os.path.join(os.path.expanduser(\"~\"), \"kitsu_scenes\")\n        os.makedirs(save_dir, exist_ok=True)",[107,3852,3853,3854,3856],{},"        blend_path = os.path.join(save_dir, f\"{shot",[1219,3855,3009],{},"}.blend\")\n        bpy.ops.wm.save_as_mainfile(filepath=blend_path)",[107,3858,3859],{},"        self.report({\"INFO\"}, f\"Imported assets and saved: {blend_path}\")\n        return {\"FINISHED\"}",[107,3861,3862],{},"class KITSU_PT_panel(bpy.types.Panel):\n    bl_label = \"Kitsu Auto-Importer\"\n    bl_idname = \"KITSU_PT_auto_importer\"\n    bl_space_type = \"VIEW_3D\"\n    bl_region_type = \"UI\"\n    bl_category = \"Kitsu\"",[107,3864,3865],{},"    def draw(self, context):\n        props = context.scene.kitsu_props\n        layout = self.layout",[107,3867,3868],{},"        layout.separator()\n        layout.prop(props, \"project\")\n        layout.prop(props, \"sequence\")\n        layout.prop(props, \"shot\")",[107,3870,3871],{},"        layout.separator()\n        layout.operator(\"kitsu.import_shot_assets\", icon=\"IMPORT\")",[107,3873,3874],{},"classes = (\n    KITSU_Props,\n    KITSU_OT_import_shot,\n    KITSU_PT_panel,\n)",[107,3876,3877],{},"def register():\n    for c in classes:\n        bpy.utils.register_class(c)\n    bpy.types.Scene.kitsu_props = bpy.props.PointerProperty(type=KITSU_Props)",[107,3879,3880],{},"def unregister():\n    for c in classes:\n        bpy.utils.unregister_class(c)\n    del bpy.types.Scene.kitsu_props",[107,3882,3883],{},[264,3884,2571,3886,2575,3888,2579],{"className":3885},[1183],[126,3887,2574],{},[126,3889,2578],{},[107,3891,3892,3894],{},[1153,3893],{},"Vous pouvez maintenant choisir manuellement une production, une séquence et un plan pour récupérer les données de breakdown, puis importer le casting correspondant dans le viewport Blender actuel :",[233,3896,3898],{"className":3897},[93,236],[238,3899],{"src":3900,"className":3901,"alt":243,"loading":244,"width":3902,"height":3903},"https://blog.cg-wire.com/content/images/2025/12/data-src-image-bf3ea18d-fd62-4db5-9977-6374b3ee1aef.png",[242],480,270,[107,3905,3906,3907,3909,3910,3913],{},"La logique est simple : on utilise le même code ",[264,3908,2171],{}," pour alimenter les menus déroulants, et on encapsule tout cela dans un panneau de la vue. Un bouton ",[264,3911,3912],{},"import"," télécharge tous les assets de breakdown correspondants et les importe dans l’espace de travail actuel.",[107,3915,3916,3917,3919,3920,3922],{},"N’oubliez pas que l’ajout de ",[264,3918,2184],{}," permet à Blender d’utiliser l’installation Python de votre système pour charger des bibliothèques externes comme ",[264,3921,2171],{},". Comme Blender est fourni avec son propre environnement Python isolé, gérer l’installation des packages peut être contraignant. En étendant le chemin, vous indiquez simplement à Blender de vérifier aussi vos modules locaux. Assurez-vous d’ajuster ce chemin pour qu’il corresponde à votre configuration.",[136,3924],{},[139,3926,3927],{"id":1349},[126,3928,1352],{},[107,3930,3931],{},"En récupérant directement les listes de breakdown depuis Kitsu et en scriptant Blender pour assembler des scènes, vous éliminez les étapes manuelles répétitives et vous garantissez la cohérence des assets sur tous les plans. Cette approche ne fait pas que gagner du temps : elle réduit aussi les erreurs humaines et garantit que chaque artiste démarre avec la bonne version d’assets et la configuration de scène requise par le producteur. Ainsi, vous pouvez gérer facilement dix plans ou dix mille, avec la même fiabilité.",[107,3933,3934,3935,3940],{},"Mais ne nous croyez pas sur parole,",[150,3936,751,3937],{"href":3328},[695,3938,3939],{},"cloniez le dépôt GitHub"," pour tester le résultat !",[107,3942,3943],{},"Vous pouvez étendre ce workflow en générant des aperçus automatisés, des rapports, ou même en mettant à jour les informations d’assets à partir des nouvelles révisions créées pendant l’animation du plan.",[90,3945,3947,3950],{"className":3946},[93,94,95],[90,3948,587],{"className":3949},[99],[90,3951,591,3953,3956],{"className":3952},[104],[150,3954,1398],{"href":594,"rel":3955},[596]," ! Nous échangeons avec plus d’un millier d’experts qui partagent les meilleures pratiques et organisent parfois des événements en présentiel. Nous serions ravis de vous accueillir ! 😊",[90,3958,3960],{"className":3959},[93,602,603],[150,3961,609],{"href":594,"className":3962},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":3964},[3965,3966,3967,3968,3969,3970,3971],{"id":3334,"depth":611,"text":3337},{"id":3472,"depth":611,"text":3475},{"id":3549,"depth":611,"text":3552},{"id":3588,"depth":611,"text":3591},{"id":3654,"depth":611,"text":3657},{"id":3711,"depth":611,"text":3714},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1725888358557-9f70661012c4?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFuaW1hdGlvbiUyMHBpcGVsaW5lfGVufDB8fHx8MTc2NTA5ODQ2Mnww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":3974,"featured_at":625,"visibility":626},"2026-02-20T06:04:00.000+01:00","/blog-i18n/fr/blender-kitsu-breakdown-automation","2025-12-07T18:11:31.000+01:00",{"title":3262,"description":243},"blender-kitsu-breakdown-automation","blog-i18n/fr/blender-kitsu-breakdown-automation/index",[3981,3982],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"tFkVl3dqsSZX6PYXRU8JEZ4NyPBfOdsOLMK4CQyzT-c",{"id":3985,"title":3986,"authors":3987,"body":3989,"description":243,"extension":621,"feature_image":4812,"html":7,"meta":4813,"navigation":12,"path":4815,"published_at":4816,"seo":4817,"slug":4818,"stem":4819,"tags":4820,"__hash__":4823,"updated_at":4814,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-addon-ui-scripting-guide/index.md","Un guide 2026 pour le développement d’une interface d’add-on Blender",[3988],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":3990,"toc":4795},[3991,4002,4010,4013,4038,4040,4046,4049,4069,4078,4085,4088,4094,4114,4120,4131,4146,4184,4190,4193,4196,4201,4207,4212,4218,4223,4229,4236,4238,4244,4247,4261,4264,4274,4279,4285,4290,4296,4301,4307,4312,4318,4321,4358,4361,4363,4369,4372,4382,4385,4391,4442,4448,4454,4457,4469,4522,4528,4531,4543,4604,4610,4613,4625,4650,4656,4680,4682,4688,4691,4712,4722,4728,4737,4740,4758,4760,4764,4767,4773,4776,4789],[90,3992,3994,3998],{"className":3993},[93,94,95],[90,3995,3997],{"className":3996},[99],"📄",[90,3999,4001],{"className":4000},[104],"Transformez vos scripts Blender en de vrais outils que les artistes ont envie d’utiliser—voici comment créer des panneaux UI propres et intuitifs pour vos add-ons.",[107,4003,4004,4005,4009],{},"Si vous avez déjà ",[150,4006,4008],{"href":4007},"https://blog.cg-wire.com/blender-scripting-animation/","écrit un script Blender",", vous avez probablement réalisé que réussir la fonctionnalité ne représente qu’une partie du travail : l’autre partie, c’est d’amener quelqu’un à s’en servir ! Une interface utilisateur claire est indispensable pour partager et vendre des add-ons Blender.",[107,4011,4012],{},"Dans ce guide, vous apprendrez comment construire des interfaces pour vos add-ons Blender grâce au système de mise en page intégré. Nous couvrirons les types les plus courants de composants UI, où les panneaux peuvent apparaître, et nous passerons en revue un exemple minimal fonctionnel. À la fin, vous saurez comment donner à votre add-on une interface graphique native de Blender.",[90,4014,4016,4019],{"className":4015},[93,94,1138],[90,4017,1142],{"className":4018},[99],[90,4020,4022,4026,4028,1157,4030,4032,1162,4034],{"className":4021},[104],[1147,4023,4024],{},[126,4025,1579],{"style":725},[1153,4027],{},[1153,4029],{},[1153,4031],{},[1153,4033],{},[150,4035,4037],{"href":4036},"https://github.com/cgwire/blender-ui-addon-script?ref=blog.cg-wire.com","https://github.com/cgwire/blender-ui-addon-script",[136,4039],{},[139,4041,4043],{"id":4042},"_1-common-ui-components",[126,4044,4045],{},"1. Les composants UI courants",[107,4047,4048],{},"Dans Blender, chaque élément de l’interface utilisateur a son équivalent dans la bibliothèque Python. Vous construisez l’UI en créant des classes qui héritent de l’un des types suivants :",[731,4050,4051,4057,4063],{},[220,4052,4053,4056],{},[264,4054,4055],{},"bpy.types.Panel"," - pour les panneaux personnalisés (les plus courants)",[220,4058,4059,4062],{},[264,4060,4061],{},"bpy.types.Menu"," - pour les menus et sous-menus",[220,4064,4065,4068],{},[264,4066,4067],{},"bpy.types.Operator"," - pour les actions ou outils qui peuvent être lancés via des boutons",[233,4070,4072],{"className":4071},[93,236],[238,4073],{"src":4074,"className":4075,"alt":243,"loading":244,"width":4076,"height":4077},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-daa22afa-ac20-4e3e-8543-c694588146bf.png",[242],334,542,[107,4079,4080,4081,4084],{},"Chacune de ces classes peut implémenter une méthode ",[264,4082,4083],{},"draw(self, context)",", dans laquelle vous décrivez à quoi l’interface doit ressembler en utilisant des commandes de mise en page. Le système de mise en page de Blender gère automatiquement l’espacement, l’alignement et le positionnement : c’est un système UI déclaratif où vous décrivez simplement ce qui doit apparaître et dans quel ordre.",[107,4086,4087],{},"Voici les éléments de mise en page les plus courants que vous utiliserez :",[829,4089,4091],{"id":4090},"basic-display-elements",[126,4092,4093],{},"Éléments d’affichage de base",[731,4095,4096,4105],{},[220,4097,4098,4101,4102],{},[126,4099,4100],{},"Label"," - Affiche du texte simple, non interactif. Format : ",[264,4103,4104],{},"layout.label(text=\"Hello!\")",[220,4106,4107,4110,4111],{},[126,4108,4109],{},"Separator"," - Ajoute un espace vertical entre les éléments pour la lisibilité. Format : ",[264,4112,4113],{},"layout.separator()",[829,4115,4117],{"id":4116},"buttons-inputs-props-and-operators",[126,4118,4119],{},"Boutons, entrées, propriétés (props) et opérateurs",[731,4121,4122],{},[220,4123,4124,4127,4128],{},[126,4125,4126],{},"Bouton d’opérateur"," - Crée un bouton cliquable qui déclenche un opérateur (une fonction enregistrée comme commande Blender). Vous pouvez l’utiliser pour des actions comme exporter, dupliquer ou exécuter un script personnalisé. Syntaxe : ",[264,4129,4130],{},"layout.operator(\"myaddon.some_action\", text=\"Run Action\")",[107,4132,4133,4134,4137,4138,4141,4142,4145],{},"La méthode ",[264,4135,4136],{},"layout.prop()"," sert à afficher des propriétés Blender éditables, qui proviennent soit de données intégrées (comme ",[264,4139,4140],{},"context.object","), soit de vos propres propriétés personnalisées. Par exemple, ",[264,4143,4144],{},"layout.prop(context.object, \"name\")"," affiche un champ de texte éditable pour le nom de l’objet. Blender choisit automatiquement le bon widget (zone de texte, curseur, case à cocher, etc.) en fonction du type de la propriété :",[731,4147,4148,4157,4166,4175],{},[220,4149,4150,4153,4154],{},[126,4151,4152],{},"Case à cocher (propriété booléenne)"," - Affiche une case à cocher de type bascule. Exemple : ",[264,4155,4156],{},"layout.prop(context.object, \"hide_viewport\")",[220,4158,4159,4162,4163],{},[126,4160,4161],{},"Champ numérique / curseur (Float ou Int)"," - Affiche une saisie numérique, souvent avec un curseur. Exemple : ",[264,4164,4165],{},"layout.prop(context.object, \"location\", index=0, text=\"X Location\")",[220,4167,4168,4171,4172],{},[126,4169,4170],{},"Menu déroulant (propriété Enum)"," - Affiche une liste déroulante lorsque la propriété est une EnumProperty. Exemple : ",[264,4173,4174],{},"layout.prop(context.object, \"type\")",[220,4176,4177,4180,4181],{},[126,4178,4179],{},"Saisie de texte ","- Affiche une zone de texte pour les propriétés de type chaîne. Exemple : ",[264,4182,4183],{},"layout.prop(my_settings, \"username\")",[829,4185,4187],{"id":4186},"organizing-the-layout",[126,4188,4189],{},"Organiser la mise en page",[107,4191,4192],{},"Pour garder votre UI structurée et facile à comprendre, Blender fournit des conteneurs de mise en page comme des lignes, des colonnes et des boîtes.",[107,4194,4195],{},"Un panneau contient des lignes et des colonnes. Les lignes et les colonnes contiennent des propriétés, des opérateurs et des labels. Blender gère automatiquement les marges, l’alignement et la mise à l’échelle pour respecter le thème et les règles de mise en page.",[731,4197,4198],{},[220,4199,4200],{},"Une ligne (regroupement horizontal) place les éléments côte à côte horizontalement :",[1178,4202,4203],{},[264,4204,4206],{"className":4205},[1183],"row = layout.row()\nrow.prop(obj, \"location\")\nrow.prop(obj, \"rotation_euler\")",[731,4208,4209],{},[220,4210,4211],{},"Une colonne (regroupement vertical) empile les éléments verticalement :",[1178,4213,4214],{},[264,4215,4217],{"className":4216},[1183],"col = layout.column()\ncol.prop(obj, \"scale\")\ncol.prop(obj, \"dimensions\")",[731,4219,4220],{},[220,4221,4222],{},"Une boîte (regroupement visuel) dessine un cadre qui regroupe visuellement des contrôles associés, comme des sections :",[1178,4224,4225],{},[264,4226,4228],{"className":4227},[1183],"box = layout.box()\nbox.label(text=\"Transform Settings\")\nbox.prop(obj, \"location\")\nbox.prop(obj, \"rotation_euler\")",[107,4230,4231,4232,133],{},"Pour la liste complète des composants UI, consultez ",[150,4233,4235],{"href":4234},"https://docs.blender.org/manual/en/latest/interface/index.html?ref=blog.cg-wire.com","la page Interface utilisateur de la documentation officielle Blender",[136,4237],{},[139,4239,4241],{"id":4240},"_2-where-you-can-put-ui-panels",[126,4242,4243],{},"2. Où placer les panneaux UI",[107,4245,4246],{},"Lorsque vous créez un panneau personnalisé dans Blender, vous pouvez décider où dans l’interface il apparaît et quelle zone il occupe grâce à deux attributs de classe clés :",[731,4248,4249,4255],{},[220,4250,4251,4254],{},[264,4252,4253],{},"bl_space_type"," - indique l’éditeur ou l’espace de travail auquel votre panneau appartient (par exemple, la Vue 3D, l’Éditeur des propriétés ou l’Éditeur de nœuds).",[220,4256,4257,4260],{},[264,4258,4259],{},"bl_region_type"," - indique la partie de cet éditeur dans laquelle le panneau apparaît (par exemple, la barre latérale, la barre d’outils ou la fenêtre principale).",[107,4262,4263],{},"Voici une liste des zones les plus typiques où vous pourriez placer un panneau personnalisé :",[233,4265,4267],{"className":4266},[93,236],[238,4268],{"src":4269,"className":4270,"alt":243,"loading":244,"width":4271,"height":4272,"srcSet":4273,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-070d3dfe-eb98-42a2-90a2-d2eabc4fc2d4.png",[242],1125,650,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-070d3dfe-eb98-42a2-90a2-d2eabc4fc2d4.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-070d3dfe-eb98-42a2-90a2-d2eabc4fc2d4.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-070d3dfe-eb98-42a2-90a2-d2eabc4fc2d4.png 1125w",[731,4275,4276],{},[220,4277,4278],{},"La barre latérale de la vue 3D apparaît dans la barre latérale du panneau N à droite de la Vue 3D. C’est l’emplacement le plus courant pour les outils de modélisation, de rigging ou de scène :",[1178,4280,4281],{},[264,4282,4284],{"className":4283},[1183],"bl_space_type = 'VIEW_3D'\nbl_region_type = 'UI'",[731,4286,4287],{},[220,4288,4289],{},"Vous pouvez ajouter des panneaux dans l’Éditeur des propriétés, entre les onglets Objet, Matériau ou Scène. Utilisez cela lorsque votre add-on traite des matériaux, des objets, des réglages de rendu ou des propriétés de scène :",[1178,4291,4292],{},[264,4293,4295],{"className":4294},[1183],"bl_space_type = 'PROPERTIES'\nbl_region_type = 'WINDOW'",[731,4297,4298],{},[220,4299,4300],{},"Dans la barre latérale de l’Éditeur UV/Image (utile pour les outils de textures ou les utilitaires d’images) :",[1178,4302,4303],{},[264,4304,4306],{"className":4305},[1183],"bl_space_type = 'IMAGE_EDITOR'\nbl_region_type = 'UI'",[731,4308,4309],{},[220,4310,4311],{},"Dans la barre latérale des éditeurs Shader, Geometry Node ou Compositor pour les outils qui fonctionnent avec des nœuds, des shaders ou des systèmes procéduraux :",[1178,4313,4314],{},[264,4315,4317],{"className":4316},[1183],"bl_space_type = 'NODE_EDITOR'\nbl_region_type = 'UI'",[107,4319,4320],{},"L’emplacement de panneau le plus adapté dépend de l’objectif de votre outil :",[731,4322,4323,4333,4342,4350],{},[220,4324,4325,4326,4329,4330,1283],{},"Outils de modélisation / objets → Barre latérale de la Vue 3D (",[264,4327,4328],{},"VIEW_3D"," + ",[264,4331,4332],{},"UI",[220,4334,4335,4336,4329,4339,1283],{},"Réglages de matériau ou de rendu → Éditeur des propriétés (",[264,4337,4338],{},"PROPERTIES",[264,4340,4341],{},"WINDOW",[220,4343,4344,4345,4329,4348,1283],{},"Utilitaires de textures → Barre latérale de l’éditeur d’image (",[264,4346,4347],{},"IMAGE_EDITOR",[264,4349,4332],{},[220,4351,4352,4353,4329,4356,1283],{},"Outils Shader / Géométrie → Barre latérale de l’éditeur de nœuds (",[264,4354,4355],{},"NODE_EDITOR",[264,4357,4332],{},[107,4359,4360],{},"Choisir le bon espace aide les utilisateurs à trouver votre add-on là où ils s’attendent naturellement à ce qu’il soit, tout en gardant votre UI cohérente avec Blender.",[136,4362],{},[139,4364,4366],{"id":4365},"_3-minimal-example-custom-panel-in-the-3d-view-sidebar",[126,4367,4368],{},"3. Exemple minimal : panneau personnalisé dans la barre latérale de la Vue 3D",[107,4370,4371],{},"Faisons un test avec un plugin simple : un panneau personnalisé dans la barre latérale de la vue 3D qui affiche une alerte « hello world » quand on clique sur un bouton.",[829,4373,4375],{"id":4374},"_1-blinfoaddon-metadata",[126,4376,4377,4378,4381],{},"1) ",[264,4379,4380],{},"bl_info"," - métadonnées de l’add-on",[107,4383,4384],{},"On commence par définir les métadonnées de l’add-on pour indiquer à Blender comment le présenter à un utilisateur potentiel :",[1178,4386,4387],{},[264,4388,4390],{"className":4389},[1183],"bl_info = {\n    \"name\": \"Simple Addon Example\",\n    \"author\": \"Your Name\",\n    \"version\": (1, 0),\n    \"blender\": (4, 0, 0),\n    \"location\": \"View3D > Sidebar > Simple Tab\",\n    \"description\": \"A simple example addon that prints a message\",\n    \"category\": \"3D View\",\n}",[731,4392,4393],{},[220,4394,4395,4397,4398],{},[264,4396,4380],{}," est un dictionnaire au niveau du module que Blender utilise pour afficher les infos de l’add-on dans Préférences → Add-ons",[731,4399,4400,4406,4412,4418,4424,4430,4436],{},[220,4401,4402,4405],{},[264,4403,4404],{},"name:"," nom lisible affiché dans la liste",[220,4407,4408,4411],{},[264,4409,4410],{},"author:"," chaîne de l’auteur",[220,4413,4414,4417],{},[264,4415,4416],{},"version:"," tuple représentant la version de l’add-on",[220,4419,4420,4423],{},[264,4421,4422],{},"blender:"," version minimale de Blender ciblée par cet add-on (tuple)",[220,4425,4426,4429],{},[264,4427,4428],{},"location:"," emplacement où apparaît l’UI de l’add-on (utile pour les utilisateurs)",[220,4431,4432,4435],{},[264,4433,4434],{},"description:"," courte description utilisée dans l’UI",[220,4437,4438,4441],{},[264,4439,4440],{},"category:"," catégorie de regroupement dans la liste Add-ons",[107,4443,4444,4445,4447],{},"Il est essentiel de garder votre ",[264,4446,4380],{}," exact, car Blender le lit lors du scan des add-ons installés.",[829,4449,4451],{"id":4450},"_2-define-an-operator-class",[126,4452,4453],{},"2) Définir une classe d’opérateur",[107,4455,4456],{},"On définit ensuite une sous-classe Operator. Les opérateurs sont la manière officielle d’exécuter des actions dans Blender : ils peuvent être invoqués depuis l’UI, via des raccourcis, via le menu de recherche, etc.",[1178,4458,4459,4463],{},[264,4460,4462],{"className":4461},[1183],"class SIMPLEADDON_OT_hello(bpy.types.Operator):\n    bl_idname = \"simple_addon.say_hello\"\n    bl_label = \"Say Hello\"\n    bl_description = \"Prints a message to the console\"\n",[107,4464,4465],{},[264,4466,4468],{"className":4467},[1183],"    def execute(self, context):\n        self.report({'INFO'}, \"Hello from Blender Addon!\")\n         print(\"Hello from Blender Addon!\")\n        return {'FINISHED'}",[731,4470,4471,4485,4491,4497],{},[220,4472,4473,4476,4477,4480,4481,4484],{},[264,4474,4475],{},"bl_idname"," - une chaîne d’identifiant unique sous la forme ",[264,4478,4479],{},"\"module_name.operator_name\"",", en minuscules et avec un point. C’est ainsi que vous appelez l’opérateur depuis le code ou l’UI (",[264,4482,4483],{},"bpy.ops.simple_addon.say_hello()",").",[220,4486,4487,4490],{},[264,4488,4489],{},"bl_label"," - libellé visible côté utilisateur, qui apparaît sur les boutons/menus.",[220,4492,4493,4496],{},[264,4494,4495],{},"bl_description"," - infobulle/description affichée dans l’UI.",[220,4498,4499,4502,4503,4506,4507,4510,4511,4514,4515,1747,4518,4521],{},[264,4500,4501],{},"execute(self, context)"," - méthode principale appelée lorsque l’opérateur s’exécute (exécution synchrone). ",[264,4504,4505],{},"context"," donne accès à l’état actuel de Blender (objet actif, scène, zone, etc.). ",[264,4508,4509],{},"self.report({'INFO'}, \"…\")"," affiche un petit message dans la barre d’infos / statut de Blender (utile pour le retour utilisateur). ",[264,4512,4513],{},"print(\"…\")"," envoie un message dans la console système / Blender (utile pour le débogage). Renvoie un ensemble comme ",[264,4516,4517],{},"{'FINISHED'}",[264,4519,4520],{},"{'CANCELLED'}",". Blender utilise ce résultat pour savoir si l’opérateur s’est terminé avec succès.",[829,4523,4525],{"id":4524},"_3-panel-classui-placement",[126,4526,4527],{},"3) Classe de panneau - emplacement UI",[107,4529,4530],{},"On arrive ensuite à la sous-classe Panel pour ajouter de l’UI dans Blender :",[1178,4532,4533,4537],{},[264,4534,4536],{"className":4535},[1183],"class SIMPLEADDON_PT_panel(bpy.types.Panel):\n    bl_label = \"Simple Addon Panel\"\n    bl_idname = \"SIMPLEADDON_PT_panel\"\n    bl_space_type = 'VIEW_3D'\n    bl_region_type = 'UI'\n    bl_category = 'Simple'",[107,4538,4539],{},[264,4540,4542],{"className":4541},[1183],"    def draw(self, context):\n        layout = self.layout\n        layout.operator(\"simple_addon.say_hello\")",[731,4544,4545,4550,4555,4561,4570,4576,4581,4591],{},[220,4546,4547,4549],{},[264,4548,4489],{}," - titre du panneau affiché dans l’UI.",[220,4551,4552,4554],{},[264,4553,4475],{}," - identifiant unique du panneau.",[220,4556,4557,4560],{},[264,4558,4559],{},"bl_space_type = 'VIEW_3D'"," indique à Blender que ce panneau appartient à la zone de la Vue 3D.",[220,4562,4563,4566,4567,4484],{},[264,4564,4565],{},"bl_region_type = 'UI'"," l’affiche dans la zone à droite (le panneau N). D’autres zones existent (par exemple, ",[264,4568,4569],{},"'TOOLS', 'WINDOW'",[220,4571,4572,4575],{},[264,4573,4574],{},"bl_category = 'Simple'"," - le nom de l’onglet dans la barre latérale. Le panneau apparaîtra sous un onglet intitulé « Simple ».",[220,4577,4578,4580],{},[264,4579,4083],{}," est appelé pour dessiner la mise en page UI.",[220,4582,4583,4586,4587,4590],{},[264,4584,4585],{},"self.layout"," est un objet ",[264,4588,4589],{},"UILayout"," utilisé pour placer boutons, labels, propriétés, etc.",[220,4592,4593,4596,4597,4600,4601,4603],{},[264,4594,4595],{},"layout.operator(\"simple_addon.say_hello\")"," crée un bouton qui, une fois cliqué, appelle l’opérateur avec l’identifiant bl_idname ",[264,4598,4599],{},"\"simple_addon.say_hello\"",". Le texte du bouton est pris de la valeur ",[264,4602,4489],{}," de l’opérateur.",[829,4605,4607],{"id":4606},"_4-register-unregister-functions",[126,4608,4609],{},"4) Fonctions register / unregister",[107,4611,4612],{},"Blender exige que les classes qui définissent l’UI, les opérateurs, les panneaux, les propriétés, etc., soient enregistrées afin que Blender sache qu’elles existent :",[1178,4614,4615,4619],{},[264,4616,4618],{"className":4617},[1183],"def register():\n    bpy.utils.register_class(SIMPLEADDON_OT_hello)\n    bpy.utils.register_class(SIMPLEADDON_PT_panel)",[107,4620,4621],{},[264,4622,4624],{"className":4623},[1183],"def unregister():\n    bpy.utils.unregister_class(SIMPLEADDON_PT_panel)\n    bpy.utils.unregister_class(SIMPLEADDON_OT_hello)",[731,4626,4627,4637,4640],{},[220,4628,4629,4632,4633,4636],{},[264,4630,4631],{},"bpy.utils.register_class(Class)"," enregistre une classe ; ",[264,4634,4635],{},"unregister_class"," la retire.",[220,4638,4639],{},"Il est important de désenregistrer les classes dans l’ordre inverse de l’enregistrement, surtout quand les classes se référencent entre elles. C’est pourquoi le panneau est désenregistré avant l’opérateur.",[220,4641,4642,4643,4646,4647,133],{},"Lorsque l’add-on est activé dans les Préférences, Blender appelle ",[264,4644,4645],{},"register()",". Lorsqu’il est désactivé, il appelle ",[264,4648,4649],{},"unregister()",[107,4651,4652,4653,1819],{},"On met le code complet dans un fichier Python ",[264,4654,4655],{},"addon.py",[1178,4657,4658,4675],{},[264,4659,4390,4661,4663,4666,4669,4671,4673],{"className":4660},[1183],[107,4662,1187],{},[107,4664,4665],{},"class SIMPLEADDON_OT_hello(bpy.types.Operator):\n    bl_idname = \"simple_addon.say_hello\"\n    bl_label = \"Say Hello\"\n    bl_description = \"Prints a message to the console\"",[107,4667,4668],{},"    def execute(self, context):\n        self.report({'INFO'}, \"Hello from Blender Addon!\")\n        print(\"Hello from Blender Addon!\")\n        return {'FINISHED'}",[107,4670,4536],{},[107,4672,4542],{},[107,4674,4618],{},[107,4676,4677],{},[264,4678,4624],{"className":4679},[1183],[136,4681],{},[139,4683,4685],{"id":4684},"_4-running-and-packaging-your-add-on",[126,4686,4687],{},"4. Lancer et empaqueter votre add-on",[107,4689,4690],{},"Une fois que vous avez écrit votre script d’add-on, vous pouvez le charger dans Blender et le tester immédiatement. Aucun outil requis.",[217,4692,4693,4699,4702,4709],{},[220,4694,4695,4696,133],{},"Enregistrez votre script - Enregistrez votre fichier Python avec un nom clair comme ",[264,4697,4698],{},"my_addon.py",[220,4700,4701],{},"Ouvrez les Préférences des add-ons de Blender - Allez dans Edition → Préférences → Add-ons. C’est ici que Blender gère toutes les extensions installées.",[220,4703,4704,4705,4708],{},"Installez l’add-on - Cliquez sur le bouton Installer… en haut de la fenêtre des préférences. ",[264,4706,4707],{},"Sélectionnez votre fichier my_addon.py"," puis cliquez sur Installer l’add-on.",[220,4710,4711],{},"L’activez - Après l’installation, votre add-on doit apparaître dans la liste. Trouvez-le (vous pouvez rechercher « Mon add-on ») puis cochez la case pour l’activer s’il n’est pas déjà activé.",[233,4713,4715],{"className":4714},[93,236],[238,4716],{"src":4717,"className":4718,"alt":243,"loading":244,"width":4719,"height":4720,"srcSet":4721,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-27ff3592-fed1-4347-8930-9dd62b2d950b.png",[242],1227,800,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-27ff3592-fed1-4347-8930-9dd62b2d950b.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-27ff3592-fed1-4347-8930-9dd62b2d950b.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-27ff3592-fed1-4347-8930-9dd62b2d950b.png 1227w",[217,4723,4725],{"start":4724},5,[220,4726,4727],{},"Testez-le dans l’interface - Ouvrez la Vue 3D, ouvrez la barre latérale et cherchez l’onglet appelé Simple. Votre panneau personnalisé devrait y être, prêt à être utilisé !",[233,4729,4731],{"className":4730},[93,236],[238,4732],{"src":4733,"className":4734,"alt":243,"loading":244,"width":4719,"height":4735,"srcSet":4736,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-2a90e13f-b338-4235-a830-f9c8d8060562.png",[242],741,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-2a90e13f-b338-4235-a830-f9c8d8060562.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-2a90e13f-b338-4235-a830-f9c8d8060562.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-2a90e13f-b338-4235-a830-f9c8d8060562.png 1227w",[107,4738,4739],{},"Quand vous voulez partager votre add-on avec d’autres, vous pouvez le téléverser sur GitHub, Blender Artists ou Gumroad pour la distribution. Ajoutez un README.md court qui explique ce que fait l’add-on et comment l’installer.",[107,4741,4742,4743,4746,4747,4750,4751,4757],{},"Pour les add-ons composés de plusieurs fichiers (par ex. modules séparés, icônes ou ressources), créez un dossier puis compressez l’ensemble du dossier (",[264,4744,4745],{},"my_addon.zip",") et partagez-le. Blender peut installer des archives ",[264,4748,4749],{},".zip"," directement via le même bouton Installer… : il n’est donc pas nécessaire de l’extraire au préalable. Le point d’entrée principal doit s’appeler ",[264,4752,4753,4756],{},[126,4754,4755],{},"init",".py",", car Blender le traite comme un package Python.",[136,4759],{},[139,4761,4762],{"id":1349},[126,4763,1352],{},[107,4765,4766],{},"Créer une UI pour les add-ons Blender peut sembler intimidant au début, mais c’est l’une des façons les plus simples de partager un outil que vous avez créé. Une fois que vous comprenez comment fonctionnent les panneaux et les mises en page, vous pouvez ajouter rapidement des boutons, des propriétés et des sections bien organisées que les utilisateurs trouveront intuitives.",[107,4768,4769,4772],{},[150,4770,4771],{"href":4036},"Jetez un œil au dépôt de code sur Github"," pour tester l’exemple par vous-même.",[107,4774,4775],{},"Commencez modestement en ajoutant un panneau simple, un label et un bouton pour créer une action, puis développez à partir de là !",[90,4777,4779,4782],{"className":4778},[93,94,95],[90,4780,587],{"className":4781},[99],[90,4783,1394,4785,4788],{"className":4784},[104],[150,4786,1398],{"href":594,"rel":4787},[596]," ! Nous échangeons avec plus d’un millier d’experts qui partagent les bonnes pratiques et organisent parfois des événements en présentiel. Nous serions ravis de vous accueillir ! 😊",[90,4790,4792],{"className":4791},[93,602,603],[150,4793,1405],{"href":594,"className":4794},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":4796},[4797,4802,4803,4810,4811],{"id":4042,"depth":611,"text":4045,"children":4798},[4799,4800,4801],{"id":4090,"depth":1413,"text":4093},{"id":4116,"depth":1413,"text":4119},{"id":4186,"depth":1413,"text":4189},{"id":4240,"depth":611,"text":4243},{"id":4365,"depth":611,"text":4368,"children":4804},[4805,4807,4808,4809],{"id":4374,"depth":1413,"text":4806},"1) bl_info - métadonnées de l’add-on",{"id":4450,"depth":1413,"text":4453},{"id":4524,"depth":1413,"text":4527},{"id":4606,"depth":1413,"text":4609},{"id":4684,"depth":611,"text":4687},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1760548425425-e42e77fa38f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGNvZGluZyUyMGludGVyZmFjZSUyMHRvb2xzfGVufDB8fHx8MTc2Mzg5MzE4MXww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":4814,"featured_at":625,"visibility":626},"2026-02-20T06:03:59.000+01:00","/blog-i18n/fr/blender-addon-ui-scripting-guide","2025-11-24T10:00:34.000+01:00",{"title":3986,"description":243},"blender-addon-ui-scripting-guide","blog-i18n/fr/blender-addon-ui-scripting-guide/index",[4821,4822],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"eLQ2SAY5txedwQKCvYSpavqNAox9v8oBwBDK0osL_B4",{"id":4825,"title":4826,"authors":4827,"body":4829,"description":243,"extension":621,"feature_image":5552,"html":7,"meta":5553,"navigation":12,"path":5555,"published_at":5556,"seo":5557,"slug":5558,"stem":5559,"tags":5560,"__hash__":5563,"updated_at":5554,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-scripting-geometry-nodes-2/index.md","Comment script des Geometry Nodes dans Blender avec Python (2026)",[4828],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":4830,"toc":5536},[4831,4842,4845,4848,4851,4857,4859,4865,4868,4871,4874,4899,4901,4907,4910,4921,4928,4930,4936,4939,4982,4987,4997,4999,5005,5008,5018,5026,5033,5040,5042,5048,5051,5054,5060,5066,5072,5075,5081,5084,5096,5110,5116,5133,5139,5144,5150,5153,5159,5197,5203,5214,5228,5247,5253,5256,5262,5269,5275,5278,5332,5376,5379,5467,5470,5480,5483,5491,5493,5497,5500,5507,5515,5518,5530],[90,4832,4834,4838],{"className":4833},[93,94,95],[90,4835,4837],{"className":4836},[99],"🐍",[90,4839,4841],{"className":4840},[104],"La modélisation procédurale devient bien plus puissante lorsque vous générez des nœuds avec du code, plutôt que de les câbler à la main.",[107,4843,4844],{},"Les Geometry Nodes sont une fonctionnalité incroyable de Blender, mais saviez-vous que l’API Python de Blender vous permet aussi de script des geometry nodes, comme n’importe quel autre bloc de données ?",[107,4846,4847],{},"Vous pouvez créer des nœuds, définir leurs paramètres et les connecter par programmation, ouvrant la porte à la génération automatisée de scènes, à des outils personnalisés et au prototypage rapide de modèles avec seulement quelques lignes de code—au lieu de câbler manuellement des dizaines de nœuds.",[107,4849,4850],{},"Dans ce tutoriel, vous allez apprendre comment créer des configurations de geometry nodes entièrement depuis un script Python. Nous couvrirons le processus complet, de la création d’un nouvel arbre de nœuds à son affectation à un objet, avec des exemples clairs que vous pouvez copier-coller directement dans l’éditeur de scripting de Blender.",[107,4852,4853,4854,133],{},"Au cas où vous l’auriez manqué, jetez d’abord un œil à ",[150,4855,4856],{"href":4007},"notre introduction au scripting Blender",[136,4858],{},[139,4860,4862],{"id":4861},"why-script-geometry-nodes",[126,4863,4864],{},"Pourquoi script des Geometry Nodes ?",[107,4866,4867],{},"L’éditeur Geometry Nodes de Blender est un excellent système visuel pour construire des outils procéduraux : il est intuitif, flexible et idéal pour l’expérimentation une fois que vous avez le coup de main. Mais lorsque les projets deviennent plus complexes, gérer manuellement de grands réseaux de nœuds peut devenir fastidieux et difficile à maintenir, surtout si vous devez les réutiliser dans de nombreux pipelines de modélisation 3D.",[107,4869,4870],{},"Une configuration de nœuds scriptée n’est pas liée à un seul fichier .blend : elle peut être stockée, versionnée et partagée comme n’importe quel autre morceau de code. Cela facilite la création d’une bibliothèque d’outils procéduraux réutilisables sur différents projets, ou à partager avec d’autres artistes et développeurs.",[107,4872,4873],{},"Voyons comment le scripting fonctionne dans la pratique avec quelques extraits de code.",[90,4875,4877,4880],{"className":4876},[93,94,1138],[90,4878,1142],{"className":4879},[99],[90,4881,4883,4887,4889,2722,4891,4893,1162,4895],{"className":4882},[104],[1147,4884,4885],{},[126,4886,1579],{"style":725},[1153,4888],{},[1153,4890],{},[1153,4892],{},[1153,4894],{},[150,4896,4898],{"href":4897},"https://github.com/cgwire/blender-scripting-geometry-nodes?ref=blog.cg-wire.com","https://github.com/cgwire/blender-scripting-geometry-nodes",[136,4900],{},[139,4902,4904],{"id":4903},"_1-creating-a-new-node-tree",[126,4905,4906],{},"1. Créer une nouvelle arborescence de nœuds",[107,4908,4909],{},"Toute configuration de Geometry Nodes commence comme une arborescence de nœuds, qui stocke les nœuds et leurs connexions. Vous pouvez en créer une depuis Python grâce à l’API de données de Blender :",[1178,4911,4912,4915],{},[264,4913,1615],{"className":4914},[1183],[107,4916,4917],{},[264,4918,4920],{"className":4919},[1183],"node_tree = bpy.data.node_groups.new(\"MyGeoNodesTree\", 'GeometryNodeTree')",[107,4922,4923,4924,4927],{},"Vous pouvez considérer ce ",[264,4925,4926],{},"node_tree"," comme la toile numérique qui contiendra toute la logique procédurale. Une fois créé, vous pouvez ajouter des nœuds, les connecter et définir leurs propriétés comme dans l’interface utilisateur graphique de Blender.",[136,4929],{},[139,4931,4933],{"id":4932},"_2-add-nodes-and-connect-them",[126,4934,4935],{},"2. Ajouter des nœuds et les connecter",[107,4937,4938],{},"Ensuite, ajoutons quelques nœuds de base. Nous allons créer un nœud Input Geometry, un nœud Subdivision Surface et un nœud Group Output, puis les connecter et appliquer le résultat à notre cube.",[1178,4940,4941,4976],{},[264,4942,4944,4945,4948,4951,4956,4972],{"className":4943},[1183],"# ADD NODES\ngeo_input = node_tree.interface.new_socket(\n    name=\"Geometry\",\n    in_out='INPUT',\n    socket_type='NodeSocketGeometry'\n)\ngeo_output = node_tree.interface.new_socket(\n    name=\"Geometry\",\n    in_out='OUTPUT',\n    socket_type='NodeSocketGeometry'\n)",[107,4946,4947],{},"input_node = node_tree.nodes.new(\"NodeGroupInput\")\nsubdivide_node = node_tree.nodes.new(\"GeometryNodeSubdivideMesh\")\noutput_node = node_tree.nodes.new(\"NodeGroupOutput\")",[107,4949,4950],{},"input_node.location = (-300, 0)\nsubdivide_node.location = (0, 0)\noutput_node.location = (300, 0)",[4952,4953,4955],"h1",{"id":4954},"link-nodes","LINK NODES",[107,4957,4958,4959,4962,4963,4966,4967,4969,4970,1283],{},"node_tree.links.new(input_node.outputs",[1219,4960,4961],{},"'Geometry'",", subdivide_node.inputs",[1219,4964,4965],{},"'Mesh'",")\nnode_tree.links.new(subdivide_node.outputs",[1219,4968,4965],{},", output_node.inputs",[1219,4971,4961],{},[4952,4973,4975],{"id":4974},"apply-to-current-object","APPLY TO CURRENT OBJECT",[107,4977,4978],{},[264,4979,4981],{"className":4980},[1183],"obj = bpy.context.object\nmod = obj.modifiers.new(\"MyGeoNodesModifier\", \"NODES\")\nmod.node_group = node_tree",[107,4983,4984,4986],{},[1153,4985],{},"Lorsque vous exécutez ce script, vous obtenez une configuration de geometry nodes fonctionnelle (bien que simple) qui subdivise toute géométrie à laquelle elle est appliquée :",[233,4988,4990],{"className":4989},[93,236],[238,4991],{"src":4992,"className":4993,"alt":243,"loading":244,"width":4994,"height":4995,"srcSet":4996,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-de23dbc9-781f-4730-9a46-a6fec93c97a7.png",[242],1314,889,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-de23dbc9-781f-4730-9a46-a6fec93c97a7.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-de23dbc9-781f-4730-9a46-a6fec93c97a7.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-de23dbc9-781f-4730-9a46-a6fec93c97a7.png 1314w",[136,4998],{},[139,5000,5002],{"id":5001},"_3-set-parameters-and-link-geometry-to-objects",[126,5003,5004],{},"3. Définir les paramètres et relier la géométrie aux objets",[107,5006,5007],{},"Vous pouvez modifier les paramètres directement via les propriétés du nœud. Par exemple, augmentons le niveau de subdivision et appliquons ce groupe de nœuds à un objet :",[1178,5009,5010],{},[264,5011,5013,5014,5017],{"className":5012},[1183],"subdivide_node.inputs",[1219,5015,5016],{},"'Level'",".default_value = 3",[233,5019,5021],{"className":5020},[93,236],[238,5022],{"src":5023,"className":5024,"alt":243,"loading":244,"width":4994,"height":4995,"srcSet":5025,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-18e48250-6a76-4eda-b14c-ce8065b78f9e.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-18e48250-6a76-4eda-b14c-ce8065b78f9e.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-18e48250-6a76-4eda-b14c-ce8065b78f9e.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-18e48250-6a76-4eda-b14c-ce8065b78f9e.png 1314w",[107,5027,5028,5029,5032],{},"Ajuster ",[264,5030,5031],{},"default_value"," pour les entrées est une façon simple de paramétrer votre configuration.",[107,5034,5035,5036,133],{},"Pour un aperçu complet des paramètres disponibles et de leurs types, reportez-vous à ",[150,5037,5039],{"href":5038},"https://docs.blender.org/api/current/bpy.types.Node.html?ref=blog.cg-wire.com","la documentation officielle de l’API Python de Blender",[136,5041],{},[139,5043,5045],{"id":5044},"_4-create-a-custom-%E2%80%9Ccube-crowd-generator%E2%80%9D-node-group-programmatically",[126,5046,5047],{},"4. Créer un groupe de nœuds personnalisé « Cube Crowd Generator » par programmation",[107,5049,5050],{},"Nous savons maintenant comment définir des geometry nodes par programmation, mais qu’en est-il de la création de nœuds personnalisés réutilisables ?",[107,5052,5053],{},"Travaillons sur un nouvel exemple qui construit un mini-système procédural qui disperse beaucoup de cubes sur une surface. Le script crée un groupe Geometry Nodes qui prend une surface, disperse des points dessus, décale aléatoirement ces points, place un cube sur chaque point (instances), convertit les instances en géométrie réelle, puis affiche le maillage final comme « Cubes ».",[829,5055,5057],{"id":5056},"_1-create-a-new-node-group",[126,5058,5059],{},"1) Créer un nouveau groupe de nœuds",[107,5061,5062,5063,133],{},"Tout d’abord, créons un nouveau groupe Geometry Node dans Blender nommé ",[264,5064,5065],{},"\"CubeCrowdGenerator\"",[1178,5067,5068],{},[264,5069,5071],{"className":5070},[1183],"crowd_group = bpy.data.node_groups.new(\"CubeCrowdGenerator\", \"GeometryNodeTree\")",[107,5073,5074],{},"Comme une fonction, nous voulons pouvoir attacher ce nœud à n’importe quel objet avec un modificateur Geometry Nodes plus tard.",[829,5076,5078],{"id":5077},"_2-add-group-input-and-output-nodes-uientry-points",[126,5079,5080],{},"2) Ajouter des nœuds d’entrée et de sortie de groupe (points UI/entrée)",[107,5082,5083],{},"Nous plaçons les groupes d’entrée et de sortie standard sur la toile, comme d’habitude :",[1178,5085,5086,5090],{},[264,5087,5089],{"className":5088},[1183],"group_in = crowd_group.nodes.new(\"NodeGroupInput\")\ngroup_out = crowd_group.nodes.new(\"NodeGroupOutput\")",[107,5091,5092],{},[264,5093,5095],{"className":5094},[1183],"group_in.location = (-600, 0)\ngroup_out.location = (600, 0)",[731,5097,5098,5107],{},[220,5099,5100,3642,5103,5106],{},[264,5101,5102],{},"group_in",[264,5104,5105],{},"group_out"," sont les prises visibles du groupe de nœuds dans l’éditeur Geometry Nodes.",[220,5108,5109],{},"Le script les positionne aussi pour que le graphe soit lisible.",[829,5111,5113],{"id":5112},"_3-define-the-group-interface-what-the-group-acceptsreturns",[126,5114,5115],{},"3) Définir l’interface du groupe (ce que le groupe accepte/retourne)",[107,5117,5118,5119,5125,5126,5132],{},"Nous devons exposer une ",[126,5120,5121,5122],{},"prise d’entrée nommée ",[264,5123,5124],{},"Surface"," dans laquelle nous brancherons le maillage que vous voulez remplir (par ex. un plan), et une ",[126,5127,5128,5129],{},"prise de sortie nommée ",[264,5130,5131],{},"Cubes",", la géométrie résultante.",[1178,5134,5135],{},[264,5136,5138],{"className":5137},[1183],"interface = crowd_group.interface\ninterface.new_socket(name=\"Surface\", in_out=\"INPUT\", socket_type=\"NodeSocketGeometry\")\ninterface.new_socket(name=\"Cubes\", in_out=\"OUTPUT\", socket_type=\"NodeSocketGeometry\")",[107,5140,5141,5142,133],{},"Dans la pratique, lorsque vous ajoutez ce groupe de nœuds à un objet, vous branchez sa surface (la géométrie originale de l’objet) dans ",[264,5143,5124],{},[829,5145,5147],{"id":5146},"_4-create-the-internal-nodes-the-building-blocks",[126,5148,5149],{},"4) Créer les nœuds internes (les blocs de construction)",[107,5151,5152],{},"Nous pouvons ensuite travailler sur la logique interne réelle :",[1178,5154,5155],{},[264,5156,5158],{"className":5157},[1183],"distribute = crowd_group.nodes.new(\"GeometryNodeDistributePointsOnFaces\")\nrand_vec = crowd_group.nodes.new(\"FunctionNodeRandomValue\")\nset_pos = crowd_group.nodes.new(\"GeometryNodeSetPosition\")\ncube = crowd_group.nodes.new(\"GeometryNodeMeshCube\")\ninstance = crowd_group.nodes.new(\"GeometryNodeInstanceOnPoints\")\nrealize = crowd_group.nodes.new(\"GeometryNodeRealizeInstances\")",[731,5160,5161,5167,5173,5179,5185,5191],{},[220,5162,5163,5166],{},[126,5164,5165],{},"GeometryNodeDistributePointsOnFaces"," : crée des points sur la surface d’entrée (contrôle le nombre de points, la distribution).",[220,5168,5169,5172],{},[126,5170,5171],{},"FunctionNodeRandomValue (Float Vector)"," : génère un vecteur 3D aléatoire par point, utilisé comme décalage.",[220,5174,5175,5178],{},[126,5176,5177],{},"GeometryNodeSetPosition"," : déplace chaque point par un vecteur (le décalage aléatoire).",[220,5180,5181,5184],{},[126,5182,5183],{},"GeometryNodeMeshCube"," : génère un maillage de cube qui sera utilisé comme objet d’instance.",[220,5186,5187,5190],{},[126,5188,5189],{},"GeometryNodeInstanceOnPoints"," : place le cube sur chaque point. Il ne crée pas de géométrie réelle, c’est juste une instance « légère » du cube d’origine.",[220,5192,5193,5196],{},[126,5194,5195],{},"GeometryNodeRealizeInstances"," : convertit les instances en géométrie de maillage réelle afin de pouvoir les afficher comme un maillage unique.",[829,5198,5200],{"id":5199},"_5-configure-the-random-vector-node",[126,5201,5202],{},"5) Configurer le nœud de vecteur aléatoire",[107,5204,5205,5206,5209,5210,5213],{},"Nous configurons le nœud ",[264,5207,5208],{},"Random Value"," pour qu’il renvoie un ",[126,5211,5212],{},"vecteur à 3 composantes ","que nous pouvons utiliser pour décaler les cubes générés dans l’espace 3D :",[1178,5215,5216],{},[264,5217,5219,5220,5223,5224,5227],{"className":5218},[1183],"rand_vec.data_type = \"FLOAT_VECTOR\"\nrand_vec.inputs",[1219,5221,5222],{},"\"Min\"",".default_value = (-0.5, -0.5, 0.0)\nrand_vec.inputs",[1219,5225,5226],{},"\"Max\"",".default_value = (0.5, 0.5, 0.5)",[731,5229,5230,5244],{},[220,5231,5232,3642,5235,5238,5239,3642,5242,133],{},[264,5233,5234],{},"Min",[264,5236,5237],{},"Max"," définissent la plage pour chaque composante. Par exemple, X est entre ",[264,5240,5241],{},"-0.5",[264,5243,792],{},[220,5245,5246],{},"Résultat : chaque point reçoit un décalage légèrement différent, donc les cubes ne se superposent pas exactement.",[829,5248,5250],{"id":5249},"_6-node-layout-ui-only",[126,5251,5252],{},"6) Disposition des nœuds (UI uniquement)",[107,5254,5255],{},"Nous positionnons ensuite les nœuds internes pour qu’ils soient faciles à comprendre si nous voulons vérifier notre workflow dans Blender :",[1178,5257,5258],{},[264,5259,5261],{"className":5260},[1183],"distribute.location = (-400, 0)\nrand_vec.location = (-200, -200)\nset_pos.location = (-100, 0)\ninstance.location = (100, 0)\ncube.location = (-400, -200)\nrealize.location = (300, 0)",[107,5263,5264,5265,5268],{},"Ces affectations de ",[264,5266,5267],{},"location"," ne concernent que la manière dont les nœuds sont arrangés visuellement dans l’éditeur de nœuds. Elles n’affectent pas le fonctionnement du graphe.",[829,5270,5272],{"id":5271},"_7-wire-the-nodes-together",[126,5273,5274],{},"7) Câbler les nœuds entre eux",[107,5276,5277],{},"Enfin, nous définissons le flux de données :",[1178,5279,5280],{},[264,5281,5283,5284,5287,5288,5291,5292,5295,5296,5299,5300,5295,5303,5306,5307,5309,5310,5312,5313,5309,5315,5318,5319,5322,5323,5325,5326,5328,5329,1283],{"className":5282},[1183],"links.new(group_in.outputs",[1219,5285,5286],{},"\"Surface\"",", distribute.inputs",[1219,5289,5290],{},"\"Mesh\"",")\nlinks.new(distribute.outputs",[1219,5293,5294],{},"\"Points\"",", set_pos.inputs",[1219,5297,5298],{},"\"Geometry\"",")\nlinks.new(rand_vec.outputs",[1219,5301,5302],{},"\"Value\"",[1219,5304,5305],{},"\"Offset\"",")\nlinks.new(set_pos.outputs",[1219,5308,5298],{},", instance.inputs",[1219,5311,5294],{},")\nlinks.new(cube.outputs",[1219,5314,5290],{},[1219,5316,5317],{},"\"Instance\"",")\nlinks.new(instance.outputs",[1219,5320,5321],{},"\"Instances\"",", realize.inputs",[1219,5324,5298],{},")\nlinks.new(realize.outputs",[1219,5327,5298],{},", group_out.inputs",[1219,5330,5331],{},"\"Cubes\"",[217,5333,5334,5340,5346,5352,5358,5364,5370],{},[220,5335,5336,5339],{},[126,5337,5338],{},"Surface → DistributePointsOnFaces"," : la surface d’entrée (plan) est utilisée pour créer des points dispersés.",[220,5341,5342,5345],{},[126,5343,5344],{},"Points → SetPosition (Geometry)"," : Set position reçoit les points sous forme de géométrie à déplacer.",[220,5347,5348,5351],{},[126,5349,5350],{},"RandomValue → SetPosition (Offset)"," : chaque point reçoit un vecteur de décalage aléatoire.",[220,5353,5354,5357],{},[126,5355,5356],{},"SetPosition → InstanceOnPoints (Points)"," : les points déplacés deviennent les positions d’ancrage pour les instances.",[220,5359,5360,5363],{},[126,5361,5362],{},"Cube Mesh → InstanceOnPoints (Instance)"," : chaque point reçoit une instance de cube.",[220,5365,5366,5369],{},[126,5367,5368],{},"InstanceOnPoints → RealizeInstances"," : les instances sont converties en géométrie de maillage.",[220,5371,5372,5375],{},[126,5373,5374],{},"RealizeInstances → Group Output (« Cubes »)"," : le résultat final est disponible en tant que sortie du groupe.",[107,5377,5378],{},"Voici le code complet que nous avons obtenu :",[1178,5380,5381,5433],{},[264,5382,1187,5384,5388,5390,5394,5396,5398,5402,5404,5408,5411,5415,5423,5427,5429],{"className":5383},[1183],[4952,5385,5387],{"id":5386},"create-a-new-geometry-node-group","Create a new Geometry Node group",[107,5389,5071],{},[4952,5391,5393],{"id":5392},"create-inputoutput-nodes","Create input/output nodes",[107,5395,5089],{},[107,5397,5095],{},[4952,5399,5401],{"id":5400},"define-group-interface-sockets","Define group interface sockets",[107,5403,5138],{},[4952,5405,5407],{"id":5406},"create-internal-nodes","Create internal nodes",[107,5409,5410],{},"distribute = crowd_group.nodes.new(\"GeometryNodeDistributePointsOnFaces\")\ninstance = crowd_group.nodes.new(\"GeometryNodeInstanceOnPoints\")\ncube = crowd_group.nodes.new(\"GeometryNodeMeshCube\")\nrealize = crowd_group.nodes.new(\"GeometryNodeRealizeInstances\")\nset_pos = crowd_group.nodes.new(\"GeometryNodeSetPosition\")\nrand_vec = crowd_group.nodes.new(\"FunctionNodeRandomValue\")",[4952,5412,5414],{"id":5413},"configure-random-vector-node","Configure random vector node",[107,5416,5219,5417,5419,5420,5422],{},[1219,5418,5222],{},".default_value = (-0.5, -0.5, 0.0)  # minimum offset\nrand_vec.inputs",[1219,5421,5226],{},".default_value = (0.5, 0.5, 0.5)  # maximum offset",[4952,5424,5426],{"id":5425},"layout-nodes","Layout nodes",[107,5428,5261],{},[4952,5430,5432],{"id":5431},"create-links","Create links",[107,5434,5435],{},[264,5436,5438,5439,5287,5441,5291,5443,5295,5445,5299,5447,5295,5449,5306,5451,5309,5453,5312,5455,5309,5457,5318,5459,5322,5461,5325,5463,5328,5465,1283],{"className":5437},[1183],"links = crowd_group.links\nlinks.new(group_in.outputs",[1219,5440,5286],{},[1219,5442,5290],{},[1219,5444,5294],{},[1219,5446,5298],{},[1219,5448,5302],{},[1219,5450,5305],{},[1219,5452,5298],{},[1219,5454,5294],{},[1219,5456,5290],{},[1219,5458,5317],{},[1219,5460,5321],{},[1219,5462,5298],{},[1219,5464,5298],{},[1219,5466,5331],{},[107,5468,5469],{},"Maintenant, il ne reste plus qu’à copier-coller ce script dans l’espace de travail de scripting, l’exécuter, puis vous pourrez ajouter notre nœud personnalisé depuis l’espace de travail des geometry nodes :",[233,5471,5473],{"className":5472},[93,236],[238,5474],{"src":5475,"className":5476,"alt":243,"loading":244,"width":5477,"height":5478,"srcSet":5479,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-d4ff8437-efb6-43b0-b45d-a54fce0b74b6.png",[242],1430,920,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-d4ff8437-efb6-43b0-b45d-a54fce0b74b6.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-d4ff8437-efb6-43b0-b45d-a54fce0b74b6.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-d4ff8437-efb6-43b0-b45d-a54fce0b74b6.png 1430w",[107,5481,5482],{},"Nous pouvons ouvrir le groupe de nœuds pour voir ce qu’il contient en double-cliquant dessus :",[233,5484,5486],{"className":5485},[93,236],[238,5487],{"src":5488,"className":5489,"alt":243,"loading":244,"width":5477,"height":5478,"srcSet":5490,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-679df6c4-2877-4419-8b79-4758df98290a.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-679df6c4-2877-4419-8b79-4758df98290a.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-679df6c4-2877-4419-8b79-4758df98290a.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-679df6c4-2877-4419-8b79-4758df98290a.png 1430w",[136,5492],{},[139,5494,5495],{"id":1349},[126,5496,1352],{},[107,5498,5499],{},"Avec seulement quelques dizaines de lignes de code, vous pouvez script des configurations de Geometry Nodes qui prendraient beaucoup plus de temps à assembler manuellement. Dans cet article, vous avez appris comment créer des arborescences de nœuds Geometry Node, ajouter et connecter des nœuds par programmation, contrôler les paramètres et assigner des arborescences de nœuds aux objets, puis construire un système procédural complet.",[107,5501,5502,5503,5506],{},"Jetez un œil à ",[150,5504,5505],{"href":4897},"l’annuaire du code sur Github"," pour essayer l’exemple vous-même !",[233,5508,5510],{"className":5509},[93,236],[238,5511],{"src":5512,"className":5513,"alt":243,"loading":244,"width":4994,"height":4995,"srcSet":5514,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-db488d5a-7ab5-4471-a904-0926b1fa7d11.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-db488d5a-7ab5-4471-a904-0926b1fa7d11.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-db488d5a-7ab5-4471-a904-0926b1fa7d11.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-db488d5a-7ab5-4471-a904-0926b1fa7d11.png 1314w",[107,5516,5517],{},"Cette approche libère un potentiel d’automatisation sans fin, du développement d’outils à l’art génératif. ",[90,5519,5521,5524],{"className":5520},[93,94,95],[90,5522,587],{"className":5523},[99],[90,5525,1394,5527,598],{"className":5526},[104],[150,5528,1398],{"href":594,"rel":5529},[596],[90,5531,5533],{"className":5532},[93,602,603],[150,5534,1405],{"href":594,"className":5535},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":5537},[5538,5539,5540,5541,5542,5551],{"id":4861,"depth":611,"text":4864},{"id":4903,"depth":611,"text":4906},{"id":4932,"depth":611,"text":4935},{"id":5001,"depth":611,"text":5004},{"id":5044,"depth":611,"text":5047,"children":5543},[5544,5545,5546,5547,5548,5549,5550],{"id":5056,"depth":1413,"text":5059},{"id":5077,"depth":1413,"text":5080},{"id":5112,"depth":1413,"text":5115},{"id":5146,"depth":1413,"text":5149},{"id":5199,"depth":1413,"text":5202},{"id":5249,"depth":1413,"text":5252},{"id":5271,"depth":1413,"text":5274},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1675044794037-9262cedb6d5d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGJsZW5kZXIlMjBnZW9tZXRyeSUyMG5vZGVzfGVufDB8fHx8MTc2MzM2OTc0N3ww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":5554,"featured_at":625,"visibility":626},"2026-02-20T06:04:04.000+01:00","/blog-i18n/fr/blender-scripting-geometry-nodes-2","2025-11-17T10:13:21.000+01:00",{"title":4826,"description":243},"blender-scripting-geometry-nodes-2","blog-i18n/fr/blender-scripting-geometry-nodes-2/index",[5561,5562],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"l6vF4MtyASTXwSB5Kcrxa8D5w40ywVOUFHIpOrZ79xg",{"id":5565,"title":5566,"authors":5567,"body":5569,"description":243,"extension":621,"feature_image":6020,"html":7,"meta":6021,"navigation":12,"path":6022,"published_at":6023,"seo":6024,"slug":6025,"stem":6026,"tags":6027,"__hash__":6029,"updated_at":5554,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-scripting-geometry-nodes/index.md","Le guide du débutant pour les Geometry Nodes dans Blender 2026",[5568],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":5570,"toc":5999},[5571,5581,5584,5587,5589,5595,5598,5607,5610,5612,5618,5625,5628,5653,5655,5661,5664,5672,5680,5683,5686,5715,5723,5726,5729,5732,5734,5739,5742,5745,5748,5753,5756,5759,5765,5768,5771,5777,5780,5783,5793,5799,5802,5805,5814,5820,5823,5826,5832,5835,5838,5844,5847,5850,5860,5866,5869,5872,5878,5881,5884,5890,5893,5899,5902,5905,5911,5914,5917,5923,5926,5929,5935,5938,5941,5958,5960,5964,5967,5970,5980,5993],[90,5572,5574,5577],{"className":5573},[93,94,95],[90,5575,3273],{"className":5576},[99],[90,5578,5580],{"className":5579},[104],"Reconstruire des scènes à la main, c’est du niveau 2010. Les Geometry Nodes vous permettent d’automatiser, de randomiser et de contrôler des projets Blender avec précision — transformant des heures de modélisation manuelle en quelques minutes de magie procédurale.",[107,5582,5583],{},"Passer des heures à dupliquer manuellement de la géométrie, à la remodeler ou à animer des mouvements répétitifs dans Blender n’est pas vraiment amusant. Certains workflows fonctionnent comme ça : vous devez refaire des tâches répétitives encore et encore, avec seulement de légères variations.",[107,5585,5586],{},"Mais il existe une façon plus intelligente et plus rapide de créer des effets procéduraux : les geometry nodes. Ils peuvent sembler intimidants et demander du temps pour être maîtrisés, mais à la fin de cet article, vous saurez ce que sont les geometry nodes, pourquoi ils comptent, et comment commencer à les utiliser dans vos propres projets Blender.",[136,5588],{},[139,5590,5592],{"id":5591},"what-are-geometry-nodes",[126,5593,5594],{},"Que sont les Geometry Nodes ?",[107,5596,5597],{},"Les Geometry Nodes sont la manière de Blender de vous permettre de créer et de manipuler des modèles de façon procédurale. Au lieu de modifier directement les objets maillage, vous connectez des nœuds visuels qui définissent des opérations comme l’instanciation, la transformation ou la dispersion d’objets, le tout de manière non destructive et modulaire.",[233,5599,5601],{"className":5600},[93,236],[238,5602],{"src":5603,"className":5604,"alt":243,"loading":244,"width":712,"height":5605,"srcSet":5606,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-b4252feb-7713-4df1-98ca-cc453b53d4ee.png",[242],830,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-b4252feb-7713-4df1-98ca-cc453b53d4ee.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-b4252feb-7713-4df1-98ca-cc453b53d4ee.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-b4252feb-7713-4df1-98ca-cc453b53d4ee.png 1600w",[107,5608,5609],{},"Chaque nœud effectue une petite tâche, mais une fois connectés, ils peuvent produire des résultats incroyablement détaillés : de forêts constituées de milliers d’arbres randomisés à des traînées de particules animées ou des motifs architecturaux. Les Geometry Nodes vous permettent de construire une fois et de tout contrôler grâce à des paramètres ajustables.",[136,5611],{},[139,5613,5615],{"id":5614},"why-geometry-nodes-are-important",[126,5616,5617],{},"Pourquoi les Geometry Nodes sont importants",[107,5619,5620,5624],{},[150,5621,5623],{"href":5622},"https://blog.cg-wire.com/3d-modeling-animation/","Les workflows traditionnels de modélisation et d’animation"," reposent souvent sur des ajustements manuels qui prennent du temps, où chaque changement ou variation nécessite des modifications directes sur le modèle. Les Geometry Nodes révolutionnent ce processus en introduisant un contrôle procédural : un système qui permet de générer et de modifier dynamiquement des modèles via des valeurs d’entrée, du hasard ou des relations mathématiques.",[107,5626,5627],{},"Cette approche offre plusieurs avantages majeurs. Elle vous rend plus productif en vous permettant de mettre à jour ou randomiser instantanément des scènes complexes sans avoir besoin de tout reconstruire depuis zéro. Elle apporte aussi de la flexibilité à votre pipeline, car les paramètres peuvent être ajustés à n’importe quelle étape de la production. Les Geometry Nodes ouvrent la porte à l’expérimentation pour produire des formes, des motifs et des effets complexes qu’il serait difficile, voire impossible, d’obtenir à la main — comme générer une grande zone d’herbe. Cette fonctionnalité est idéale pour de la modélisation à grande échelle, comme les simulations de foule ou les environnements naturels réalistes.",[90,5629,5632,5635],{"className":5630},[93,94,5631],"kg-callout-card-green",[90,5633,1142],{"className":5634},[99],[90,5636,5638,5642,5644,5646,5647,5649,1162,5651],{"className":5637},[104],[1147,5639,5640],{},[126,5641,1151],{"style":725},[1153,5643],{},[1153,5645],{},"Vous pouvez trouver le code source complet de l’exemple d’intégration Blender–Kitsu présenté dans ce guide sur notre GitHub :",[1153,5648],{},[1153,5650],{},[150,5652,4898],{"href":4897},[136,5654],{},[139,5656,5658],{"id":5657},"adding-a-geometry-node",[126,5659,5660],{},"Ajouter un Geometry Node",[107,5662,5663],{},"Je sais que le concept peut paraître intimidant, mais donnez-moi 5 minutes et nous créerons votre première configuration de geometry node.",[217,5665,5666,5669],{},[220,5667,5668],{},"Ouvrez un nouveau projet Blender avec un cube par défaut.",[220,5670,5671],{},"Dans l’onglet Geometry Nodes, cliquez sur New pour créer un nouveau groupe de geometry nodes.",[233,5673,5675],{"className":5674},[93,236],[238,5676],{"src":5677,"className":5678,"alt":243,"loading":244,"width":4994,"height":4995,"srcSet":5679,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-6cd7bfd9-e7fd-4220-834e-c6260fa00949.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-6cd7bfd9-e7fd-4220-834e-c6260fa00949.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-6cd7bfd9-e7fd-4220-834e-c6260fa00949.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-6cd7bfd9-e7fd-4220-834e-c6260fa00949.png 1314w",[107,5681,5682],{},"Vous verrez maintenant un arbre de nœuds vide dans l’espace de travail de l’éditeur Geometry Node, avec deux nœuds par défaut : Group Input et Group Output. Ils représentent le début et la fin de votre flux de données : la géométrie arrive, est modifiée, puis sort.",[107,5684,5685],{},"Pour voir votre configuration en action, il vous suffit d’ajouter votre premier nœud :",[217,5687,5688,5701,5712],{},[220,5689,394,5690,5692,5693,5692,5695,5692,5698,133],{},[126,5691,817],{}," → ",[126,5694,850],{},[126,5696,5697],{},"Operations",[126,5699,5700],{},"Transform Geometry",[220,5702,5703,5704,5692,5707,5692,5709,133],{},"Connectez le ",[126,5705,5706],{},"Group Input",[126,5708,5700],{},[126,5710,5711],{},"Group Output",[220,5713,5714],{},"Réglez les valeurs de translation ou d’échelle dans le nœud Transform.",[233,5716,5718],{"className":5717},[93,236],[238,5719],{"src":5720,"className":5721,"alt":243,"loading":244,"width":4994,"height":4995,"srcSet":5722,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-ea4b9476-8d89-4d56-bd6a-62dd751ba84d.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-ea4b9476-8d89-4d56-bd6a-62dd751ba84d.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-ea4b9476-8d89-4d56-bd6a-62dd751ba84d.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-ea4b9476-8d89-4d56-bd6a-62dd751ba84d.png 1314w",[107,5724,5725],{},"Vous verrez immédiatement votre objet bouger ou changer de taille dans l’aperçu. Félicitations, vous venez de construire votre premier modificateur procédural !",[107,5727,5728],{},"Les Geometry Nodes se répartissent en plusieurs grandes catégories, chacune gérant différents aspects de votre scène. Considérez ces catégories comme des boîtes à outils : chacune se concentre sur un type de tâche différent, de la génération de formes au contrôle des données ou des opérations mathématiques en coulisses.",[107,5730,5731],{},"Voici un aperçu rapide des différents types de nœuds pour trouver ceux dont vous avez besoin pour un nouveau workflow :",[136,5733],{},[139,5735,5736],{"id":831},[126,5737,5738],{},"1. Nœuds d’entrée (Input Nodes)",[107,5740,5741],{},"Les nœuds d’entrée fournissent les informations de départ pour votre arbre de nœuds. Ils importent des données existantes provenant de votre objet ou de votre scène, comme la position, la normale, l’index ou les informations sur l’objet, que d’autres nœuds peuvent utiliser pour calculer ou transformer la géométrie.",[107,5743,5744],{},"Par exemple, un nœud Input → Scene → Object info vous donne toutes les informations nécessaires sur une instance d’objet pour effectuer des calculs.",[107,5746,5747],{},"Lors de la création d’un nouvel arbre de nœuds, Blender ajoutera toujours un nouveau nœud Group Input représentant le groupe de modèles de la scène actuelle.",[139,5749,5750],{"id":878},[126,5751,5752],{},"2. Nœuds de sortie (Output Nodes)",[107,5754,5755],{},"Les nœuds de sortie définissent ce que quitte votre système de nœuds : la géométrie finale que Blender rend ou affiche. Le nœud Group Output est le plus courant : il relie le résultat de l’ensemble de votre réseau de nœuds à votre objet dans la vue.",[107,5757,5758],{},"D’autres sorties spécialisées (comme Material Output dans les configurations de shader) transmettent des données à différentes parties du système de Blender. Dans les Geometry Nodes, l’étape de sortie détermine quelle géométrie, quelles instances ou quelles attributs sont visibles dans le résultat.",[139,5760,5762],{"id":5761},"_3-geometry-nodes",[126,5763,5764],{},"3. Geometry Nodes",[107,5766,5767],{},"Les geometry nodes modifient directement, combinent ou génèrent de la géométrie : les formes réelles de votre scène.",[107,5769,5770],{},"Ce sont le cœur de la modélisation procédurale. Au lieu de sculpter à la main, vous pouvez créer des systèmes qui génèrent automatiquement de la géométrie, puis les ajuster plus tard sans détruire votre maillage de base.",[139,5772,5774],{"id":5773},"_4-mesh-nodes",[126,5775,5776],{},"4. Nœuds de maillage (Mesh Nodes)",[107,5778,5779],{},"Les nœuds de maillage se concentrent sur un contrôle fin des structures de maillage : les sommets, arêtes et faces qui composent votre géométrie. Ils vous permettent d’accéder et de modifier des éléments de maillage spécifiques ou de convertir des types de géométrie.",[107,5781,5782],{},"Quand vous avez besoin d’un contrôle précis de la topologie, choisissez les mesh nodes. Ils sont parfaits pour des tâches de modélisation procédurale comme créer des grilles, manipuler des boucles d’arêtes, ou générer une nouvelle topologie à partir de maillages existants.",[233,5784,5786],{"className":5785},[93,236],[238,5787],{"src":5788,"className":5789,"alt":243,"loading":244,"width":5790,"height":5791,"srcSet":5792,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-da4fe358-ac3b-482a-8641-6b0540c9d792.png",[242],947,897,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-da4fe358-ac3b-482a-8641-6b0540c9d792.png 600w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-da4fe358-ac3b-482a-8641-6b0540c9d792.png 947w",[139,5794,5796],{"id":5795},"_5-instance-nodes",[126,5797,5798],{},"5. Nœuds d’instance (Instance Nodes)",[107,5800,5801],{},"Les nœuds d’instance créent des copies (instances) d’objets, dispersées sur des surfaces ou sur des points. Des nœuds comme Instance on Points ou Realize Instances gèrent ce type de tâche.",[107,5803,5804],{},"L’instanciation fait partie des fonctionnalités les plus puissantes des Geometry Nodes, car elle vous permet de dupliquer des milliers d’objets (comme des arbres, des rochers ou des particules) sans ralentir votre scène : vous ne rendez qu’une seule copie « réelle », tout en la référencent plusieurs fois.",[233,5806,5808],{"className":5807},[93,236],[238,5809],{"src":5810,"className":5811,"alt":243,"loading":244,"width":712,"height":5812,"srcSet":5813,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-1049c5fc-a3de-480a-b494-ed49a488af0c.png",[242],1085,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-1049c5fc-a3de-480a-b494-ed49a488af0c.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-1049c5fc-a3de-480a-b494-ed49a488af0c.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-1049c5fc-a3de-480a-b494-ed49a488af0c.png 1600w",[139,5815,5817],{"id":5816},"_6-attribute-nodes",[126,5818,5819],{},"6. Nœuds d’attribut (Attribute Nodes)",[107,5821,5822],{},"Les nœuds d’attribut contrôlent ou transmettent des propriétés personnalisées attachées à la géométrie, comme la couleur, l’échelle ou des valeurs aléatoires par point. Ces attributs peuvent être utilisés pour piloter des transformations, des matériaux ou des effets.",[107,5824,5825],{},"Les attributs vous permettent d’ajouter de la variation et du contrôle à vos systèmes procéduraux. Vous pouvez randomiser la taille des objets dispersés, changer différemment la couleur des particules, ou lier des effets de matériau aux données de géométrie.",[139,5827,5829],{"id":5828},"_7-utilities-and-fields",[126,5830,5831],{},"7. Utilitaires et champs (Utilities and Fields)",[107,5833,5834],{},"Les nœuds utilitaires gèrent la logique et les opérations mathématiques derrière votre réseau de géométrie. Ils incluent des opérations comme Math, Vector Math, Compare ou Map Range, et sont souvent utilisés pour traiter ou contrôler les entrées d’autres nœuds, comme dans un langage de programmation.",[107,5836,5837],{},"Ce sont les « cerveaux » de votre configuration : ils vous permettent d’établir des relations, de créer des dégradés, de randomiser des valeurs, etc.",[139,5839,5841],{"id":5840},"_8-curve-nodes",[126,5842,5843],{},"8. Nœuds de courbe (Curve Nodes)",[107,5845,5846],{},"Les nœuds de courbe fonctionnent avec une géométrie basée sur les courbes : lignes, splines ou chemins. Ils sont utiles pour générer des câbles, des lianes, des routes ou des traînées de mouvement abstraites. Des nœuds comme Resample Curve, Curve to Mesh et Set Curve Radius vous permettent d’ajuster la forme, la résolution ou l’épaisseur des courbes de façon procédurale.",[107,5848,5849],{},"Les courbes peuvent aussi piloter l’instanciation : vous pouvez placer des objets le long d’un chemin ou animer leur mouvement dans le temps.",[233,5851,5853],{"className":5852},[93,236],[238,5854],{"src":5855,"className":5856,"alt":243,"loading":244,"width":5857,"height":5858,"srcSet":5859,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-6409cf07-26e7-4eb6-8e76-85e9a33a1581.png",[242],1142,936,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-6409cf07-26e7-4eb6-8e76-85e9a33a1581.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-6409cf07-26e7-4eb6-8e76-85e9a33a1581.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-6409cf07-26e7-4eb6-8e76-85e9a33a1581.png 1142w",[139,5861,5863],{"id":5862},"_9-grease-pencil-nodes",[126,5864,5865],{},"9. Nœuds Grease Pencil",[107,5867,5868],{},"Les nœuds Grease Pencil intègrent le système de dessin 2D de Blender dans le workflow des Geometry Nodes. Vous pouvez modifier procéduralement des tracés, convertir des dessins en géométrie, ou appliquer des effets comme le bruit, l’extrusion, ou la déformation à des lignes 2D.",[107,5870,5871],{},"Ces nœuds font le pont entre l’animation 2D et le design procédural, offrant aux artistes de nouvelles façons de styliser des motion graphics ou des scènes hybrides 2D/3D.",[139,5873,5875],{"id":5874},"_10-point-nodes",[126,5876,5877],{},"10. Nœuds de point (Point Nodes)",[107,5879,5880],{},"Les nœuds de point manipulent des points individuels dans votre géométrie : les éléments de base qui servent à disperser, positionner ou transformer des instances. Vous pouvez ajouter, déplacer ou faire pivoter des points, ou attribuer des attributs comme la couleur ou l’échelle à chacun.",[107,5882,5883],{},"Par exemple, Distribute Points on Faces génère des points placés uniformément ou aléatoirement sur une surface, qui peuvent ensuite servir de positions de placement pour des instances comme de l’herbe ou des particules.",[139,5885,5887],{"id":5886},"_11-volume-nodes",[126,5888,5889],{},"11. Nœuds de volume (Volume Nodes)",[107,5891,5892],{},"Les nœuds de volume vous permettent de créer et de manipuler des données volumétriques comme le brouillard, la fumée ou des champs de densité procéduraux. Vous pouvez les utiliser pour générer des textures 3D, modeler des nuages, ou remplir une géométrie avec des effets basés sur la densité. Ils ouvrent la porte à des effets atmosphériques ou organiques qui dépassent largement la modélisation de surface.",[139,5894,5896],{"id":5895},"_12-material-nodes",[126,5897,5898],{},"12. Nœuds de matériau (Material Nodes)",[107,5900,5901],{},"Les nœuds de matériau assignent ou modifient des matériaux et des données de shading. Les nœuds Set Material ou Material Index vous permettent d’appliquer dynamiquement différents matériaux en fonction d’attributs, de graines aléatoires, ou de régions de votre modèle.",[107,5903,5904],{},"Cela facilite par exemple le codage couleur de parties d’une structure ou l’assignation procédurale de matériaux à des objets dispersés.",[139,5906,5908],{"id":5907},"_13-texture-nodes",[126,5909,5910],{},"13. Nœuds de texture (Texture Nodes)",[107,5912,5913],{},"Les nœuds de texture échantillonnent ou génèrent des textures procédurales qui peuvent piloter des transformations de géométrie ou des variations visuelles. Ils peuvent fournir des masques en niveaux de gris, des motifs de bruit ou des dégradés qui influencent l’échelle, le déplacement ou la couleur.",[107,5915,5916],{},"En combinant des données de texture avec des nœuds de mathématiques ou d’attributs, vous pouvez créer une randomisation naturelle pour des terrains irréguliers, des surfaces ondulées ou une distribution à motifs.",[139,5918,5920],{"id":5919},"_14-group-nodes",[126,5921,5922],{},"14. Nœuds de groupe (Group Nodes)",[107,5924,5925],{},"Les nœuds de groupe regroupent plusieurs nœuds dans une unité réutilisable. Ils sont essentiels pour organiser des configurations complexes et garder vos arbres de nœuds propres. Vous pouvez exposer des paramètres sur les entrées/sorties du groupe pour qu’ils soient ajustables, transformant ainsi votre configuration personnalisée en un « super nœud ».",[107,5927,5928],{},"Une fois que vous commencez à construire vos propres groupes, vous n’utilisez plus seulement les Geometry Nodes : vous créez vos propres outils procéduraux.",[139,5930,5932],{"id":5931},"_15-hair-nodes",[126,5933,5934],{},"15. Nœuds de cheveux (Hair Nodes)",[107,5936,5937],{},"Les nœuds de cheveux sont conçus pour générer, coiffer et contrôler des systèmes de cheveux ou de fourrure procéduraux. Ils donnent accès à la longueur des mèches, à la densité et aux attributs de grooming, vous permettant de simuler tout, des champs d’herbe aux cheveux d’un personnage.",[107,5939,5940],{},"Ces nœuds remplacent les anciens workflows basés sur les particules par une approche moderne et procédurale, intégrée de manière transparente au nouveau système de cheveux de Blender.",[233,5942,5944,5950],{"className":5943},[93,236,707],[238,5945],{"src":5946,"className":5947,"alt":243,"loading":244,"width":712,"height":5948,"srcSet":5949,"sizes":248},"https://blog.cg-wire.com/content/images/2025/11/data-src-image-64d8cc68-468d-4294-8abb-2fafc2ac9d87.png",[242],916,"https://blog.cg-wire.com/content/images/size/w600/2025/11/data-src-image-64d8cc68-468d-4294-8abb-2fafc2ac9d87.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/11/data-src-image-64d8cc68-468d-4294-8abb-2fafc2ac9d87.png 1000w, https://blog.cg-wire.com/content/images/2025/11/data-src-image-64d8cc68-468d-4294-8abb-2fafc2ac9d87.png 1600w",[716,5951,5952],{},[719,5953,5954],{},[130,5955,5957],{"className":5956,"style":725},[724],"Source : Blender Stack Exchange",[136,5959],{},[139,5961,5962],{"id":1349},[126,5963,1352],{},[107,5965,5966],{},"Les Geometry Nodes peuvent sembler abstraits ou intimidants au premier abord, mais ce sont parmi les fonctionnalités les plus passionnantes de Blender. Une fois que vous comprenez comment combiner les nœuds, vous pouvez générer des animations entières, des environnements ou des effets visuels pilotés par une logique procédurale plutôt que par des modifications manuelles.",[107,5968,5969],{},"Ne vous sentez toutefois pas obligé de tout mémoriser. La plupart des configurations de Geometry Nodes s’appuient sur quelques nœuds clés que vous prendrez naturellement en main au fur et à mesure que vous expérimentez.",[107,5971,5972,5975,5976,5979],{},[150,5973,5974],{"href":545},"Dans notre prochain article",", nous irons plus loin : vous apprendrez à ",[150,5977,5978],{"href":4007},"créer vos propres groupes de nœuds personnalisés à l’aide de scripts"," afin d’automatiser des effets tout en réduisant la complexité de vos workflows pour des pipelines d’animation uniques.",[90,5981,5983,5986],{"className":5982},[93,94,95],[90,5984,587],{"className":5985},[99],[90,5987,1394,5989,5992],{"className":5988},[104],[150,5990,1398],{"href":594,"rel":5991},[596]," ! Nous échangeons avec plus d’un millier d’experts qui partagent des bonnes pratiques et organisent parfois des événements en présentiel. Nous serions ravis de vous accueillir ! 😊",[90,5994,5996],{"className":5995},[93,602,603],[150,5997,609],{"href":594,"className":5998},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":6000},[6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019],{"id":5591,"depth":611,"text":5594},{"id":5614,"depth":611,"text":5617},{"id":5657,"depth":611,"text":5660},{"id":831,"depth":611,"text":5738},{"id":878,"depth":611,"text":5752},{"id":5761,"depth":611,"text":5764},{"id":5773,"depth":611,"text":5776},{"id":5795,"depth":611,"text":5798},{"id":5816,"depth":611,"text":5819},{"id":5828,"depth":611,"text":5831},{"id":5840,"depth":611,"text":5843},{"id":5862,"depth":611,"text":5865},{"id":5874,"depth":611,"text":5877},{"id":5886,"depth":611,"text":5889},{"id":5895,"depth":611,"text":5898},{"id":5907,"depth":611,"text":5910},{"id":5919,"depth":611,"text":5922},{"id":5931,"depth":611,"text":5934},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1639322537504-6427a16b0a28?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGJsZW5kZXIlMjBnZW9tZXRyeSUyMG5vZGVzfGVufDB8fHx8MTc2Mjc1NzU1NXww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":5554,"featured_at":625,"visibility":626},"/blog-i18n/fr/blender-scripting-geometry-nodes","2025-11-10T10:00:00.000+01:00",{"title":5566,"description":243},"blender-scripting-geometry-nodes","blog-i18n/fr/blender-scripting-geometry-nodes/index",[6028],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"fADd8ighNDXuLTK56sxg8BApk5doMpRZ5wdt7YKci1A",{"id":6031,"title":6032,"authors":6033,"body":6035,"description":243,"extension":621,"feature_image":6539,"html":7,"meta":6540,"navigation":12,"path":6542,"published_at":6543,"seo":6544,"slug":6545,"stem":6546,"tags":6547,"__hash__":6549,"updated_at":6541,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/forward-vs-inverse-kinematics-blender/index.md","Comment utiliser la cinématique directe et la cinématique inverse dans Blender (2026)",[6034],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":6036,"toc":6531},[6037,6055,6058,6061,6063,6069,6076,6094,6097,6111,6114,6116,6122,6128,6135,6138,6163,6165,6171,6174,6186,6195,6204,6212,6221,6230,6236,6246,6251,6260,6272,6282,6288,6296,6305,6308,6311,6313,6319,6322,6330,6340,6352,6360,6376,6384,6412,6422,6430,6445,6455,6465,6468,6471,6473,6479,6492,6495,6498,6500,6504,6507,6510,6513,6525],[90,6038,6040,6044],{"className":6039},[93,94,95],[90,6041,6043],{"className":6042},[99],"🤖",[90,6045,6047,6048,6054],{"className":6046},[104],"Un modèle 3D n’est qu’un mannequin inanimé tant que vous",[150,6049,751,6051],{"href":6050},"https://blog.cg-wire.com/rigging-in-animation/",[695,6052,6053],{},"ne le mettez pas en place",". La vraie magie se produit lorsque les animateurs le font bouger, et c’est là qu’intervient la cinématique.",[107,6056,6057],{},"Le problème, c’est que ce n’est pas aussi simple que de déplacer le bras ou la jambe d’un personnage. Si vous poussez trop loin, le coude de votre personnage se plie soudain vers l’arrière, ou sa course ressemble à un jouet à ressort cassé. Si vous jouez trop la prudence, le mouvement paraît raide et robotique. Trouver l’équilibre entre une physique crédible et l’expression, c’est difficile.",[107,6059,6060],{},"Dans cet article, nous allons explorer ce qu’est la cinématique et comment elle fonctionne dans Blender. À la fin, vous aurez créé votre premier rig pour l’animation.",[136,6062],{},[139,6064,6066],{"id":6065},"what-are-kinematics",[126,6067,6068],{},"Qu’est-ce que la cinématique",[107,6070,6071,6072,6075],{},"La cinématique est ",[126,6073,6074],{},"l’étude de la façon dont les choses se déplacent dans l’espace"," sans se soucier des forces qui provoquent le mouvement. En animation, cela signifie se concentrer sur la façon dont les articulations, les membres et les différentes parties d’un personnage ou d’un objet se transforment d’une pose à la suivante, plutôt que de s’inquiéter des muscles ou de la gravité qui les tire.",[233,6077,6079,6086],{"className":6078},[93,236,707],[238,6080],{"src":6081,"className":6082,"alt":243,"loading":244,"width":6083,"height":6084,"srcSet":6085,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-1727ea30-70cc-42b6-a5e1-085ffa16eef4.png",[242],841,431,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-1727ea30-70cc-42b6-a5e1-085ffa16eef4.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-1727ea30-70cc-42b6-a5e1-085ffa16eef4.png 841w",[716,6087,6088],{},[719,6089,6090],{},[130,6091,6093],{"className":6092,"style":725},[724],"Source : MathWorks",[107,6095,6096],{},"La cinématique donne aux animateurs des règles et des outils pour faire bouger des modèles 3D d’une manière cohérente et crédible. Il est important de distinguer la cinématique directe de la cinématique inverse :",[731,6098,6099,6105],{},[220,6100,6101,6104],{},[126,6102,6103],{},"Cinématique directe"," : En FK, le mouvement commence en haut de la hiérarchie. Si vous voulez déplacer une main, vous faites d’abord pivoter l’épaule, puis le coude, puis le poignet. C’est intuitif pour les arcs et les mouvements naturels (comme faire un signe de la main ou balancer une épée), car vous contrôlez le maillon de la chaîne un par un. Mais cela peut être fastidieux : si vous animez un doigt qui touche un point dans l’espace, vous devez ajuster manuellement toutes les articulations pour les aligner.",[220,6106,6107,6110],{},[126,6108,6109],{},"Cinématique inverse"," : L’IK inverse le problème. Au lieu de faire pivoter chaque articulation, vous placez l’extrémité de la chaîne à l’endroit où vous la voulez (par exemple, la main d’un personnage posée sur une table), et l’ordinateur calcule comment l’épaule et le coude doivent se plier pour atteindre ce point. L’IK est idéale pour les mouvements verrouillés, comme garder les pieds posés au sol pendant que le corps bouge. En revanche, elle peut parfois créer des courbures peu naturelles si elle n’est pas contrôlée avec soin ; vous devrez donc définir des contraintes complexes.",[107,6112,6113],{},"Les animateurs ne choisissent pas l’une ou l’autre exclusivement. Ils passent de la FK à l’IK selon le type de mouvement dont ils ont besoin : la FK pour les arcs fluides, l’IK pour un placement précis, et souvent un mélange des deux afin d’obtenir le déplacement le plus naturel possible du bout à l’autre.",[136,6115],{},[139,6117,6119],{"id":6118},"why-kinematics-are-important",[126,6120,6121],{},"Pourquoi la cinématique est importante",[107,6123,6124,6127],{},[126,6125,6126],{},"La cinématique garantit que le mouvement d’un personnage respecte une logique anatomique"," : les articulations se plient dans le bon sens, les membres gardent les bonnes relations entre eux et les actions s’enchaînent naturellement. Sans cela, même le meilleur modèle 3D paraîtra cassé pendant l’animation. Quand un personnage tend la main pour attraper une tasse sur une table, le coude doit se plier correctement et le poignet doit pivoter naturellement. Sans la cinématique, le bras risque de s’hyperétendre, ou la main pourrait se tordre d’une manière impossible.",[107,6129,6130,6131,6134],{},"En utilisant la cinématique directe et la cinématique inverse, ",[126,6132,6133],{},"les animateurs peuvent contrôler des parties complexes du corps avec beaucoup moins d’étapes",". Au lieu de régler chaque image de chaque articulation, ils peuvent poser des chaînes entières en une seule fois tout en réduisant les erreurs de pose. Au lieu d’ajuster manuellement la cheville, le genou et la hanche à chaque image, l’animateur verrouille simplement le pied à l’endroit voulu grâce à la cinématique inverse, et le logiciel s’occupe du reste.",[107,6136,6137],{},"Essayons de faire le rig d’un modèle simple dans Blender pour mieux comprendre comment cela fonctionne.",[90,6139,6141,6144],{"className":6140},[93,94,5631],[90,6142,1142],{"className":6143},[99],[90,6145,6147,6151,6153,1157,6155,6157,1162,6159],{"className":6146},[104],[1147,6148,6149],{},[126,6150,1579],{"style":725},[1153,6152],{},[1153,6154],{},[1153,6156],{},[1153,6158],{},[150,6160,6162],{"href":6161},"https://github.com/cgwire/blender-ik-fk?ref=blog.cg-wire.com","https://github.com/cgwire/blender-ik-fk",[136,6164],{},[139,6166,6168],{"id":6167},"forward-kinematics-fk-in-blender",[126,6169,6170],{},"La cinématique directe (FK) dans Blender",[107,6172,6173],{},"La FK, c’est comme déplacer une marionnette : vous contrôlez chaque ficelle une par une, en commençant par l’épaule et en descendant jusqu’aux extrémités des doigts. Chaque rotation s’appuie sur la précédente.",[217,6175,6176],{},[220,6177,6178,6179,6182,6183,4484],{},"Ajoutez un cube (",[264,6180,6181],{},"Add → Mesh → Cube",") et mettez-le à l’échelle pour obtenir un parallélépipède rectangle. Normalisez l’échelle à 1 pour le biseautage (",[264,6184,6185],{},"Object → Apply → Scale",[233,6187,6189],{"className":6188},[93,236],[238,6190],{"src":6191,"className":6192,"alt":243,"loading":244,"width":712,"height":6193,"srcSet":6194,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-bbbf0c86-c1bb-4b7b-afd1-18cf0971aeab.png",[242],646,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-bbbf0c86-c1bb-4b7b-afd1-18cf0971aeab.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-bbbf0c86-c1bb-4b7b-afd1-18cf0971aeab.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-bbbf0c86-c1bb-4b7b-afd1-18cf0971aeab.png 1600w",[217,6196,6197],{"start":611},[220,6198,6199,6200,6203],{},"En mode Édition, biseautez les arêtes pour arrondir chaque côté. Assurez-vous d’utiliser le mode ",[264,6201,6202],{},"Edge"," et de sélectionner les quatre arêtes dont nous avons besoin. Dans la fenêtre Bevel qui apparaît, augmentez le nombre de segments pour créer des arêtes arrondies.",[233,6205,6207],{"className":6206},[93,236],[238,6208],{"src":6209,"className":6210,"alt":243,"loading":244,"width":712,"height":3090,"srcSet":6211,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-0c49b11d-3896-4035-a842-4eb98d661b33.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-0c49b11d-3896-4035-a842-4eb98d661b33.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-0c49b11d-3896-4035-a842-4eb98d661b33.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-0c49b11d-3896-4035-a842-4eb98d661b33.png 1600w",[217,6213,6214],{"start":1413},[220,6215,6216,6217,6220],{},"Créez deux autres segments pour obtenir un bras mécanique. En mode ",[264,6218,6219],{},"Object",", sélectionnez le parallélépipède et dupliquez-le. Répétez une fois de plus pour avoir trois segments.",[233,6222,6224],{"className":6223},[93,236],[238,6225],{"src":6226,"className":6227,"alt":243,"loading":244,"width":6228,"height":6229},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-318d3ca9-6f1f-4afe-b602-ccff95474782.png",[242],315,171,[217,6231,6233],{"start":6232},4,[220,6234,6235],{},"Placez les segments le long de l’axe X pour créer la chaîne. Essayez de les positionner de façon à ce qu’ils puissent se placer bout à bout avec une position de joint bien visible.",[233,6237,6239],{"className":6238},[93,236],[238,6240],{"src":6241,"className":6242,"alt":243,"loading":244,"width":6243,"height":6244,"srcSet":6245,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-82b2e2e0-c34c-46a2-9418-f313e5c0f788.png",[242],847,467,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-82b2e2e0-c34c-46a2-9418-f313e5c0f788.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-82b2e2e0-c34c-46a2-9418-f313e5c0f788.png 847w",[217,6247,6248],{"start":4724},[220,6249,6250],{},"Configurez la hiérarchie parent-enfant (chaîne FK). Construisez la chaîne de la base vers l’extrémité. Sélectionnez d’abord l’objet enfant, puis associez-le au parent prévu (celui qui est plus proche de la base). Répétez l’opération pour que chaque segment soit parenté au segment précédent.",[233,6252,6254],{"className":6253},[93,236],[238,6255],{"src":6256,"className":6257,"alt":243,"loading":244,"width":6258,"height":6259},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-408d19e7-ccac-4706-90fa-1aa9ace327b7.png",[242],319,218,[217,6261,6263],{"start":6262},6,[220,6264,6265,6266,3638,6268,6271],{},"Placez l’origine de chaque objet au niveau de son joint. Pour que la rotation soit correcte, l’origine doit se trouver à l’extrémité du joint de chaque segment. Utilisez l’outil curseur pour positionner l’origine. Puis, en mode ",[264,6267,6219],{},[264,6269,6270],{},"Object → Set Origin → Origin to 3D Cursor",". Faites-le pour chaque segment.",[233,6273,6275],{"className":6274},[93,236],[238,6276],{"src":6277,"className":6278,"alt":243,"loading":244,"width":6279,"height":6280,"srcSet":6281,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-7a11ca12-b043-4f94-b663-b87271e51597.png",[242],817,416,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-7a11ca12-b043-4f94-b663-b87271e51597.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-7a11ca12-b043-4f94-b663-b87271e51597.png 817w",[217,6283,6285],{"start":6284},7,[220,6286,6287],{},"Donnez à chaque segment une petite rotation par défaut pour observer comment se comporte la cinématique directe. Lorsque vous pivotez l’objet de base (parent), les enfants suivent grâce à la chaîne de parenté.",[233,6289,6291],{"className":6290},[93,236],[238,6292],{"src":6293,"className":6294,"alt":243,"loading":244,"width":6279,"height":6280,"srcSet":6295,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-50da86d0-88ec-4673-a55b-227f9df93c0b.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-50da86d0-88ec-4673-a55b-227f9df93c0b.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-50da86d0-88ec-4673-a55b-227f9df93c0b.png 817w",[107,6297,6298,6299,6304],{},"Vous pouvez ensuite simplement faire pivoter le bras comme vous le souhaitez, créer des images-clés pour la position, et",[150,6300,751,6301],{"href":163},[695,6302,6303],{},"rendre le résultat final pour obtenir une animation"," !",[107,6306,6307],{},"Comme vous pouvez le constater, la FK est excellente pour les mouvements fluides en arc, comme faire un signe de la main, balancer une batte ou danser.",[107,6309,6310],{},"Pour des rigs plus avancés (IK, contrôles, contraintes), les animateurs Blender utilisent une Armature au lieu de la parenté d’objets.",[136,6312],{},[139,6314,6316],{"id":6315},"inverse-kinematics-ik-in-blender",[126,6317,6318],{},"La cinématique inverse (IK) dans Blender",[107,6320,6321],{},"L’IK ressemble davantage au contrôle de la main d’une marionnette : le bras détermine comment le coude et l’épaule doivent se plier pour vous suivre.",[217,6323,6324],{},[220,6325,6326,6329],{},[126,6327,6328],{},"Dupliquez le mesh de la main FK."," Sélectionnez votre bras FK en trois segments, dupliquez-le et déplacez-le sur le côté pour conserver la version FK en comparaison.",[233,6331,6333],{"className":6332},[93,236],[238,6334],{"src":6335,"className":6336,"alt":243,"loading":244,"width":6337,"height":6338,"srcSet":6339,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-59cd3241-e8e1-4b3b-b60a-8457c017a553.png",[242],1349,526,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-59cd3241-e8e1-4b3b-b60a-8457c017a553.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-59cd3241-e8e1-4b3b-b60a-8457c017a553.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-59cd3241-e8e1-4b3b-b60a-8457c017a553.png 1349w",[217,6341,6342],{"start":611},[220,6343,6344,6347,6348,6351],{},[126,6345,6346],{},"Fusionnez les segments en un seul objet."," Sélectionnez la nouvelle copie du bras et joignez chaque segment en un seul mesh (",[264,6349,6350],{},"Select all → Object → Join","). Vous avez maintenant un objet continu qui représente l’ensemble du bras.",[233,6353,6355],{"className":6354},[93,236],[238,6356],{"src":6357,"className":6358,"alt":243,"loading":244,"width":6337,"height":6338,"srcSet":6359,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-4f6843c9-ce25-4aa4-b391-3637d7543c4b.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-4f6843c9-ce25-4aa4-b391-3637d7543c4b.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-4f6843c9-ce25-4aa4-b391-3637d7543c4b.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-4f6843c9-ce25-4aa4-b391-3637d7543c4b.png 1349w",[217,6361,6362],{"start":1413},[220,6363,6364,6367,6368,6371,6372,6375],{},[126,6365,6366],{},"Créez une chaîne d’armature."," Ajoutez une Armature dans ",[264,6369,6370],{},"Add → Armature",". Dans l’ ",[126,6373,6374],{},"Edit Mode"," de l’Armature, extrudez des os pour qu’ils correspondent aux segments. Sélectionnez l’extrémité du premier os à extruder et placez-la au niveau du coude. Extrudez à nouveau pour la « main ».",[233,6377,6379],{"className":6378},[93,236],[238,6380],{"src":6381,"className":6382,"alt":243,"loading":244,"width":6337,"height":6338,"srcSet":6383,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-f18a080f-af0d-44c9-a948-01b17e8d4ad7.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-f18a080f-af0d-44c9-a948-01b17e8d4ad7.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-f18a080f-af0d-44c9-a948-01b17e8d4ad7.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-f18a080f-af0d-44c9-a948-01b17e8d4ad7.png 1349w",[217,6385,6386],{"start":6232},[220,6387,6388,6391,6392,6395,6396,6399,6400,6407,6408,6411],{},[126,6389,6390],{},"Ajoutez le contrôleur IK."," Passez en ",[126,6393,6394],{},"Pose Mode"," et sélectionnez l’os ",[130,6397,6398],{},"hand",". Appuyez sur ",[264,6401,6402,6403,6406],{},"Shift+I → ",[130,6404,6405],{},"Add Inverse Kinematics"," → Without Targets",". La chaîne IK fera désormais bouger le bras. Dans l’onglet Bone Constraints, définissez ",[130,6409,6410],{},"Chain Length"," = 3.",[233,6413,6415],{"className":6414},[93,236],[238,6416],{"src":6417,"className":6418,"alt":243,"loading":244,"width":6419,"height":6420,"srcSet":6421,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-9ffe89a0-6326-410d-9574-91798ce5dbc5.png",[242],1008,423,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-9ffe89a0-6326-410d-9574-91798ce5dbc5.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-9ffe89a0-6326-410d-9574-91798ce5dbc5.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-9ffe89a0-6326-410d-9574-91798ce5dbc5.png 1008w",[233,6423,6425],{"className":6424},[93,236],[238,6426],{"src":6427,"className":6428,"alt":243,"loading":244,"width":6419,"height":6420,"srcSet":6429,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-069281f6-1b06-4992-8a73-63b76c27f9eb.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-069281f6-1b06-4992-8a73-63b76c27f9eb.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-069281f6-1b06-4992-8a73-63b76c27f9eb.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-069281f6-1b06-4992-8a73-63b76c27f9eb.png 1008w",[217,6431,6432],{"start":4724},[220,6433,6434,6437,6438,6440,6441,6444],{},[126,6435,6436],{},"Liez le mesh à l’armature (skinning)."," En mode ",[264,6439,6219],{},", sélectionnez d’abord le mesh, puis Ctrl-sélectionnez l’armature. Faites un clic droit sur les objets et sélectionnez ",[264,6442,6443],{},"Parent → Armature Deform → With Automatic Weights",". Blender attribue des groupes de sommets à chaque os afin que le bras suive le rig.",[233,6446,6448],{"className":6447},[93,236],[238,6449],{"src":6450,"className":6451,"alt":243,"loading":244,"width":6452,"height":6453,"srcSet":6454,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-0c7343c3-1d1b-4ad3-b68a-804bdf1e1ba4.png",[242],992,531,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-0c7343c3-1d1b-4ad3-b68a-804bdf1e1ba4.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-0c7343c3-1d1b-4ad3-b68a-804bdf1e1ba4.png 992w",[217,6456,6457],{"start":6262},[220,6458,6459,6391,6462,6464],{},[126,6460,6461],{},"Animer avec l’IK.",[126,6463,6394],{},", attrapez l’os du contrôleur IK et déplacez-le : tout le bras suit naturellement !",[107,6466,6467],{},"Vous pouvez toujours utiliser la FK en déplaçant les os dans la chaîne parent.",[107,6469,6470],{},"Notez que le mesh se déforme par défaut de cette façon. Vous devrez ajouter des Bone Constraints pour obtenir le mouvement souhaité, par exemple en n’autorisant le bras à bouger que le long d’un seul axe afin d’imiter le comportement d’un bras mécanique.",[136,6472],{},[139,6474,6476],{"id":6475},"fkik-switch",[126,6477,6478],{},"Commutateur FK/IK",[107,6480,6481,6482,6485,6486,133],{},"La plupart des rigs dans Blender utilisent un ",[126,6483,6484],{},"système hybride"," : la FK pour les arcs fluides et l’IK pour le contact fixe. En général, un animateur",[150,6487,751,6489],{"href":6488},"https://blog.cg-wire.com/staging-animation-principle/",[695,6490,6491],{},"commence avec la FK pour la mise en place gestuelle, puis passe à l’IK pour les moments de contact ou le placement précis",[107,6493,6494],{},"Sur des rigs plus avancés, les animateurs Blender créent une propriété personnalisée (souvent un curseur ou une bascule dans le panneau N ou sur un os de contrôleur) pour passer de la FK à l’IK.",[107,6496,6497],{},"Cela sort du cadre de cet article, mais il est important de l’avoir en tête.",[136,6499],{},[139,6501,6502],{"id":1349},[126,6503,1352],{},[107,6505,6506],{},"La cinématique est la base du rigging et du skinning, et c’est ce qui fait la différence entre un mannequin 3D rigide et un personnage qui semble vivant.",[107,6508,6509],{},"La cinématique directe vous donne des arcs fluides et un enchaînement naturel, tandis que la cinématique inverse « attache » votre personnage au monde avec un contact crédible.",[107,6511,6512],{},"Mais ne faites pas que la lire : ouvrez Blender, prenez un modèle et commencez à jouer ! Un rig bien construit ne fait pas que relier les os : il définit la manière dont un personnage se déplace, se met en pose et interagit avec le monde 3D.",[90,6514,6516,6519],{"className":6515},[93,94,95],[90,6517,587],{"className":6518},[99],[90,6520,591,6522,598],{"className":6521},[104],[150,6523,597],{"href":594,"rel":6524},[596],[90,6526,6528],{"className":6527},[93,602,603],[150,6529,1405],{"href":594,"className":6530},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":6532},[6533,6534,6535,6536,6537,6538],{"id":6065,"depth":611,"text":6068},{"id":6118,"depth":611,"text":6121},{"id":6167,"depth":611,"text":6170},{"id":6315,"depth":611,"text":6318},{"id":6475,"depth":611,"text":6478},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1590285381943-9fbf39f4f75d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fDNEJTIwY2hhcmFjdGVyJTIwcmlnfGVufDB8fHx8MTc2MDkyMDExNnww&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":6541,"featured_at":625,"visibility":626},"2026-02-20T06:04:27.000+01:00","/blog-i18n/fr/forward-vs-inverse-kinematics-blender","2025-10-28T10:00:04.000+01:00",{"title":6032,"description":243},"forward-vs-inverse-kinematics-blender","blog-i18n/fr/forward-vs-inverse-kinematics-blender/index",[6548],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"kYxJtTo4b_-RhLsCx4spj8NGCNY96U3YseVsWiPQ8Dc",{"id":6551,"title":6552,"authors":6553,"body":6555,"description":243,"extension":621,"feature_image":7390,"html":7,"meta":7391,"navigation":12,"path":7393,"published_at":7394,"seo":7395,"slug":7396,"stem":7397,"tags":7398,"__hash__":7401,"updated_at":7392,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-scripting-animation/index.md","Blender Scripting pour des pipelines d’animation : introduction 2026",[6554],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":6556,"toc":7381},[6557,6568,6571,6574,6576,6582,6585,6588,6609,6611,6617,6620,6639,6664,6666,6672,6683,6692,6695,6701,6704,6715,6725,6728,6734,6737,6743,6746,6748,6754,6757,6766,6769,6772,6783,6797,6800,6806,6835,6838,6844,6862,6865,6871,6891,6900,6903,6912,6934,6937,6943,6947,6950,6973,6975,6981,6984,6990,6997,7004,7012,7018,7024,7031,7034,7040,7044,7051,7069,7072,7074,7080,7083,7089,7210,7213,7345,7347,7351,7354,7357,7360,7363,7375],[90,6558,6560,6564],{"className":6559},[93,94,95],[90,6561,6563],{"className":6562},[99],"⚙️",[90,6565,6567],{"className":6566},[104],"Vous pouvez plier Blender à votre volonté avec seulement quelques lignes de code. Des clics répétitifs ? Fini. Des scènes complexes ? Construites en quelques secondes. Des outils personnalisés ? À vous de les concevoir. C’est la magie du scripting.",[107,6569,6570],{},"L’interface utilisateur graphique de Blender est sans aucun doute impressionnante, mais il y a toujours certaines tâches qui donnent l’impression d’être une corvée : partager des aperçus avec l’équipe, ajuster d’innombrables paramètres dans un nouveau projet, ou refaire les mêmes étapes encore et encore. Parfois, on aimerait juste avoir un bouton qui fait le travail, et le scripting permet justement de l’obtenir !",[107,6572,6573],{},"Dans cet article, nous allons ouvrir les possibilités de la fonctionnalité de scripting de Blender grâce au langage de programmation Python. Vous apprendrez à écrire votre premier script, à l’exécuter, et à comprendre comment les modules de scripting de Blender sont organisés. À la fin, vous aurez une bonne compréhension de la façon de commencer à optimiser votre pipeline de production.",[136,6575],{},[139,6577,6579],{"id":6578},"what-can-i-do-with-scripting",[126,6580,6581],{},"Que puis-je faire avec le scripting ?",[107,6583,6584],{},"Le scripting dans Blender n’est pas seulement une astuce sympa pour les passionnés : c’est une nécessité pour des studios de toutes tailles.",[107,6586,6587],{},"En production, la vitesse et la cohérence sont tout. Les studios font constamment face à des délais serrés, à de grandes bibliothèques d’actifs, et au besoin de garder des dizaines de plans et de scènes parfaitement synchronisés sur plusieurs postes de travail. Le faire manuellement est lent, source d’erreurs et coûteux : c’est pourquoi l’automatisation est si importante !",[107,6589,6590,6591,6594,6595,6598,6599,6604,6605,6608],{},"Le scripting ne consiste pas à écrire du code, mais à vous donner des raccourcis créatifs et des superpouvoirs. Avec Python, vous pouvez automatiser les tâches ennuyeuses et répétitives qui grignotent votre temps, ou générer de la géométrie procédurale, des matériaux, et même des environnements entiers en quelques lignes. Vous pouvez ",[126,6592,6593],{},"concevoir vos propres outils et menus"," adaptés à votre workflow, et ",[126,6596,6597],{},"prendre un contrôle total sur les scènes",",",[150,6600,751,6601],{"href":163},[695,6602,6603],{},"les paramètres de rendu",", les caméras et les lumières. Le scripting vous permet même de ",[126,6606,6607],{},"connecter Blender à des outils externes ou à des APIs",", faisant de cette approche une partie puissante de pipelines plus larges.",[136,6610],{},[139,6612,6614],{"id":6613},"prerequisites",[126,6615,6616],{},"Prérequis",[107,6618,6619],{},"Avant de vous lancer, assurez-vous d’avoir :",[731,6621,6622,6633],{},[220,6623,6624,6626,6627,133],{},[126,6625,6],{}," - Téléchargez et installez la dernière version depuis",[150,6628,751,6630],{"href":6629},"https://www.blender.org/download/?ref=blog.cg-wire.com",[695,6631,6632],{},"blender.org",[220,6634,6635,6638],{},[126,6636,6637],{},"Python"," - Vous aurez besoin du langage de programmation Python pour utiliser les modules de scripting natifs de Blender et exécuter des programmes depuis le terminal de votre système d’exploitation.",[90,6640,6642,6645],{"className":6641},[93,94,5631],[90,6643,1142],{"className":6644},[99],[90,6646,6648,6652,6654,1157,6656,6658,1162,6660],{"className":6647},[104],[1147,6649,6650],{},[126,6651,1579],{"style":725},[1153,6653],{},[1153,6655],{},[1153,6657],{},[1153,6659],{},[150,6661,6663],{"href":6662},"https://github.com/cgwire/intro-blender-scripting?ref=blog.cg-wire.com","https://github.com/cgwire/intro-blender-scripting",[136,6665],{},[139,6667,6669],{"id":6668},"_1-create-a-new-script",[126,6670,6671],{},"1. Créer un nouveau script",[107,6673,6674,6675,6678,6679,6682],{},"Dans Blender, ouvrez l’",[126,6676,6677],{},"espace de travail Scripting",". Vous verrez un panneau d’éditeur de texte où vous pouvez créer un nouveau script en cliquant sur ",[126,6680,6681],{},"New",". C’est ici que vous pouvez écrire votre code Python, et c’est particulièrement utile pour voir les résultats en temps réel :",[233,6684,6686],{"className":6685},[93,236],[238,6687],{"src":6688,"className":6689,"alt":243,"loading":244,"width":712,"height":6690,"srcSet":6691,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-05bcd44b-e1a3-4f6a-a5c7-edb11e40b1fb.png",[242],731,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-05bcd44b-e1a3-4f6a-a5c7-edb11e40b1fb.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-05bcd44b-e1a3-4f6a-a5c7-edb11e40b1fb.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-05bcd44b-e1a3-4f6a-a5c7-edb11e40b1fb.png 1600w",[107,6693,6694],{},"Pour un pipeline de production, il est généralement plus utile d’exécuter un script depuis l’interface en ligne de commande. Heureusement, Python est désormais livré avec des modules Blender. Dans ce tutoriel, nous allons exécuter un programme Python directement depuis le terminal de l’OS pour éviter les étapes supplémentaires liées à la navigation dans l’interface graphique, donc la première étape consiste à installer le module Blender requis :",[1178,6696,6697],{},[264,6698,6700],{"className":6699},[1854],"pip install bpy==3.6.0 --extra-index-url \u003Chttps://download.blender.org/pypi/>",[107,6702,6703],{},"Pour tester, créons un nouveau fichier Blender vide en utilisant Python :",[1178,6705,6706,6709],{},[264,6707,1615],{"className":6708},[1183],[107,6710,6711],{},[264,6712,6714],{"className":6713},[1183],"bpy.ops.wm.save_as_mainfile(filepath=\"./new_empty_file.blend\")",[107,6716,6717,6718,6721,6722,6724],{},"Tout d’abord, nous importons le ",[126,6719,6720],{},"module d’API Python"," de Blender ",[264,6723,1471],{},", qui nous permet de contrôler presque tout dans Blender (objets, matériaux, rendu, etc.). Ensuite, nous sauvegardons l’espace de travail actuel dans un nouveau fichier.",[107,6726,6727],{},"Nous pouvons exécuter le programme dans le terminal comme ceci :",[1178,6729,6730],{},[264,6731,6733],{"className":6732},[1183],"python3 script.py",[107,6735,6736],{},"Nous pouvons aussi ouvrir le fichier nouvellement créé avec la CLI de Blender :",[1178,6738,6739],{},[264,6740,6742],{"className":6741},[1854],"blender new_empty_file.blend",[107,6744,6745],{},"Félicitations ! Vous avez terminé votre premier script. Passons maintenant à un exemple plus utile : générer du texte 3D.",[136,6747],{},[139,6749,6751],{"id":6750},"_2-hello-world-text-example",[126,6752,6753],{},"2. Exemple de texte « Hello World »",[107,6755,6756],{},"Imaginez que vous vouliez créer une animation d’introduction inspirée de Star Wars. Celle, justement, avec un texte qui défile lentement vers le haut en angle :",[233,6758,6760],{"className":6759},[93,236],[238,6761],{"src":6762,"className":6763,"alt":243,"loading":244,"width":712,"height":6764,"srcSet":6765,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-02ff3b4e-8e6f-4f1a-b6d0-e4fb9e0622eb.png",[242],681,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-02ff3b4e-8e6f-4f1a-b6d0-e4fb9e0622eb.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-02ff3b4e-8e6f-4f1a-b6d0-e4fb9e0622eb.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-02ff3b4e-8e6f-4f1a-b6d0-e4fb9e0622eb.png 1600w",[107,6767,6768],{},"Comment feriez-vous cela de manière efficace pour que ce soit facile à modifier ? En utilisant un script, bien sûr ! Alors essayons un exemple simple et générons du texte 3D.",[107,6770,6771],{},"Nous créons un nouveau fichier et supprimons tous les objets de la scène pour partir sur une base propre :",[1178,6773,6774,6777],{},[264,6775,1187],{"className":6776},[1183],[107,6778,6779],{},[264,6780,6782],{"className":6781},[1183],"bpy.ops.object.select_all(action='SELECT')\nbpy.ops.object.delete(use_global=False)",[731,6784,6785,6791],{},[220,6786,6787,6790],{},[264,6788,6789],{},"bpy.ops.object.select_all(action='SELECT')"," : Sélectionne tous les objets présents actuellement dans la scène.",[220,6792,6793,6796],{},[264,6794,6795],{},"bpy.ops.object.delete(use_global=False)"," : Supprime tous les objets sélectionnés.",[107,6798,6799],{},"Deux instructions suffisent pour ajouter un nouvel objet texte à la scène :",[1178,6801,6802],{},[264,6803,6805],{"className":6804},[1183],"bpy.ops.object.text_add(enter_editmode=False, location=(0, 0, 0))\ntext_obj = bpy.context.object",[731,6807,6808,6822],{},[220,6809,6810,6813,6814,6817,6818,6821],{},[264,6811,6812],{},"bpy.ops.object.text_add(...)"," : Ajoute un ",[126,6815,6816],{},"objet Texte"," à l’emplacement ",[264,6819,6820],{},"(0, 0, 0)"," dans le monde 3D (coordonnées XYZ).",[220,6823,6824,6827,6828,6831,6832,133],{},[264,6825,6826],{},"text_obj = bpy.context.object"," : Stocke une référence vers le nouvel objet texte créé dans la variable ",[264,6829,6830],{},"text_obj",". Chaque fois que vous ajoutez quelque chose de nouveau, Blender en fait l’objet actif, que vous pouvez récupérer via ",[264,6833,6834],{},"bpy.context.object",[107,6836,6837],{},"Changeons la chaîne de texte en « Hello World » :",[1178,6839,6840],{},[264,6841,6843],{"className":6842},[1183],"text_obj.data.body = \"Hello World\"",[731,6845,6846,6856],{},[220,6847,6848,6851,6852,6855],{},[264,6849,6850],{},"text_obj.data"," fait référence au ",[126,6853,6854],{},"Text DataBlock",", c’est-à-dire le contenu réel ou les paramètres de l’objet texte.",[220,6857,6858,6861],{},[264,6859,6860],{},".body = \"Hello World\""," définit la chaîne affichée sur « Hello World ».",[107,6863,6864],{},"Ensuite, nous pouvons ajuster quelques paramètres de texte pour lui donner un peu d’épaisseur et le centrer sur les axes x et y :",[1178,6866,6867],{},[264,6868,6870],{"className":6869},[1183],"text_obj.data.extrude = 0.05\ntext_obj.data.align_x = 'CENTER'\ntext_obj.data.align_y = 'CENTER'",[731,6872,6873,6879,6885],{},[220,6874,6875,6878],{},[264,6876,6877],{},"extrude = 0.05"," : Donne de la profondeur au texte, en le faisant passer d’un texte 2D plat à un texte 3D légèrement extrudé.",[220,6880,6881,6884],{},[264,6882,6883],{},"align_x = 'CENTER'"," : Centre horizontalement le texte.",[220,6886,6887,6890],{},[264,6888,6889],{},"align_y = 'CENTER'"," : Centre verticalement le texte.",[107,6892,6893,6894,133],{},"Vous pouvez trouver davantage d’options en lisant",[150,6895,751,6897],{"href":6896},"https://docs.blender.org/manual/en/latest/modeling/texts/properties.html?ref=blog.cg-wire.com",[695,6898,6899],{},"la documentation sur les propriétés de l’objet texte de Blender",[107,6901,6902],{},"Enfin, nous pouvons faire pivoter le texte pour qu’il soit orienté vers la caméra plutôt que posé à plat au sol, puisque par défaut le texte de Blender est posé à plat sur le plan XY :",[1178,6904,6905],{},[264,6906,6908,6909,6911],{"className":6907},[1183],"text_obj.rotation_euler",[1219,6910,1252],{}," = 1.5708   # 90 degrés en radians",[731,6913,6914,6925],{},[220,6915,6916,6921,6922,133],{},[264,6917,6918,6919],{},"rotation_euler",[1219,6920,1252],{}," : Fait référence à la ",[126,6923,6924],{},"rotation autour de l’axe X",[220,6926,6927,6930,6931,133],{},[264,6928,6929],{},"1.5708"," radians ≈ ",[126,6932,6933],{},"90 degrés",[107,6935,6936],{},"Nous pouvons sauvegarder le résultat en utilisant l’instruction mentionnée précédemment :",[1178,6938,6939],{},[264,6940,6942],{"className":6941},[1183],"bpy.ops.wm.save_as_mainfile(filepath=\"./text.blend\")",[107,6944,6945],{},[1153,6946],{},[107,6948,6949],{},"Pour résumer, voici à quoi ressemble notre code final :",[1178,6951,6952,6968],{},[264,6953,1187,6955,6957,6959,6961,6963],{"className":6954},[1183],[107,6956,6782],{},[107,6958,6805],{},[107,6960,6843],{},[107,6962,6870],{},[107,6964,6908,6965,6967],{},[1219,6966,1252],{}," = 1.5708",[107,6969,6970],{},[264,6971,6942],{"className":6972},[1183],[136,6974],{},[139,6976,6978],{"id":6977},"_3-how-to-run-a-script-script-loading",[126,6979,6980],{},"3. Comment exécuter un script (chargement du script)",[107,6982,6983],{},"Comme mentionné précédemment, la syntaxe pour exécuter un script en mode headless est simplement la même que pour n’importe quel programme Python :",[1178,6985,6986],{},[264,6987,6989],{"className":6988},[1183],"python3 text.py",[107,6991,6992,6993,6996],{},"Et c’est tout ! Vous venez d’exécuter votre premier script ",[130,6994,6995],{},"utile"," de Blender. Il est super pratique pour l’automatisation, les pipelines ou le traitement par lots.",[107,6998,6999,7000,7003],{},"Ouvrez simplement le fichier ",[264,7001,7002],{},"text.blend"," et regardez le résultat :",[233,7005,7007],{"className":7006},[93,236],[238,7008],{"src":7009,"className":7010,"alt":243,"loading":244,"width":712,"height":6690,"srcSet":7011,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-eab235c1-3513-4b9d-9f89-8a4d7c1cd122.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-eab235c1-3513-4b9d-9f89-8a4d7c1cd122.png 600w, https://blog.cg-wire.com/content/images/size/w1000/2025/10/data-src-image-eab235c1-3513-4b9d-9f89-8a4d7c1cd122.png 1000w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-eab235c1-3513-4b9d-9f89-8a4d7c1cd122.png 1600w",[107,7013,7014,7015,7017],{},"Vous pouvez aussi ouvrir un fichier ",[264,7016,373],{}," spécifique et exécuter le script dans ce contexte :",[1178,7019,7020],{},[264,7021,7023],{"className":7022},[1183],"bpy.ops.wm.open_mainfile(filepath='my_scene.blend')",[107,7025,7026,7027,7030],{},"Celui-ci charge d’abord ",[264,7028,7029],{},"my_scene.blend",", puis exécute le reste du script dessus.",[107,7032,7033],{},"Parfois, vous voulez envoyer des arguments personnalisés :",[1178,7035,7036],{},[264,7037,7039],{"className":7038},[1854],"python3 args.py – --text \"CLI Hello\"",[107,7041,7042],{},[1153,7043],{},[107,7045,7046,7047,7050],{},"Dans ",[264,7048,7049],{},"args.py",", vous pouvez accéder à ces arguments comme ceci :",[1178,7052,7053,7063],{},[264,7054,2181,7056],{"className":7055},[1183],[107,7057,7058,7059,7062],{},"argv = sys.argv\nargv = argv",[1219,7060,7061],{},"argv.index(\"--\") + 1:","  # récupérer les arguments après --",[107,7064,7065],{},[264,7066,7068],{"className":7067},[1183],"print(\"Custom args:\", argv)",[107,7070,7071],{},"C’est tout pour les bases, mais il vous reste encore beaucoup à découvrir.",[136,7073],{},[139,7075,7077],{"id":7076},"_4-scripting-modules-explained",[126,7078,7079],{},"4. Modules de scripting expliqués",[107,7081,7082],{},"Blender expose ses fonctionnalités de scripting via différents modules. Comprendre ce que fait chaque module vous aide à définir ce que vous pouvez écrire en script, et comment rechercher la documentation pour le coder.",[107,7084,7085,7086,7088],{},"Tout d’abord, les modules ",[264,7087,1471],{}," de base :",[731,7090,7091,7103,7118,7127,7140,7158,7170,7182,7198],{},[220,7092,7093,7099,7100,7102],{},[126,7094,7095,7098],{},[264,7096,7097],{},"bpy.context"," (Accès au contexte)"," - Fournit des informations sur l’état actuel de Blender (objet actif, scène, mode, objets sélectionnés, etc.), par exemple ",[264,7101,6834],{}," obtient l’objet actif.",[220,7104,7105,7111,7112,7117],{},[126,7106,7107,7110],{},[264,7108,7109],{},"bpy.data"," (Accès aux données)"," - Donne un accès direct aux datablocks de Blender tels que les maillages, objets, matériaux et caméras. Exemple : ",[264,7113,7114,7115],{},"bpy.data.objects",[1219,7116,2758],{}," récupère l’objet Cube.",[220,7119,7120,7126],{},[126,7121,7122,7125],{},[264,7123,7124],{},"bpy.msgbus"," (Message Bus)"," - Un système pub/sub pour écouter les changements dans les données de Blender et déclencher des rappels comme l’abonnement à des événements de changement de frame.",[220,7128,7129,7135,7136,7139],{},[126,7130,7131,7134],{},[264,7132,7133],{},"bpy.ops"," (Opérateurs)"," - Expose des fonctions qui imitent des actions de l’interface utilisateur comme l’ajout d’objets, la suppression ou le rendu. Exemple : ",[264,7137,7138],{},"bpy.ops.mesh.primitive_cube_add()"," ajoute un cube.",[220,7141,7142,7148,7149,3638,7151,3638,7154,7157],{},[126,7143,7144,7147],{},[264,7145,7146],{},"bpy.types"," (Types)"," - Définit les classes de base des données de Blender (par ex. ",[264,7150,6219],{},[264,7152,7153],{},"Mesh",[264,7155,7156],{},"Material",") pour l’extension et la personnalisation, afin de créer des panneaux ou des opérateurs personnalisés.",[220,7159,7160,7166,7167,133],{},[126,7161,7162,7165],{},[264,7163,7164],{},"bpy.utils"," (Utilitaires)"," - Fournit des fonctions d’aide pour l’enregistrement des classes, la gestion des add-ons et l’accès aux chemins système, par exemple ",[264,7168,7169],{},"bpy.utils.register_class(MyOperator)",[220,7171,7172,7178,7179,133],{},[126,7173,7174,7177],{},[264,7175,7176],{},"bpy.path"," (Utilitaires de chemin)"," - Outils pour gérer les chemins de fichiers, y compris la résolution des chemins relatifs et la création des chemins absolus, par exemple ",[264,7180,7181],{},"bpy.path.abspath(\"//textures/wood.png\")",[220,7183,7184,7190,7191,7194,7195,133],{},[126,7185,7186,7189],{},[264,7187,7188],{},"bpy.app"," (Données d’application)"," - Fournit des informations sur Blender lui-même comme la version, les détails de build et le mode d’exécution. Exemple : ",[264,7192,7193],{},"bpy.app.version"," renvoie ",[264,7196,7197],{},"(3, 6, 2)",[220,7199,7200,7206,7207,133],{},[126,7201,7202,7205],{},[264,7203,7204],{},"bpy.props"," (Définitions de propriétés)"," - Utilisé pour définir des propriétés personnalisées comme des nombres, des chaînes et des énumérations pour les opérateurs, panneaux ou add-ons, par exemple ",[264,7208,7209],{},"my_prop: bpy.props.IntProperty(name=\"My Number\")",[107,7211,7212],{},"Ensuite, vous pouvez trouver d’autres bibliothèques plus spécialisées :",[731,7214,7215,7224,7237,7246,7258,7267,7276,7285,7296,7305,7314,7323],{},[220,7216,7217,7223],{},[126,7218,7219,7222],{},[264,7220,7221],{},"aud"," (Système audio)"," - La bibliothèque audio de Blender pour jouer des sons, charger des fichiers et mixer l’audio. Exemple : jouer un fichier .wav directement dans Blender avec Python.",[220,7225,7226,7232,7233,7236],{},[126,7227,7228,7231],{},[264,7229,7230],{},"bgl"," (Wrapper OpenGL)"," - Un wrapper OpenGL de bas niveau pour le dessin de viewport 3D personnalisé (remplacé par ",[264,7234,7235],{},"gpu","). Pour dessiner par exemple des surcouches personnalisées.",[220,7238,7239,7245],{},[126,7240,7241,7244],{},[264,7242,7243],{},"bl_math"," (Fonctions mathématiques supplémentaires)"," - Des aides mathématiques supplémentaires pour l’interpolation, le calcul de distances et les opérations de géométrie, par exemple pour calculer des distances entre des points.",[220,7247,7248,7254,7255,133],{},[126,7249,7250,7253],{},[264,7251,7252],{},"blf"," (Dessin de polices)"," - Le module de dessin de polices de Blender pour rendre du texte dans les surcouches du viewport ou dans des panneaux, par exemple ",[264,7256,7257],{},"blf.draw(font_id, \"Hello World\")",[220,7259,7260,7266],{},[126,7261,7262,7265],{},[264,7263,7264],{},"bmesh"," (Module BMesh)"," - Fournit un accès direct de bas niveau au système d’édition de maillage de Blender pour la modélisation procédurale et les opérations de topologie. Exemple : créer ou modifier des sommets et des faces en mode édition.",[220,7268,7269,7275],{},[126,7270,7271,7274],{},[264,7272,7273],{},"bpy_extras"," (Utilitaires supplémentaires)"," - Contient des fonctions d’aide comme le support d’import/export, des conversions mathématiques et des utilitaires view3d, par exemple simplifier des conversions de coordonnées.",[220,7277,7278,7284],{},[126,7279,7280,7283],{},[264,7281,7282],{},"freestyle"," (Module Freestyle)"," - Contrôle le rendu de lignes Freestyle de Blender pour le rendu d’arêtes non photoréaliste. Exemple : ajuster des styles de ligne ou des règles de visibilité.",[220,7286,7287,7292,7293,7295],{},[126,7288,7289,7291],{},[264,7290,7235],{}," (Module GPU)"," - Une API moderne de rendu GPU qui permet des shaders personnalisés et des surcouches du viewport (successeur à ",[264,7294,7230],{},"). Exemple : rendu avec des shaders GLSL personnalisés.",[220,7297,7298,7304],{},[126,7299,7300,7303],{},[264,7301,7302],{},"gpu_extras"," (Utilitaires GPU)"," - Fonctions d’aide pour le dessin GPU, simplifiant le rendu de formes sans code GLSL complet, par exemple dessiner un rectangle simple.",[220,7306,7307,7313],{},[126,7308,7309,7312],{},[264,7310,7311],{},"idprop.types"," (Accès aux propriétés ID)"," - Fournit un accès structuré aux propriétés d’ID personnalisées de Blender sous forme de dictionnaire/tableau. Par exemple, pour manipuler des métadonnées personnalisées sur les objets.",[220,7315,7316,7322],{},[126,7317,7318,7321],{},[264,7319,7320],{},"imbuf"," (Tampon d’image)"," - Gère les tampons d’image, permettant le chargement, la sauvegarde et la manipulation au niveau des pixels, par exemple la génération d’images procédurales.",[220,7324,7325,7331,7332,3638,7335,3638,7338,7341,7342,133],{},[126,7326,7327,7330],{},[264,7328,7329],{},"mathutils"," (Types & utilitaires mathématiques)"," - La bibliothèque de mathématiques de Blender proposant ",[264,7333,7334],{},"Vector",[264,7336,7337],{},"Matrix",[264,7339,7340],{},"Quaternion"," et des utilitaires géométriques, par exemple ",[264,7343,7344],{},"Vector((1,0,0)).cross(Vector((0,1,0))) → (0,0,1)",[136,7346],{},[139,7348,7349],{"id":1349},[126,7350,1352],{},[107,7352,7353],{},"Le scripting de Blender avec Python est l’une des façons les plus puissantes d’étendre et de personnaliser votre workflow.",[107,7355,7356],{},"Dans cet article, nous avons exploré comment créer et exécuter des scripts, afficher votre tout premier « Hello World » dans le monde 3D, et utiliser le module bpy pour faire faire à Blender exactement ce que vous voulez.",[107,7358,7359],{},"Au premier abord, le scripting peut sembler intimidant, mais comme vous l’avez vu, même quelques lignes peuvent ouvrir la porte à des possibilités totalement nouvelles !",[107,7361,7362],{},"À présent, c’est à vous. Automatisez les tâches ennuyeuses ou créez des outils depuis zéro pour votre pipeline en studio. Vous pouvez le faire !",[90,7364,7366,7369],{"className":7365},[93,94,95],[90,7367,587],{"className":7368},[99],[90,7370,591,7372,598],{"className":7371},[104],[150,7373,1398],{"href":594,"rel":7374},[596],[90,7376,7378],{"className":7377},[93,602,603],[150,7379,609],{"href":594,"className":7380},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":7382},[7383,7384,7385,7386,7387,7388,7389],{"id":6578,"depth":611,"text":6581},{"id":6613,"depth":611,"text":6616},{"id":6668,"depth":611,"text":6671},{"id":6750,"depth":611,"text":6753},{"id":6977,"depth":611,"text":6980},{"id":7076,"depth":611,"text":7079},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1760548425425-e42e77fa38f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fCUyMHNjcmlwdGluZ3xlbnwwfHx8fDE3NjA2MTMxODl8MA&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":7392,"featured_at":625,"visibility":626},"2026-02-20T06:04:03.000+01:00","/blog-i18n/fr/blender-scripting-animation","2025-10-21T10:00:42.000+02:00",{"title":6552,"description":243},"blender-scripting-animation","blog-i18n/fr/blender-scripting-animation/index",[7399,7400],{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"y3yvfJsMl_Gmjzulb7LSHo_fbZLX9kKrTN6c8E2oLCg",{"id":7403,"title":7404,"authors":7405,"body":7407,"description":243,"extension":621,"feature_image":7956,"html":7,"meta":7957,"navigation":12,"path":7959,"published_at":7960,"seo":7961,"slug":7962,"stem":7963,"tags":7964,"__hash__":7967,"updated_at":7958,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/dcc-integration-blender-kitsu/index.md","De Blender à Kitsu : comment créer une passerelle DCC personnalisée (2026)",[7406],{"id":82,"name":83,"slug":84,"profile_image":7,"cover_image":7,"bio":7,"website":7,"location":7,"facebook":7,"twitter":7,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":85},{"type":87,"value":7408,"toc":7947},[7409,7419,7431,7434,7437,7440,7442,7448,7455,7464,7479,7481,7487,7490,7496,7503,7510,7513,7516,7518,7524,7549,7552,7555,7561,7564,7571,7585,7588,7591,7599,7608,7618,7623,7631,7636,7646,7649,7655,7658,7683,7694,7696,7702,7705,7708,7728,7763,7766,7774,7777,7783,7793,7795,7801,7804,7807,7827,7830,7833,7842,7845,7851,7854,7864,7866,7872,7875,7898,7908,7910,7914,7917,7920,7929,7941],[90,7410,7412,7415],{"className":7411},[93,94,95],[90,7413,6563],{"className":7414},[99],[90,7416,7418],{"className":7417},[104],"Avez-vous déjà souhaité que vos outils créatifs puissent communiquer avec votre outil de suivi de production ? Avec une intégration DCC sur mesure, c’est enfin possible — fini les téléversements manuels, les versions qui ne correspondent pas, ou la perte de temps entre Blender et Kitsu.",[107,7420,7421,7422,3638,7424,1747,7427,7430],{},"Les artistes s’appuient sur des outils de création de contenu numérique (DCC) comme ",[126,7423,6],{},[126,7425,7426],{},"Maya",[126,7428,7429],{},"Houdini"," pour donner vie aux histoires.",[107,7432,7433],{},"Mais si le travail créatif se fait dans ces outils, le suivi de production se fait ailleurs. Cette déconnexion peut entraîner des décalages de versions, du temps perdu dans des téléversements manuels répétitifs, et au final moins de temps consacré à la création. Sans connexion fluide entre le logiciel DCC et votre outil de suivi, votre pipeline en pâtit.",[107,7435,7436],{},"C’est là que les intégrations sur mesure entrent en jeu.",[107,7438,7439],{},"Dans cet article, nous passons en revue les bases de la création d’une intégration Blender dans Kitsu, similaire à Kitsu Publisher, pour publier des aperçus de modèles 3D depuis Blender vers Kitsu.",[136,7441],{},[139,7443,7445],{"id":7444},"what%E2%80%99s-a-dcc-integration",[126,7446,7447],{},"Qu’est-ce qu’une intégration DCC ?",[107,7449,7450,7451,7454],{},"Une intégration DCC est ",[126,7452,7453],{},"un pont entre un logiciel de création et un autre outil",", comme un outil de suivi de production.",[107,7456,7457,7458,133],{},"Par exemple, au lieu d’exporter des fichiers, d’ouvrir un navigateur web et de téléverser manuellement des versions, une intégration pourrait",[150,7459,751,7461],{"href":7460},"https://blog.cg-wire.com/working-with-multiple-digital-content-creation-tools/",[695,7462,7463],{},"permettre aux artistes de publier directement depuis l’outil de leur choix",[107,7465,7466,7467,6598,7473,7478],{},"Les intégrations peuvent gérer des tâches telles que",[150,7468,751,7470],{"href":7469},"https://blog.cg-wire.com/rendering-explained/",[695,7471,7472],{},"la gestion de pipelines de rendu complexes",[150,7474,751,7475],{"href":550},[695,7476,7477],{},"la gestion du stockage des assets et du versionnage",", ou encore générer des images d’aperçu : elles automatisent les parties ennuyeuses de la production pour que les artistes puissent se concentrer sur la narration.",[136,7480],{},[139,7482,7484],{"id":7483},"why-dcc-integration",[126,7485,7486],{},"Pourquoi une intégration DCC ?",[107,7488,7489],{},"À terme, chaque studio rencontre le même goulot d’étranglement : à mesure que les projets grossissent, les processus manuels se dégradent.",[107,7491,7492,7495],{},[126,7493,7494],{},"Les intégrations font gagner du temps"," en supprimant les changements de contexte entre logiciels.",[107,7497,7498,7499,7502],{},"Elles ",[126,7500,7501],{},"réduisent aussi les erreurs en standardisant les tâches répétitives"," comme la livraison de résultats en imposant des conventions de nommage, des formats et une cohérence des métadonnées.",[107,7504,7505,7506,7509],{},"Enfin, mais pas des moindres, elles ",[126,7507,7508],{},"améliorent la gestion de projet et la communication"," en fournissant des mises à jour en temps réel aux superviseurs et aux producteurs.",[107,7511,7512],{},"Tous les studios d’animation professionnels s’appuient sur un pipeline, et les intégrations DCC sont essentielles.",[107,7514,7515],{},"Pour vous donner un exemple concret, essayons de créer une intégration sous forme de script qui téléverse un aperçu depuis Blender vers Kitsu afin de faciliter la revue du travail avec votre équipe.",[136,7517],{},[139,7519,7521],{"id":7520},"_1-getting-started",[126,7522,7523],{},"1. Bien démarrer",[90,7525,7527,7530],{"className":7526},[93,94,5631],[90,7528,1142],{"className":7529},[99],[90,7531,7533,7537,7539,5646,7541,7543,1162,7545],{"className":7532},[104],[1147,7534,7535],{},[126,7536,2040],{"style":725},[1153,7538],{},[1153,7540],{},[1153,7542],{},[1153,7544],{},[150,7546,7548],{"href":7547},"https://github.com/cgwire/blender-kitsu-dcc-integration-example?ref=blog.cg-wire.com","github.com/cgwire/blender-kitsu-dcc-integration-example",[107,7550,7551],{},"Avant de nous lancer dans la programmation, configurons d’abord une instance locale de Kitsu afin de pouvoir tester notre intégration en toute sécurité.",[107,7553,7554],{},"Le moyen le plus simple de lancer Kitsu en local consiste à utiliser le dépôt kitsu-docker. Clonez le dépôt sur votre machine et suivez les instructions :",[1178,7556,7557],{},[264,7558,7560],{"className":7559},[1854],"git clone \u003Chttps://github.com/cgwire/kitsu-docker.git>\ncd kitsu-docker\ndocker build -t cgwire/cgwire .\ndocker run --init -ti --rm -p 80:80 -p 1080:1080 --name cgwire cgwire/cgwire",[107,7562,7563],{},"Cela démarre tous les services nécessaires : Kitsu, la base de données postgres et les composants de support.",[107,7565,7566,7567,7570],{},"Une fois les conteneurs lancés, ouvrez ",[264,7568,7569],{},"http://localhost:80"," dans votre navigateur. Utilisez les identifiants par défaut :",[731,7572,7573,7579],{},[220,7574,7575,7578],{},[126,7576,7577],{},"Email"," : admin@example.com",[220,7580,7581,7584],{},[126,7582,7583],{},"Mot de passe :"," mysecretpassword",[107,7586,7587],{},"Vous serez redirigé vers le tableau de bord Kitsu.",[107,7589,7590],{},"Avant de pouvoir téléverser des aperçus, il nous faut une cible pour les téléverser. Dans Kitsu :",[217,7592,7593],{},[220,7594,7595,7596,7598],{},"Créez une nouvelle production (par exemple, Blender Test Project) en allant sur la page \"",[126,7597,2083],{},"\" dans la barre latérale.",[233,7600,7602],{"className":7601},[93,236],[238,7603],{"src":7604,"className":7605,"alt":243,"loading":244,"width":7606,"height":7607},"https://blog.cg-wire.com/content/images/2025/10/CleanShot-2025-10-13-at-9---.26.46-1.png",[242],206,479,[233,7609,7611],{"className":7610},[93,236],[238,7612],{"src":7613,"className":7614,"alt":243,"loading":244,"width":7615,"height":7616,"srcSet":7617,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-0e43401b-afb6-4345-b773-db3d9b03bed3.png",[242],946,914,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-0e43401b-afb6-4345-b773-db3d9b03bed3.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-0e43401b-afb6-4345-b773-db3d9b03bed3.png 946w",[217,7619,7620],{"start":611},[220,7621,7622],{},"Dans la production, créez un asset.",[233,7624,7626],{"className":7625},[93,236],[238,7627],{"src":7628,"className":7629,"alt":243,"loading":244,"width":7615,"height":7616,"srcSet":7630,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-83cce3b0-70a0-486d-87e7-4914a5304262.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-83cce3b0-70a0-486d-87e7-4914a5304262.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-83cce3b0-70a0-486d-87e7-4914a5304262.png 946w",[217,7632,7633],{"start":1413},[220,7634,7635],{},"La création d’un asset ajoute automatiquement de nouvelles tâches pour toutes les catégories de tâches sélectionnées lors de la création de la production. Nous pouvons les utiliser pour téléverser les aperçus.",[107,7637,7638,7639,7645],{},"Pour interagir avec Kitsu par programme,",[150,7640,751,7642],{"href":7641},"https://github.com/cgwire/gazu?ref=blog.cg-wire.com",[695,7643,7644],{},"nous utilisons gazu, le client Python officiel pour l’API Kitsu",". Il nous permet de nous authentifier, de créer des entités et de téléverser des aperçus directement depuis des scripts.",[107,7647,7648],{},"Installez-le avec :",[1178,7650,7651],{},[264,7652,7654],{"className":7653},[1854],"pip install gazu",[107,7656,7657],{},"Ensuite, authentifiez-vous auprès de votre instance Kitsu avec votre nom d’utilisateur et votre mot de passe :",[1178,7659,7660,7674],{},[264,7661,3438,7663,7669],{"className":7662},[1183],[107,7664,2221,7665,7668],{},[150,7666,2224],{"href":2224,"rel":7667},[2226],">\")",[107,7670,7671,7672,2232],{},"user = gazu.log_in(\"",[150,7673,2231],{"href":2230},[107,7675,7676],{},[264,7677,7679,7680,1283],{"className":7678},[1183],"print(\"Logged in as:\", user['user']",[1219,7681,7682],{},"'full_name'",[107,7684,7685,7687,7688,133],{},[1153,7686],{},"Une fois connecté, nous pouvons",[150,7689,751,7691],{"href":7690},"https://gazu.cg-wire.com/?ref=blog.cg-wire.com",[695,7692,7693],{},"utiliser gazu pour récupérer les productions, les assets et les tâches, puis y attacher des fichiers médias",[136,7695],{},[139,7697,7699],{"id":7698},"_2-creating-a-preview-from-blender",[126,7700,7701],{},"2. Créer un aperçu depuis Blender",[107,7703,7704],{},"Produire un rendu d’aperçu est un cas d’usage courant pour les animateurs. Vous devez obtenir des retours réguliers tout au long de la phase de production, et un aperçu est plus facile à évaluer que d’importer l’intégralité d’un projet.",[107,7706,7707],{},"Vous pouvez l’automatiser via l’API Python de Blender en configurant une capture de viewport pour rendre une seule image, en sauvegardant le résultat dans un dossier temporaire, puis en appliquant les réglages de rendu à l’échelle du studio (résolution, format, watermark) :",[1178,7709,7710,7722],{},[264,7711,1187,7713,7716,7719],{"className":7712},[1183],[107,7714,7715],{},"bpy.ops.wm.open_mainfile(filepath=\"./project.blend\")",[107,7717,7718],{},"bpy.context.scene.render.resolution_x = 256\nbpy.context.scene.render.resolution_y = 256\nbpy.context.scene.render.resolution_percentage = 100",[107,7720,7721],{},"bpy.context.scene.render.image_settings.file_format = 'PNG'\nbpy.context.scene.render.filepath = \"./preview.png\"",[107,7723,7724],{},[264,7725,7727],{"className":7726},[1183],"bpy.ops.render.render(write_still=True)",[731,7729,7730,7735,7744,7753],{},[220,7731,7732,7734],{},[264,7733,1187],{}," : Importer l’API Python de Blender",[220,7736,1147,7737,7740,7741],{},[264,7738,7739],{},"py.ops.wm.open_mainfile(filepath=\"./project.blend\")"," : Ouvre un fichier de projet Blender existant nommé ",[264,7742,7743],{},"project.blend",[220,7745,7746,7752],{},[264,7747,7748,7749],{},"bpy.context.scene.render.resolution_x = 256 ",[1219,7750,7751],{},"...","Nous configurons la résolution de rendu à 256 pixels par 256 pixels, sans réduction (downscale).",[220,7754,7755,7758,7759,7762],{},[264,7756,7757],{},"bpy.context.scene.render.image_settings.file_format = 'PNG'"," : Définir le format de sortie sur PNG et préciser le chemin de sortie pour  ",[264,7760,7761],{},"preview.png"," avant d’exécuter un rendu fixe (still) de la scène.",[107,7764,7765],{},"Ce script vous fournit un fichier d’aperçu léger, facile à stocker dans Kitsu et rapide à faire relire par les superviseurs.",[233,7767,7769],{"className":7768},[93,236],[238,7770],{"src":7771,"className":7772,"alt":243,"loading":244,"width":7615,"height":7616,"srcSet":7773,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-e936efc9-2c3b-43ea-86f7-8845bdc6c50f.png",[242],"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-e936efc9-2c3b-43ea-86f7-8845bdc6c50f.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-e936efc9-2c3b-43ea-86f7-8845bdc6c50f.png 946w",[107,7775,7776],{},"Pour l’exécuter, installez simplement le package bpy et lancez le programme comme pour n’importe quel autre script Python :",[1178,7778,7779],{},[264,7780,7782],{"className":7781},[1854],"python3 preview.py",[233,7784,7786],{"className":7785},[93,236],[238,7787],{"src":7788,"className":7789,"alt":243,"loading":244,"width":7790,"height":7791,"srcSet":7792},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-8fc4a1a4-01c7-4fcb-a8a6-b5d50588d6b8.png",[242],687,768,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-8fc4a1a4-01c7-4fcb-a8a6-b5d50588d6b8.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-8fc4a1a4-01c7-4fcb-a8a6-b5d50588d6b8.png 687w",[136,7794],{},[139,7796,7798],{"id":7797},"_3-uploading-a-preview-to-kitsu",[126,7799,7800],{},"3. Téléverser un aperçu vers Kitsu",[107,7802,7803],{},"Une fois le fichier d’aperçu prêt, la dernière étape consiste à pousser les données dans Kitsu avec gazu.",[107,7805,7806],{},"D’abord, nous récupérons la tâche que nous avons créée précédemment :",[1178,7808,7809,7818],{},[264,7810,7812,7813],{"className":7811},[1183],"projects = gazu.project.all_projects()",[107,7814,7815,7816,1283],{},"assets = gazu.asset.all_assets_for_project(projects",[1219,7817,1252],{},[107,7819,7820],{},[264,7821,7823,7824,7826],{"className":7822},[1183],"tasks = gazu.task.all_tasks_for_asset(assets",[1219,7825,1252],{},")\ntask_status = gazu.task.get_task_status_by_short_name(\"todo\")",[107,7828,7829],{},"Pour ce faire, on récupère d’abord une liste de toutes les productions disponibles, puis les assets de notre nouvelle production créée, et enfin les tâches assignées à cet asset.",[107,7831,7832],{},"Nous publions un commentaire pour la tâche tout en liant le fichier d’aperçu :",[1178,7834,7835],{},[264,7836,7838,7839,7841],{"className":7837},[1183],"(comment, preview_file) = gazu.task.publish_preview(\n tasks",[1219,7840,1252],{},",\n task_status,\n    comment=\"upload preview\",\n    preview_file_path=\"./preview.png\"\n)",[107,7843,7844],{},"Puis on exécute le script :",[1178,7846,7847],{},[264,7848,7850],{"className":7849},[1854],"python3 upload.py",[107,7852,7853],{},"Une fois téléversé, le fichier devient instantanément disponible dans l’interface web de Kitsu. Les superviseurs peuvent le consulter, laisser des retours et mettre à jour les statuts—sans aucun jonglage manuel de fichiers de la part de l’artiste.",[233,7855,7857],{"className":7856},[93,236],[238,7858],{"src":7859,"className":7860,"alt":243,"loading":244,"width":7861,"height":7862,"srcSet":7863,"sizes":248},"https://blog.cg-wire.com/content/images/2025/10/data-src-image-e9710dd1-d727-4e9f-85f8-9db075a159f4.png",[242],955,931,"https://blog.cg-wire.com/content/images/size/w600/2025/10/data-src-image-e9710dd1-d727-4e9f-85f8-9db075a159f4.png 600w, https://blog.cg-wire.com/content/images/2025/10/data-src-image-e9710dd1-d727-4e9f-85f8-9db075a159f4.png 955w",[136,7865],{},[139,7867,7869],{"id":7868},"_4-distribution",[126,7870,7871],{},"4. Distribution",[107,7873,7874],{},"Une fois que votre script fonctionne, vous avez plusieurs options pour l’utiliser ou le partager :",[731,7876,7877,7886,7892],{},[220,7878,7879,7882,7883,7885],{},[126,7880,7881],{},"Le lancer directement dans Blender"," - Ouvrez l’espace ",[130,7884,1172],{}," et exécutez le script depuis là.",[220,7887,7888,7891],{},[126,7889,7890],{},"Lancer depuis la ligne de commande"," - Comme tout à l’heure, vous pouvez exécuter votre script depuis le terminal comme pour n’importe quel programme Python.",[220,7893,7894,7897],{},[126,7895,7896],{},"Le conditionner sous forme d’add-on"," - Cela vous permet de l’activer depuis les préférences de Blender et même de concevoir une interface utilisateur personnalisée pour un accès plus facile.",[107,7899,7900,7901,7907],{},"Créer un add-on complet avec sa propre interface est indispensable pour partager des intégrations avec les artistes, mais c’est un sujet beaucoup plus vaste que nous n’aborderons pas ici. Si vous souhaitez aller plus loin, consultez le",[150,7902,751,7904],{"href":7903},"https://docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html?ref=blog.cg-wire.com",[695,7905,7906],{},"tutoriel officiel Blender pour les add-ons",". Et restez à l’écoute : nous aborderons ce sujet plus en détail dans un prochain article !",[136,7909],{},[139,7911,7912],{"id":1349},[126,7913,1352],{},[107,7915,7916],{},"Les intégrations de pipeline DCC sont fondamentales pour des studios d’animation efficaces : en reliant des outils comme Blender directement à Kitsu, vous réduisez les frictions, améliorez la communication et facilitez la vie à la fois des artistes et des responsables de production.",[107,7918,7919],{},"Vous n’avez pas besoin d’une énorme équipe pipeline pour profiter des avantages des intégrations. Même un petit studio peut commencer simplement, automatiser quelques points pénibles, puis monter en puissance au fil du temps, selon les besoins.",[107,7921,7922,7928],{},[150,7923,7925],{"href":7924},"https://github.com/cgwire/kitsu-publisher-next?ref=blog.cg-wire.com#readme",[695,7926,7927],{},"Consultez la documentation de Kitsu Publisher"," pour une solution d’intégration DCC prête pour la production, avec Blender, Toon Boom Harmony et Unreal Engine !",[90,7930,7932,7935],{"className":7931},[93,94,95],[90,7933,587],{"className":7934},[99],[90,7936,591,7938,3956],{"className":7937},[104],[150,7939,1398],{"href":594,"rel":7940},[596],[90,7942,7944],{"className":7943},[93,602,603],[150,7945,1405],{"href":594,"className":7946},[607,608],{"title":243,"searchDepth":611,"depth":611,"links":7948},[7949,7950,7951,7952,7953,7954,7955],{"id":7444,"depth":611,"text":7447},{"id":7483,"depth":611,"text":7486},{"id":7520,"depth":611,"text":7523},{"id":7698,"depth":611,"text":7701},{"id":7797,"depth":611,"text":7800},{"id":7868,"depth":611,"text":7871},{"id":1349,"depth":611,"text":1352},"https://images.unsplash.com/photo-1580894894513-541e068a3e2b?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fFNvZnR3YXJlJTIwaW50ZWdyYXRpb258ZW58MHx8fHwxNzYwMzE0NjM1fDA&ixlib=rb-4.1.0&q=80&w=2000",{"updated_at":7958,"featured_at":625,"visibility":626},"2026-02-20T06:04:22.000+01:00","/blog-i18n/fr/dcc-integration-blender-kitsu","2025-10-14T11:23:34.000+02:00",{"title":7404,"description":243},"dcc-integration-blender-kitsu","blog-i18n/fr/dcc-integration-blender-kitsu/index",[7965,7966],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},{"id":634,"name":635,"slug":52,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":636},"EnPFDMSVM0b4QHXc2LzyjjRAy3lVqBGMCW9-nH8o2Ic",{"id":7969,"title":7970,"authors":7971,"body":7981,"description":243,"extension":621,"feature_image":8356,"html":7,"meta":8357,"navigation":12,"path":8359,"published_at":8360,"seo":8361,"slug":8362,"stem":8363,"tags":8364,"__hash__":8371,"updated_at":8358,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/blender-vs-maya/index.md","Blender vs Maya En 2026 : Quel Outil 3D Est Fait Pour Vous ?",[7972],{"id":7973,"name":7974,"slug":7975,"profile_image":7976,"cover_image":7,"bio":7977,"website":7,"location":7978,"facebook":7,"twitter":7979,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":7980},"5fe9b27094f20f00398a1673","Gwénaëlle Dupré","gwen","https://blog.cg-wire.com/content/images/2020/12/profile_pics.png","Product Manager at CGWire","Paris, France","@gelnior","https://blog.cg-wire.com/author/gwen/",{"type":87,"value":7982,"toc":8335},[7983,8002,8005,8008,8016,8018,8024,8027,8077,8080,8082,8087,8090,8095,8098,8103,8106,8112,8126,8132,8140,8142,8146,8149,8152,8157,8160,8165,8168,8173,8184,8189,8197,8199,8204,8207,8210,8213,8215,8221,8224,8227,8229,8234,8237,8240,8249,8251,8256,8265,8268,8270,8275,8278,8281,8289,8292,8295,8297,8301,8304,8307,8310,8313,8316,8328],[90,7984,7986,7990],{"className":7985},[93,94,95],[90,7987,7989],{"className":7988},[99],"💻",[90,7991,7993,1747,7997,8001],{"className":7992},[104],[1147,7994,7995],{},[126,7996,6],{"style":725},[1147,7998,7999],{},[126,8000,7426],{"style":725}," ? Le débat continue en 2025 — décryptons les différences !",[107,8003,8004],{},"Il existe une multitude d’outils de création de contenu numérique, dont certains peuvent déclencher des débats sans fin entre artistes 3D.",[107,8006,8007],{},"Peut-être venez-vous juste de commencer à étudier l’animation et vous vous demandez quel outil choisir. Ou vous avez un nouveau projet à gérer et vous hésitez entre engager des animateurs sur Maya ou sur Blender.",[107,8009,8010,8011,3642,8013,8015],{},"Dans cet article, nous allons faire un tour d’horizon convivial des fonctionnalités de ",[126,8012,6],{},[126,8014,7426],{}," afin d’identifier ce qui les distingue, leurs points forts et leurs limites, et les projets auxquels ils conviennent le mieux.",[136,8017],{},[139,8019,8021],{"id":8020},"comparison-criteria",[126,8022,8023],{},"Critères de comparaison",[107,8025,8026],{},"En comparant Maya et Blender, nous allons nous concentrer sur quelques critères clés pour rendre la comparaison aussi objective que possible :",[731,8028,8029,8035,8041,8047,8053,8059,8065,8071],{},[220,8030,8031,8034],{},[126,8032,8033],{},"Public cible"," - à qui l’outil est-il destiné ?",[220,8036,8037,8040],{},[126,8038,8039],{},"Tarifs"," - quel est le modèle économique ?",[220,8042,8043,8046],{},[126,8044,8045],{},"Avantages & inconvénients"," - quels sont les atouts et les désagréments majeurs de chaque outil ?",[220,8048,8049,8052],{},[126,8050,8051],{},"Courbe d’apprentissage"," - à quel point est-il facile de démarrer ?",[220,8054,8055,8058],{},[126,8056,8057],{},"Soutien de la communauté"," - à quel point les utilisateurs sont-ils actifs ?",[220,8060,8061,8064],{},[126,8062,8063],{},"Modélisation"," - est-ce performant pour les tâches courantes de modélisation 3D ?",[220,8066,8067,8070],{},[126,8068,8069],{},"Animation & rigging"," - qu’en est-il du processus d’animation des modèles 3D ?",[220,8072,8073,8076],{},[126,8074,8075],{},"Rendu"," - comment transformer mes animations en vidéos ?",[107,8078,8079],{},"Avant de plonger dedans, je veux souligner un point : aucun des deux n’est “meilleur” — tout dépend de vos besoins et de vos cas d’usage ! Ceci dit, commençons par Maya.",[136,8081],{},[139,8083,8085],{"id":8084},"maya",[126,8086,7426],{},[107,8088,8089],{},"Autodesk Maya est considéré comme la référence dans l’industrie pour l’animation 3D, et il est utilisé par de grands studios dans le monde entier, comme Walt Disney Animation Studios.",[829,8091,8093],{"id":8092},"target-audience",[126,8094,8033],{},[107,8096,8097],{},"La boîte à outils de Maya est conçue pour les professionnels travaillant dans les secteurs du cinéma, de la télévision et du jeu vidéo, en particulier ceux impliqués dans des pipelines de production complexes.",[829,8099,8101],{"id":8100},"pricing",[126,8102,8039],{},[107,8104,8105],{},"Maya est assez coûteux : 1 945 $ par an (245 $ par mois). Les frais d’abonnement peuvent constituer un frein pour les artistes indépendants et les petites structures. Mais Autodesk propose des licences étudiantes gratuites ainsi que des licences “indie” à tarif réduit à seulement 320 $ par an, si vous êtes éligible.",[829,8107,8109],{"id":8108},"pros",[126,8110,8111],{},"Avantages",[731,8113,8114,8117,8120,8123],{},[220,8115,8116],{},"Utilisé par de nombreux grands studios du secteur",[220,8118,8119],{},"Super interface pour l’animation et le rigging",[220,8121,8122],{},"Fonctionne dès la sortie de la boîte tout en étant entièrement personnalisable",[220,8124,8125],{},"Plugins propriétaires conformes aux standards de l’industrie",[829,8127,8129],{"id":8128},"cons",[126,8130,8131],{},"Inconvénients",[731,8133,8134,8137],{},[220,8135,8136],{},"Coût",[220,8138,8139],{},"Peu de ressources communautaires",[136,8141],{},[139,8143,8144],{"id":10},[126,8145,6],{},[107,8147,8148],{},"Blender est un outil gratuit et open source de création de contenu 3D qui gagne progressivement du terrain dans divers secteurs créatifs. Il prend en charge l’ensemble du pipeline 3D, de la modélisation au rigging, en passant par l’animation et le rendu.",[107,8150,8151],{},"Blender a été utilisé dans plusieurs productions acclamées, comme le film de 2023 “Spider-Man: Across the Spider-Verse”, et a joué un rôle déterminant dans la fonctionnalité Grease Pencil pour des courts métrages et des animations.",[829,8153,8155],{"id":8154},"target-audience-1",[126,8156,8033],{},[107,8158,8159],{},"Blender est conçu pour être accessible à tout le monde, des amateurs aux professionnels. Les studios plus petits apprécient son entrée sans coût et l’évolution continue de ses fonctionnalités. Il séduit particulièrement les freelances et les startups qui recherchent des outils puissants, mais “bidouillables”, sans contrainte financière.",[829,8161,8163],{"id":8162},"pricing-1",[126,8164,8039],{},[107,8166,8167],{},"Le plus gros avantage de Blender, c’est son prix — gratuit — et sa communauté très active, qui favorise l’innovation et l’entraide. En revanche, il peut s’intégrer moins naturellement dans des pipelines de production plus vastes que Maya, ce qui peut constituer un inconvénient pour certains studios.",[829,8169,8171],{"id":8170},"pros-1",[126,8172,8111],{},[731,8174,8175,8178,8181],{},[220,8176,8177],{},"Open source",[220,8179,8180],{},"Grande communauté",[220,8182,8183],{},"Super interface de modélisation",[829,8185,8187],{"id":8186},"cons-1",[126,8188,8131],{},[731,8190,8191,8194],{},[220,8192,8193],{},"Moins populaire dans les productions à grande échelle",[220,8195,8196],{},"Besoin de plugins pour améliorer votre workflow d’animation",[136,8198],{},[139,8200,8202],{"id":8201},"learning-curve",[126,8203,8051],{},[107,8205,8206],{},"Les deux logiciels ont une courbe d’apprentissage exigeante, mais Maya est souvent considéré comme plus difficile à maîtriser en raison de sa complexité.",[107,8208,8209],{},"Blender, en tant que logiciel open source, a la réputation d’être moins intimidant au démarrage, surtout pour les débutants.",[107,8211,8212],{},"De nombreux tutoriels et cours existent pour les deux, mais Blender a l’avantage grâce à son caractère open source et à sa grande communauté.",[136,8214],{},[139,8216,8218],{"id":8217},"community",[126,8219,8220],{},"Communauté",[107,8222,8223],{},"Le soutien de la communauté autour de Blender est l’un de ses atouts les plus solides. Avec son modèle open source, les développeurs et les artistes contribuent fréquemment à sa croissance en partageant des tutoriels, des plugins et des ressources. Cette “ambiance open source” encourage l’expérimentation, et des plateformes portées par la communauté comme Blender Artists et Blender Nation fourmillent de discussions autour de projets ouverts.",[107,8225,8226],{},"Maya bénéficie aussi d’une grande communauté, bien que davantage orientée vers le côté commercial, qui fournit des ressources et un support professionnels. Maya est utilisé principalement par des professionnels travaillant dans des environnements de production à grande échelle ; la communauté Maya est donc souvent composée de vétérans de l’industrie et d’experts possédant une connaissance approfondie des pipelines de production complexes. La communauté communique généralement via des forums, comme le propre support et les réseaux communautaires d’Autodesk. Dans ce contexte, les assets et plugins gratuits ne sont pas aussi courants, car les animateurs sont occupés à travailler sur des projets de studio.",[136,8228],{},[139,8230,8232],{"id":8231},"modeling",[126,8233,8063],{},[107,8235,8236],{},"Blender est salué pour ses outils de modélisation rapides et flexibles. Le logiciel propose une gamme polyvalente de fonctionnalités, des workflows polygonaux et du sculpting jusqu’à la modélisation procédurale avancée grâce aux modificateurs. La pile de modificateurs “non destructifs” de Blender vous permet de modifier la géométrie de manière flexible et non linéaire, ce qui est particulièrement utile pour les processus de conception itératifs. Son interface personnalisable et son workflow centré sur les raccourcis clavier permettent aux modélisateurs de rationaliser leur processus et de travailler plus efficacement une fois l’outil maîtrisé. Enfin, Blender propose un support de sculpting intégré plus solide que Maya.",[107,8238,8239],{},"Maya excelle dans la modélisation polygonale grâce à un éventail d’outils avancés qui soutiennent un travail précis et détaillé. Son intégration avec d’autres produits Autodesk et son support avancé de la modélisation NURBS lui donnent un avantage pour créer des modèles complexes, très précis, souvent nécessaires dans des projets professionnels. L’interface utilisateur de Maya peut sembler plus déconcertante pour les débutants.",[107,8241,8242,8243,8248],{},"En résumé, les deux sont plutôt",[150,8244,751,8245],{"href":5622},[695,8246,8247],{},"similaires en modélisation 3D",", et votre choix se jouera sur vos préférences concernant l’interface et les contrôles.",[136,8250],{},[139,8252,8254],{"id":8253},"animation-rigging",[126,8255,8069],{},[107,8257,8258,8259,8264],{},"Maya propose des outils avancés d’animation et de",[150,8260,751,8261],{"href":6050},[695,8262,8263],{},"rigging"," directement disponibles pour les animateurs professionnels qui ont besoin de précision et de fluidité. Son système de rigging est incroyablement puissant et offre une grande profondeur de contrôle. Le logiciel prend en charge des personnages complexes avec des riggings élaborés grâce à des outils comme le Node Editor, qui simplifie la création de rigs de contrôle personnalisés et les déformations avancées. Les capacités de scripting robustes de Maya avec MEL et Python permettent aux directeurs techniques de créer des outils sur mesure et d’automatiser les processus de rigging.",[107,8266,8267],{},"Blender a fait de grands progrès en animation et rigging grâce à ses mises à jour constantes, et la fonctionnalité Grease Pencil ouvre de nouvelles opportunités pour l’animation 2D et 3D. Les systèmes d’animation et de rigging de Blender ne sont pas aussi avancés que ceux de Maya, mais ils sont bien présents. Le plugin Rigify de Blender est un excellent point de départ pour créer des rigs complexes sans plonger profondément dans le rigging manuel.",[136,8269],{},[139,8271,8273],{"id":8272},"rendering",[126,8274,8075],{},[107,8276,8277],{},"Maya utilise le moteur de rendu Interactive Photorealistic Rendering pour la visualisation pendant le développement, et le moteur Autodesk Arnold pour le rendu final.",[107,8279,8280],{},"Arnold est un moteur de rendu par lancer de rayons Monte Carlo de haute qualité, réputé pour sa capacité à gérer des scènes complexes. Arnold est piloté par le CPU, bien que des mises à jour récentes aient inclus le support d’accélération GPU.",[107,8282,8283,8284,133],{},"Blender dispose de deux moteurs de rendu :",[150,8285,751,8286],{"href":163},[695,8287,8288],{},"Cycles et Eevee",[107,8290,8291],{},"Cycles est un path tracer basé sur la physique qui fournit un éclairage, des réflexions et des ombres réalistes. Il s’appuie fortement sur l’accélération GPU, ce qui peut considérablement accélérer le processus de rendu si vous avez une carte graphique compatible.",[107,8293,8294],{},"De son côté, Eevee est un moteur de rendu temps réel, qui excelle dans la vitesse. Même s’il ne propose pas le même niveau de détail que Cycles, Eevee est idéal pour la prévisualisation pendant le développement ou pour les projets qui nécessitent des itérations rapides, avec un rendu moins réaliste, mais tout de même de haute qualité en termes de retour visuel.",[136,8296],{},[139,8298,8299],{"id":1349},[126,8300,1352],{},[107,8302,8303],{},"Maya et Blender sont deux outils puissants pour créer des animations 3D, chacun avec ses forces et ses limites uniques.",[107,8305,8306],{},"Grâce à son poids dans les grands studios et les grandes productions, Maya reste la référence. Mais Blender est une alternative solide, qui réduit de plus en plus l’écart grâce à sa flexibilité et à une approche plus adaptée au budget.",[107,8308,8309],{},"Commencer avec Blender vous donne une compréhension complète du monde 3D, surtout si vous travaillez de façon indépendante. À mesure que vos compétences et les besoins de votre studio évoluent, passer à Maya peut mieux s’aligner sur les standards de l’industrie.",[107,8311,8312],{},"Si vous êtes encore à l’école, assurez-vous de tirer parti de la licence étudiante gratuite pour vous faire une idée des deux logiciels.",[107,8314,8315],{},"Dans tous les cas, les compétences que vous apprenez dans chaque logiciel sont transférables, donc ne vous inquiétez pas trop du fait de choisir l’un ou l’autre. Si vous avez une bonne compréhension de Blender, vous pouvez facilement transférer vos compétences vers Maya en regardant quelques vidéos “comment faire”, en lisant la documentation et en vous entraînant pendant quelques semaines.",[90,8317,8319,8322],{"className":8318},[93,94,95],[90,8320,587],{"className":8321},[99],[90,8323,591,8325,598],{"className":8324},[104],[150,8326,1398],{"href":594,"rel":8327},[596],[90,8329,8331],{"className":8330},[93,602,603],[150,8332,8334],{"href":594,"className":8333},[607,608],"Rejoignez Notre Communauté Discord",{"title":243,"searchDepth":611,"depth":611,"links":8336},[8337,8338,8344,8350,8351,8352,8353,8354,8355],{"id":8020,"depth":611,"text":8023},{"id":8084,"depth":611,"text":7426,"children":8339},[8340,8341,8342,8343],{"id":8092,"depth":1413,"text":8033},{"id":8100,"depth":1413,"text":8039},{"id":8108,"depth":1413,"text":8111},{"id":8128,"depth":1413,"text":8131},{"id":10,"depth":611,"text":6,"children":8345},[8346,8347,8348,8349],{"id":8154,"depth":1413,"text":8033},{"id":8162,"depth":1413,"text":8039},{"id":8170,"depth":1413,"text":8111},{"id":8186,"depth":1413,"text":8131},{"id":8201,"depth":611,"text":8051},{"id":8217,"depth":611,"text":8220},{"id":8231,"depth":611,"text":8063},{"id":8253,"depth":611,"text":8069},{"id":8272,"depth":611,"text":8075},{"id":1349,"depth":611,"text":1352},"https://blog.cg-wire.com/content/images/2025/02/blender_vs_maya_cover.1102x655.jpg",{"updated_at":8358,"featured_at":625,"visibility":626},"2026-03-26T10:27:19.000+01:00","/blog-i18n/fr/blender-vs-maya","2025-02-24T10:00:50.000+01:00",{"title":7970,"description":243},"blender-vs-maya","blog-i18n/fr/blender-vs-maya/index",[8365,8366],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},{"id":8367,"name":8368,"slug":8369,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":8370},"69c20dfccb09d8000107cfe9","Resources","resources","https://blog.cg-wire.com/tag/resources/","tzE3pJOv7sWUgfX8Ok0M9AR0923BKm9cNGgukSE_-wM",{"id":8373,"title":8374,"authors":8375,"body":8385,"description":8389,"extension":621,"feature_image":8641,"html":7,"meta":8642,"navigation":12,"path":8644,"published_at":8645,"seo":8646,"slug":8647,"stem":8648,"tags":8649,"__hash__":8651,"updated_at":8643,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/getting-started-with-blender-rendering/index.md","Bien démarrer avec le rendu Blender en 2026",[8376],{"id":8377,"name":8378,"slug":8379,"profile_image":8380,"cover_image":8381,"bio":8382,"website":8383,"location":7978,"facebook":7,"twitter":7979,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":8384},"68d2f1e036b5be000835a0db","Frank Rousseau","frankrousseau","https://blog.cg-wire.com/content/images/2021/01/photo_identite.png","https://blog.cg-wire.com/content/images/2024/05/Annecy-Booth_Linework_004-2-1.jpg","CEO &Founder of CGWire","https://addictedtointer.net","https://blog.cg-wire.com/author/frankrousseau/",{"type":87,"value":8386,"toc":8633},[8387,8390,8393,8396,8400,8403,8453,8456,8459,8463,8466,8469,8472,8498,8502,8505,8519,8528,8531,8540,8543,8547,8554,8560,8568,8571,8579,8586,8593,8597,8600,8607,8610,8618,8620,8623],[107,8388,8389],{},"Le rendu Blender est le processus de génération de fichiers de sortie image ou vidéo à partir de scènes 3D créées dans Blender. Le rendu est une tâche extrêmement gourmande en ressources, car vous devez simuler une physique complexe comme la lumière, les matériaux et d’autres éléments visuels afin d’obtenir un résultat réaliste. Et comme une erreur de rendu a un impact direct sur le projet, vous devez comprendre le processus suffisamment bien pour correspondre à vos exigences techniques. À grande échelle, le rendu devient encore plus difficile, au point qu’il est préférable de le confier à des prestataires tiers capables de fournir un meilleur matériel.",[107,8391,8392],{},"Pour toutes ces raisons, cet article est incontournable si vous souhaitez optimiser votre processus de rendu : découvrez comment faire du rendu basique dans Blender, choisissez un moteur de rendu et passez à l’échelle à mesure que votre studio d’animation grandit ! ",[107,8394,8395],{},"Chez CGWire, nous travaillons dans l’écosystème Blender depuis avant notre création en 2018, nous connaissons donc les défis liés à l’étape de rendu. Assurez-vous de partager cet article avec vos collègues pour aider à optimiser le workflow de votre studio !",[139,8397,8399],{"id":8398},"how-to-render-animation-in-blender","Comment rendre une animation dans Blender",[107,8401,8402],{},"Le rendu dans Blender, quelle que soit l’entrée, suit les mêmes étapes :",[217,8404,8405,8411,8417,8423,8429,8435,8441,8447],{},[220,8406,8407,8410],{},[126,8408,8409],{},"Configurez votre scène"," - Concevez vos modèles 3D, paramétrez l’éclairage, les angles de caméra, ainsi que tous les autres éléments que vous souhaitez inclure dans votre animation.",[220,8412,8413,8416],{},[126,8414,8415],{},"Définissez vos réglages de rendu"," - Accédez à l’onglet Rendu. Ajustez la résolution de sortie, la plage d’images, la fréquence d’images, ainsi que les autres réglages selon vos besoins.",[220,8418,8419,8422],{},[126,8420,8421],{},"Configurez le format de sortie"," - Dans la section Propriétés de sortie de l’onglet Rendu, choisissez le format de sortie pour votre animation. Vous pouvez sélectionner des séquences d’images (par ex. PNG, JPEG) ou des formats vidéo (par ex. MP4, AVI). Indiquez le chemin de sortie où Blender enregistrera les images rendues ou la vidéo.",[220,8424,8425,8428],{},[126,8426,8427],{},"Choisissez le moteur de rendu"," - Blender propose deux moteurs de rendu : Cycles et Eevee. Cycles offre un rendu réaliste basé sur la physique, tandis qu’Eevee est un moteur temps réel adapté aux aperçus plus rapides. Sélectionnez le moteur souhaité dans le menu déroulant du moteur de rendu, dans la section Propriétés de rendu.",[220,8430,8431,8434],{},[126,8432,8433],{},"Vérifiez la lecture de l’animation"," - Utilisez le bouton Lecture dans l’éditeur Timeline (Chronologie) ou Dope Sheet (Feuille de mouvement) pour prévisualiser votre animation. Assurez-vous que tout bouge comme prévu et effectuez les ajustements nécessaires.",[220,8436,8437,8440],{},[126,8438,8439],{},"Lancez le rendu"," - Une fois que vous êtes satisfait de votre scène et de votre animation, cliquez sur le bouton Rendre l’animation dans l’onglet Rendu. Blender commencera à rendre chaque image en fonction de vos réglages. Le temps de rendu dépend de la complexité de votre scène, du moteur de rendu choisi et des performances de votre ordinateur.",[220,8442,8443,8446],{},[126,8444,8445],{},"Suivez l’avancement"," - Vous pouvez suivre la progression du rendu dans la barre d’état en haut de l’interface Blender. Elle affichera l’image en cours de rendu et le temps restant estimé.",[220,8448,8449,8452],{},[126,8450,8451],{},"Enregistrez et vérifiez la sortie"," - Une fois le rendu terminé, Blender enregistrera les images rendues ou la vidéo dans le chemin de sortie indiqué. Vous pouvez ensuite revoir l’animation afin de vous assurer qu’elle correspond à vos attentes.",[107,8454,8455],{},"L’onglet de rendu ressemble à ceci :",[107,8457,8458],{},"Selon les exigences de votre projet, ou ce que vous souhaitez faire avec les rendus, vous devrez vous plonger dans des fonctionnalités plus avancées.",[139,8460,8462],{"id":8461},"blender-rendering-engines-eevee-vs-cycles","Moteurs de rendu Blender : Eevee vs Cycles",[107,8464,8465],{},"Eevee et Cycles sont deux moteurs de rendu disponibles dans Blender, avec plusieurs différences en termes de fonctionnalités et de cas d’usage.",[107,8467,8468],{},"Comme toujours, le choix entre Eevee et Cycles dépend des exigences spécifiques de votre projet : si vous avez besoin de vitesse, d’interactivité et d’un rendu en temps réel, Eevee est un excellent choix pour les aperçus, par exemple. Mais si vous visez des rendus de haute qualité, physiquement exacts, à utiliser en production, Cycles est l’option recommandée.",[107,8470,8471],{},"Bien sûr, vous n’êtes pas obligé d’utiliser l’un ou l’autre pendant toute la durée du projet. Vous pouvez combiner les avantages et les inconvénients de chaque moteur pour en tirer le meilleur :",[731,8473,8474,8480,8486,8492],{},[220,8475,8476,8479],{},[126,8477,8478],{},"Vitesse de rendu"," - Eevee est un moteur de rendu temps réel conçu pour rendre rapidement et offrir de l’interactivité. Il utilise le GPU de votre ordinateur (Graphics Processing Unit) pour proposer des aperçus et des animations rapides. De son côté, Cycles est un moteur de lancer de rayons (path-tracing) qui se concentre sur la production de rendus réalistes et physiquement exacts, généralement plus longs à calculer.",[220,8481,8482,8485],{},[126,8483,8484],{},"Qualité de sortie"," - Cycles est réputé pour sa capacité à générer des images très réalistes avec un éclairage, des ombres et des reflets précis. Il utilise des techniques de ray tracing, qui simulent le trajet des rayons lumineux lorsqu’ils interagissent avec les objets de la scène. Eevee, bien qu’il ne soit pas physiquement exact comme Cycles, peut néanmoins produire des résultats impressionnants avec des ombres, des reflets et de l’occlusion ambiante en temps réel.",[220,8487,8488,8491],{},[126,8489,8490],{},"Rendu sur GPU vs CPU"," - Bien que les deux moteurs puissent utiliser le rendu sur GPU, Eevee est conçu explicitement pour l’accélération GPU et fonctionne exceptionnellement bien avec des cartes graphiques compatibles. Cycles peut utiliser à la fois le CPU (Central Processing Unit) et le rendu sur GPU, mais il est généralement plus performant en rendu CPU et sur des scènes complexes.",[220,8493,8494,8497],{},[126,8495,8496],{},"Workflow et interactivité"," - Eevee fournit un retour en temps réel, ce qui vous permet d’itérer rapidement et d’ajuster votre scène sans attendre des rendus longs. C’est idéal pour les workflows collaboratifs avec des boucles d’itération rapides, comme celles qu’on peut trouver dans l’industrie de l’animation. Cycles, bien que plus lent, est bien adapté aux rendus finaux et pour obtenir des résultats photoréalistes.",[139,8499,8501],{"id":8500},"use-viewport-render-workbench-engine-for-storyboarding","Utiliser Viewport Render (moteur Workbench) pour le storyboarding",[107,8503,8504],{},"Dans le cas où vous voulez simplement partager rapidement des instantanés d’une scène pour obtenir un retour, le rendu est excessif. Le mode Viewport Render fournit une manière rapide et interactive de prévisualiser votre scène sans avoir besoin d’un rendu séparé. Le rendu de la vue (viewport) n’est pas aussi précis qu’un rendu final, mais il permet d’économiser des ressources précieuses et ne nécessite que 5 étapes simples :",[217,8506,8507,8510,8513,8516],{},[220,8508,8509],{},"Ouvrez votre scène 3D dans Blender",[220,8511,8512],{},"Accédez à la zone où vous souhaitez afficher la vue rendue. Par défaut, il s’agit du 3D Viewport.",[220,8514,8515],{},"Dans l’angle supérieur droit de la fenêtre 3D Viewport, cliquez sur View, puis sur Viewport Render Animation",[220,8517,8518],{},"Blender commencera à rendre la vue en temps réel, en utilisant soit le moteur Workbench, soit le moteur de rendu Eevee. Vous verrez la scène avec les matériaux, l’éclairage, les ombres et d’autres effets. Le rendu se mettra à jour en temps réel à mesure que vous modifiez la scène, ce qui vous donne un retour immédiat.",[233,8520,8522],{"className":8521},[93,236],[238,8523],{"src":8524,"className":8525,"alt":243,"loading":244,"width":8526,"height":8527},"https://lh3.googleusercontent.com/f0YU30WPImeGqw6_a1GCNtG4ShDENq-7R4XeUOkQnaZNr_74yIqGV2Q0z6j4TUCXVyI-wNc-poYMQ1rEwBOkq2p37aXWwHcfZF_7BbZmQsAGQikmYo69qAzY52SUuryBfMM4oD0pu6wRyUt1HZzXkog",[242],297,77,[107,8529,8530],{},"Lorsque vous êtes en mode Viewport Render, vous pouvez naviguer dans la scène, manipuler les objets, ajuster l’éclairage et effectuer d’autres modifications. La fenêtre d’affichage se mettra à jour en conséquence, vous permettant de prévisualiser les changements instantanément.",[233,8532,8534],{"className":8533},[93,236],[238,8535],{"src":8536,"className":8537,"alt":243,"loading":244,"width":8538,"height":8539},"https://lh3.googleusercontent.com/5aCphsaEBQKqbe5xdiyjtsnhKzMtwvYrL3R9rKQCrDxoTQ9tVvj2aT9O8vA-y59Xq6BurCMQPeNAGduSAsncKvvAwdtwLfUckPv2VrAUzjjjYzwLgBieSiwV04jVKqCEpvsTdZqgJ5HcR-VcNNpQiY4",[242],624,668,[107,8541,8542],{},"Pour quitter le mode Viewport Render et revenir à la vue 3D classique, cliquez sur le menu déroulant dans l’angle supérieur droit et sélectionnez un autre mode d’affichage, comme Solid, Wireframe ou Material Preview.",[139,8544,8546],{"id":8545},"using-a-blender-rendering-farm","Utiliser une ferme de rendu Blender",[107,8548,8549,8550,8553],{},"Utiliser une ferme de rendu pour le rendu Blender apporte plusieurs avantages. Tout d’abord, ",[126,8551,8552],{},"rendre vos modèles 3D sur votre propre machine est chronophage et limité"," par votre puissance de traitement. Une ferme de rendu apporte une solution en mettant à disposition une puissance supplémentaire, permettant ainsi de rendre vos projets en quelques minutes plutôt qu’en plusieurs semaines.",[107,8555,8556,8559],{},[126,8557,8558],{},"Créer votre propre ferme de rendu n’est pas toujours une option viable"," car c’est très coûteux : vous aurez besoin de matériel onéreux, de plusieurs heures pour la configurer et la maintenir, et vos factures d’électricité augmenteront. Si vous avez un Render Wrangler dans votre équipe, cela peut être efficace, car il en tirera pleinement parti. Mais dans la plupart des cas, avec un service de ferme de rendu, la gestion sera beaucoup plus simple. Vous pouvez augmenter ou réduire les capacités selon vos besoins sans gérer de serveurs. Connectez-vous simplement, téléversez vos assets et profitez de la simplicité.",[233,8561,8563],{"className":8562},[93,236],[238,8564],{"src":8565,"className":8566,"alt":243,"loading":244,"width":8538,"height":8567},"https://lh5.googleusercontent.com/XRTIxKyD6zAcREE-ul4QDr2DvTD-VNvhnpoWwxO5w401g7McoK7qs-pzwaJ9vKzaHFNOdFi6k5FUh5vED6CV8n7PAdCNAXCcLAukK9BdNYDSULOf5eVBWfLu1rXiuBpv9IPO5xevDkqy0AZn1JHbOzo",[242],521,[107,8569,8570],{},"Vous pouvez ensuite télécharger les images rendues dès qu’elles sont prêtes :",[233,8572,8574],{"className":8573},[93,236],[238,8575],{"src":8576,"className":8577,"alt":243,"loading":244,"width":8538,"height":8578},"https://lh4.googleusercontent.com/NbH3JSZZytC2DfO3zNTyJVuYdcAmlLRSlgHKM4JBHrujabgvwD1IKPZ7zTO20K9_Zz_tCSeaZww7YQzk7BJ7j9ULA8d43e-hVSQk_RupkPdsZvIIvfux3r3gDYBTdISEe9YR9AH2pHkI_nn3b7M8Ftg",[242],384,[107,8580,8581,8582,8585],{},"Une ferme de rendu accélère non seulement le temps de traitement, mais ",[126,8583,8584],{},"elle augmente aussi la qualité du rendu",". Vous pouvez simplement choisir des réglages de résolution adaptés aux exigences du projet et passer à autre chose. À mesure que la demande de modèles 3D plus réalistes augmente, une ferme de rendu devient souvent essentielle pour maintenir un temps de rendu faible et rester compétitif.",[107,8587,8588,8589,133],{},"Découvrez ",[150,8590,8592],{"href":8591},"https://blog.cg-wire.com/partnership-with-ranch-computing/","notre article dédié pour en savoir plus sur notre partenaire de ferme de rendu Ranch Computing",[139,8594,8596],{"id":8595},"using-kitsu-to-keep-track-of-your-renders","Utiliser Kitsu pour suivre vos rendus",[107,8598,8599],{},"Dans une production d’animation avec des centaines d’assets à gérer, le rendu n’est pas une tâche simple. Au lieu de rendre chaque asset / animation les uns après les autres, vous pouvez utiliser Kitsu Publisher pour partager automatiquement un aperçu pour le travail collaboratif sans quitter votre outil préféré de création de contenu numérique (DCC)—que ce soit Blender, Unreal Engine 5 ou Harmony.",[107,8601,8602,8603,8606],{},"Kitsu est une plateforme de collaboration pour les studios d’animation afin de partager l’avancement de leurs productions et de valider les livraisons. Le Kitsu Publisher est une application desktop qui connecte les outils DCC à Kitsu afin d’envoyer automatiquement des aperçus de rendu à votre espace de travail Kitsu. Il vous suffit d’installer Kitsu Publisher et de l’ajouter en tant que plugin Blender en quelques minutes. Vous pouvez ",[150,8604,8605],{"href":7924},"lire la documentation officielle pour obtenir les étapes détaillées"," selon le système d’exploitation que vous utilisez.",[107,8608,8609],{},"Ce n’est pas seulement un moyen de sauter complètement la tâche de rendu si vous souhaitez partager des aperçus pour recueillir des retours : c’est aussi un outil de communication précieux pour suivre tous les assets que vous devez (re-)rendre pour la production, et pour prioriser les tâches de rendu selon les besoins de vos collègues : plus d’allers-retours et de réunions interminables !",[107,8611,8612,8613,8617],{},"Blender possède également ",[150,8614,8616],{"href":8615},"https://studio.blender.org/pipeline/addons/blender_kitsu?ref=blog.cg-wire.com","un plugin Kitsu officiel"," pour interagir avec Kitsu directement depuis Blender, avec des fonctionnalités comme le rendu d’instantanés et de miniatures.",[139,8619,1352],{"id":1349},[107,8621,8622],{},"En conclusion, le rendu avec Blender offre une manière puissante de donner vie à vos scènes 3D. Même si la multitude d’options peut sembler impressionnante au début, il est important de se rappeler que la simplicité est essentielle quand on commence. Choisissez l’option la plus simple et améliorez-vous au fil du temps !",[107,8624,8625],{},[130,8626,8627,8628,8632],{},"À mesure que la demande de collaboration et de workflow efficace augmente, il est crucial d’explorer des méthodes de rendu alternatives. De plus, c’est une tâche complexe qui nécessite des compétences avancées à un moment donné. C’est pourquoi nous vous encourageons à rejoindre notre ",[150,8629,8631],{"href":8630},"https://discord.com/invite/VbCxtKN?ref=blog.cg-wire.com","communauté Discord"," composée d’experts en pipeline et en production !",{"title":243,"searchDepth":611,"depth":611,"links":8634},[8635,8636,8637,8638,8639,8640],{"id":8398,"depth":611,"text":8399},{"id":8461,"depth":611,"text":8462},{"id":8500,"depth":611,"text":8501},{"id":8545,"depth":611,"text":8546},{"id":8595,"depth":611,"text":8596},{"id":1349,"depth":611,"text":1352},"https://blog.cg-wire.com/content/images/2023/07/pasted-image-0.png",{"updated_at":8643,"featured_at":625,"visibility":626},"2026-03-24T05:12:02.000+01:00","/blog-i18n/fr/getting-started-with-blender-rendering","2023-08-29T17:08:09.000+02:00",{"title":8374,"description":8389},"getting-started-with-blender-rendering","blog-i18n/fr/getting-started-with-blender-rendering/index",[8650],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"mdUD7KbVebfmMdVV9hGwwyQKf5-oz2f6PGGnKGWucm4",{"id":8653,"title":8654,"authors":8655,"body":8657,"description":8661,"extension":621,"feature_image":9226,"html":7,"meta":9227,"navigation":12,"path":9230,"published_at":9231,"seo":9232,"slug":9233,"stem":9234,"tags":9235,"__hash__":9237,"updated_at":9228,"Heureusement, Blender propose plusieurs options d’export":9229,"featured_at":625,"visibility":626},"blog/blog-i18n/fr/getting-started-with-export-in-blender/index.md","Bien démarrer avec l’exportation dans Blender en 2026",[8656],{"id":8377,"name":8378,"slug":8379,"profile_image":8380,"cover_image":8381,"bio":8382,"website":8383,"location":7978,"facebook":7,"twitter":7979,"meta_title":7,"meta_description":7,"threads":7,"bluesky":7,"mastodon":7,"tiktok":7,"youtube":7,"instagram":7,"linkedin":7,"url":8384},{"type":87,"value":8658,"toc":9209},[8659,8662,8665,8669,8672,8722,8725,8729,8732,8736,8739,8743,8760,8764,8790,8794,8797,8801,8821,8825,8839,8843,8846,8850,8870,8874,8888,8892,8895,8899,8919,8923,8938,8942,8945,8949,8967,8971,8985,8989,8992,8996,9016,9020,9039,9043,9046,9050,9070,9074,9094,9098,9101,9105,9113,9117,9131,9135,9138,9141,9145,9148,9163,9167,9170,9176,9179,9182,9189,9191,9194],[107,8660,8661],{},"Blender est un logiciel populaire de graphisme informatique 3D utilisé pour l’animation. À un moment donné de votre projet, vous aurez besoin d’exporter vos fichiers―pour les stocker, les partager avec vos coéquipiers, ou les utiliser dans d’autres logiciels spécialisés, comme l’envoi vers une ferme de rendu. ",[107,8663,8664],{},"Heureusement, Blender propose plusieurs options d’export : dans cet article, nous expliquons chacune d’elles et quand elles sont les plus adaptées à utiliser dans votre pipeline d’animation afin d’en tirer le meilleur parti. Enfin, nous parlerons de la manière d’utiliser Kitsu, notre logiciel open-source de gestion de production, pour rendre les tâches d’export plus efficaces.",[139,8666,8668],{"id":8667},"how-to-export-in-blender","Comment exporter dans Blender",[107,8670,8671],{},"L’exportation des fichiers depuis Blender suit toujours ces étapes générales :",[217,8673,8674,8680,8686,8692,8704,8710,8716],{},[220,8675,8676,8679],{},[126,8677,8678],{},"Sélectionnez les objets ou l’animation que vous souhaitez exporter"," - Dans Blender, sélectionnez les objets ou l’animation que vous souhaitez exporter. Vous pouvez sélectionner plusieurs objets en maintenant la touche Shift enfoncée pendant que vous cliquez dessus.",[220,8681,8682,8685],{},[126,8683,8684],{},"Ouvrez le menu Export"," - Allez dans le menu Fichier situé en haut à gauche de l’interface Blender et sélectionnez « Exporter » pour accéder aux options d’export.",[220,8687,8688,8691],{},[126,8689,8690],{},"Choisissez le format de fichier"," - Dans les options d’export, vous verrez une liste des formats de fichiers disponibles à choisir. Sélectionnez le format qui correspond à vos besoins et qui est compatible avec le logiciel ou la plateforme sur laquelle vous comptez utiliser les fichiers exportés. Nous expliquerons chaque format de fichier dans la section suivante.",[220,8693,8694,8697,8698,8703],{},[126,8695,8696],{},"Configurez les paramètres d’export"," - Selon le format de fichier choisi, vous disposerez de différents paramètres et options à configurer. Ces paramètres peuvent inclure des options pour l’animation, la hiérarchie des objets, les matériaux, les textures, l’échelle, et bien plus encore. Ajustez ces paramètres en fonction de vos besoins ou des spécifications du logiciel cible. ",[150,8699,8702],{"href":8700,"rel":8701},"https://docs.blender.org/manual/en/latest/files/import_export?ref=blog.cg-wire.com",[596],"Consultez la documentation officielle"," pour en savoir plus sur les paramètres.",[220,8705,8706,8709],{},[126,8707,8708],{},"Définissez le chemin et le nom du fichier"," - Indiquez le chemin du fichier à l’endroit où vous souhaitez enregistrer le fichier exporté. Choisissez un emplacement sur votre ordinateur ou réseau facilement accessible et bien organisé. Donnez au fichier un nom approprié qui reflète son contenu.",[220,8711,8712,8715],{},[126,8713,8714],{},"Exportez le fichier"," - Une fois que vous avez configuré tous les paramètres nécessaires, cliquez sur le bouton « Exporter » ou « Enregistrer » pour lancer le processus d’export. Blender traitera les objets ou l’animation sélectionnés et générera le fichier exporté à l’emplacement indiqué.",[220,8717,8718,8721],{},[126,8719,8720],{},"Vérifiez le fichier exporté"," - Une fois l’export terminé, accédez au chemin de fichier choisi et assurez-vous que le fichier exporté est bien présent. Ouvrez le fichier dans le logiciel ou sur la plateforme cible pour confirmer que l’animation ou les objets ont bien été transférés et fonctionnent comme prévu.",[107,8723,8724],{},"Le menu Export ressemble à ceci :",[139,8726,8728],{"id":8727},"export-file-formats-pros-cons","Formats de fichiers d’export : avantages & inconvénients",[107,8730,8731],{},"Blender prend en charge différents formats de fichiers avec leurs propres fonctionnalités, avantages et limites.",[829,8733,8735],{"id":8734},"fbx-filmbox","FBX (Filmbox)",[107,8737,8738],{},"FBX est un format de fichier propriétaire développé par Autodesk, principalement utilisé dans l’industrie de l’animation pour simplifier l’échange de contenu 3D entre différents logiciels, comme Blender, Maya et 3DS Max. Les fichiers FBX peuvent stocker différents types de données liées aux modèles 3D, notamment la géométrie, les textures, les matériaux, les animations, les caméras et les lumières.",[107,8740,8741],{},[126,8742,8111],{},[731,8744,8745,8751],{},[220,8746,8747,8750],{},[126,8748,8749],{},"Interchangeabilité"," - Le format FBX est principalement utilisé pour l’échange d’animations de personnages entre différentes applications. Il est pris en charge par des applications populaires telles que Cinema4D, Maya, Autodesk 3ds Max, Wings3D et Unreal Engine 5.",[220,8752,8753,8756,8757,8759],{},[126,8754,8755],{},"Modificateurs de mesh et animation « cuits »"," -",[126,8758,751],{},"Le moteur d’export peut « cuire » les modificateurs de mesh et l’animation dans le fichier FBX, ce qui garantit que le résultat final apparaît identique à celui dans Blender.",[107,8761,8762],{},[126,8763,8131],{},[731,8765,8766,8774,8782],{},[220,8767,8768,8756,8771,8773],{},[126,8769,8770],{},"Absence de prise en charge des instances d’armature",[126,8772,751],{},"Les instances d’armature ne sont pas prises en charge dans le format FBX, ce qui peut limiter certaines capacités ou certains workflows impliquant des animations basées sur des armatures.",[220,8775,8776,8756,8779,8781],{},[126,8777,8778],{},"Importation complexe de l’orientation des os",[126,8780,751],{},"L’importation de l’orientation des os peut être complexe et peut nécessiter d’ajuster les paramètres associés jusqu’à obtenir les résultats souhaités.",[220,8783,8784,8756,8787,8789],{},[126,8785,8786],{},"Prise en charge limitée de l’animation",[126,8788,751],{},"Niveau actuel de prise en charge de l’animation dans FBX est minimal. Lors de l’enregistrement uniquement des animations dans FBX, il est nécessaire de suivre manuellement quelle animation appartient à quel modèle. La sélection et l’organisation demandent un effort manuel pour optimiser la taille des fichiers et faciliter des processus d’export et d’import plus rapides.",[829,8791,8793],{"id":8792},"alembic","Alembic",[107,8795,8796],{},"Le format de fichier Alembic est un format ouvert d’échange de graphisme informatique conçu pour le stockage et l’échange efficaces de géométries 3D animées et simulées.",[107,8798,8799],{},[126,8800,8111],{},[731,8802,8803,8809,8815],{},[220,8804,8805,8808],{},[126,8806,8807],{},"Stockage efficace"," - Alembic est conçu pour stocker efficacement les résultats calculés de constructions géométriques procédurales complexes, comme des positions de sommets animées et des transformations animées.",[220,8810,8811,8814],{},[126,8812,8813],{},"Opérations de lecture et d’écriture rapides"," - Il permet d’écrire rapidement et efficacement des meshes animés sur un disque et de les relire ensuite.",[220,8816,8817,8820],{},[126,8818,8819],{},"Réduction de l’utilisation du CPU"," - En « cuisant » le mesh animé dans un fichier Alembic, on réduit le traitement de rig gourmand en CPU, ce qui entraîne une utilisation modérée du CPU pendant l’ombrage et l’éclairage.",[107,8822,8823],{},[126,8824,8131],{},[731,8826,8827,8833],{},[220,8828,8829,8832],{},[126,8830,8831],{},"Domaine limité"," - Alembic est spécifiquement axé sur le stockage des résultats calculés et ne s’intéresse pas au stockage du graphe de dépendances complexe des outils procéduraux utilisés dans le processus de création. Il ne stocke pas le réseau de calculs (rigs) nécessaire pour produire les positions et transformations animées finales.",[220,8834,8835,8838],{},[126,8836,8837],{},"Absence de représentation des calculs"," - Comme Alembic ne stocke pas le réseau de calculs, il peut ne pas convenir aux scénarios où il est nécessaire de conserver l’historique complet ou les dépendances des outils procéduraux utilisés dans le processus d’animation et de simulation.",[829,8840,8842],{"id":8841},"obj-wavefront","OBJ (Wavefront)",[107,8844,8845],{},"Le format de fichier OBJ (Wavefront OBJ) est un format texte brut largement utilisé pour l’échange de données de modèles 3D, initialement développé par Wavefront Technologies pour leur logiciel Advanced Visualizer..",[107,8847,8848],{},[126,8849,8111],{},[731,8851,8852,8858,8864],{},[220,8853,8854,8857],{},[126,8855,8856],{},"Pris en charge universellement"," par la plupart des logiciels et plateformes 3D.",[220,8859,8860,8861,133],{},"Format simple basé sur ASCII qui est ",[126,8862,8863],{},"facile à lire et à modifier",[220,8865,8866,8869],{},[126,8867,8868],{},"Prend en charge la géométrie de base",", le mappage UV et l’affectation des matériaux.",[107,8871,8872],{},[126,8873,8131],{},[731,8875,8876,8882],{},[220,8877,8878,8881],{},[126,8879,8880],{},"Pas de prise en charge de l’animation"," - Ne prend pas en charge les armatures, les lumières, les caméras, les objets vides, le parentage, ni les transformations.",[220,8883,8884,8887],{},[126,8885,8886],{},"Uniquement pour des scènes simples"," - Capacité limitée pour gérer de grandes scènes ou des meshes à haute résolution.",[829,8889,8891],{"id":8890},"collada-dae","Collada (DAE)",[107,8893,8894],{},"Le format de fichier Collada, également connu par son extension de fichier .dae (Digital Asset Exchange), est un standard ouvert basé sur XML, conçu spécifiquement pour l’interopérabilité des actifs numériques 3D et des données d’animation.",[107,8896,8897],{},[126,8898,8111],{},[731,8900,8901,8907,8913],{},[220,8902,8903,8906],{},[126,8904,8905],{},"Très largement pris en charge"," et capable de conserver la géométrie, les matériaux, les textures, les animations, etc.",[220,8908,8909,8910,133],{},"Prend en charge ",[126,8911,8912],{},"les hiérarchies de scène complexes et plusieurs couches d’animation",[220,8914,8915,8918],{},[126,8916,8917],{},"Format ouvert basé sur XML"," lisible par les humains et modifiable.",[107,8920,8921],{},[126,8922,8131],{},[731,8924,8925,8931],{},[220,8926,8927,8928],{},"Le plugin Blender est ",[126,8929,8930],{},"encore en développement",[220,8932,8933,8934,8937],{},"Une extension de fichier ",[126,8935,8936],{},"plutôt « héritée »"," (aucune mise à jour depuis 2014)",[829,8939,8941],{"id":8940},"gltf-gl-transmission-format","glTF (GL Transmission Format)",[107,8943,8944],{},"glTF (GL Transmission Format) est un format de fichier standard ouvert conçu pour la transmission et le chargement efficaces de scènes et de modèles 3D, avec un focus sur le rendu temps réel. Il utilise une structure JSON (JavaScript Object Notation) ou un format binaire pour stocker les données des modèles 3D, y compris la géométrie, les textures, les matériaux, les animations, etc. Le format binaire, appelé « glTF Binary », améliore encore l’efficacité en réduisant la taille des fichiers et en améliorant les temps de chargement.",[107,8946,8947],{},[126,8948,8111],{},[731,8950,8951,8958,8961],{},[220,8952,8953,8954,8957],{},"Conçu pour le ",[126,8955,8956],{},"rendu temps réel"," (web, jeux).",[220,8959,8960],{},"Prend en charge la géométrie, les matériaux, les textures, les animations, et plus encore.",[220,8962,8963,8966],{},[126,8964,8965],{},"Compression efficace"," et fichiers de petite taille.",[107,8968,8969],{},[126,8970,8131],{},[731,8972,8973,8979],{},[220,8974,8975,8978],{},[126,8976,8977],{},"Prise en charge limitée des fonctionnalités avancées"," comme les cheveux, les particules ou les shaders complexes.",[220,8980,8981,8984],{},[126,8982,8983],{},"Compatibilité"," variable selon les outils DCC.",[829,8986,8988],{"id":8987},"universal-scene-description-usd","Universal Scene Description (USD)",[107,8990,8991],{},"Un format d’échange ouvert et extensible, développé par Pixar Animation Studios, conçu pour répondre aux complexités et aux exigences des pipelines modernes d’animation et d’effets visuels. USD est conçu pour gérer des scènes complexes impliquant de grandes quantités de données, d’actifs et d’interdépendances subtiles. Il propose une approche hiérarchique et basée sur des couches pour organiser et représenter des scènes 3D, permettant un édition efficace, le versionnage et la collaboration entre artistes et responsables techniques.",[107,8993,8994],{},[126,8995,8111],{},[731,8997,8998,9004,9010],{},[220,8999,9000,9003],{},[126,9001,9002],{},"Extensibilité"," - USD peut gérer des scènes de grande envergure avec des interdépendances complexes. Il fournit des mécanismes efficaces pour organiser, référencer et réutiliser des actifs.",[220,9005,9006,9009],{},[126,9007,9008],{},"Édition par couches"," - USD repose sur une approche d’édition par couches, permettant aux artistes et responsables techniques de travailler sur différents aspects d’une scène indépendamment, pour une édition non destructive, le versionnage et des workflows itératifs, tout en améliorant la productivité et la flexibilité.",[220,9011,9012,9015],{},[126,9013,9014],{},"Gestion efficace des animations"," - USD gère efficacement les données d’animation, des animations squelettiques et des animations de sommets jusqu’à l’animation par keyframes, les blend shapes (morph targets) et les informations de rigging, ce qui le rend adapté aux workflows d’animation et de rigging de personnages complexes.",[107,9017,9018],{},[126,9019,8131],{},[731,9021,9022,9027,9033],{},[220,9023,9024,9026],{},[126,9025,8051],{}," - Travailler avec USD peut nécessiter une courbe d’apprentissage plus raide que d’autres formats, en raison de ses fonctionnalités avancées et de son approche basée sur des couches",[220,9028,9029,9032],{},[126,9030,9031],{},"Prise en charge des outils"," - Bien que USD ait gagné une adoption généralisée, toutes les applications logicielles ne disposent pas d’une prise en charge native. Blender ne prend pas en charge les objets invisibles, les couches USD, les variantes et l’animation squelettique.",[220,9034,9035,9038],{},[126,9036,9037],{},"Taille des fichiers"," - Selon la complexité de la scène et la quantité de données stockées, les fichiers USD peuvent devenir volumineux. Cela peut impacter les besoins de transfert et de stockage des fichiers, en particulier lors de projets à grande échelle.",[829,9040,9042],{"id":9041},"stanford-ply","Stanford PLY",[107,9044,9045],{},"Le format de fichier Stanford PLY, développé à l’université de Stanford, est un format flexible et largement pris en charge pour représenter la géométrie 3D. Il peut stocker des informations sur les sommets, les faces, les arêtes, les normales, les couleurs, les coordonnées de texture et d’autres attributs d’un modèle 3D. Les fichiers PLY peuvent être utilisés pour représenter à la fois des meshes polygonaux et des nuages de points.",[107,9047,9048],{},[126,9049,8111],{},[731,9051,9052,9058,9064],{},[220,9053,9054,9057],{},[126,9055,9056],{},"Flexibilité"," - Le format Stanford PLY est flexible et prend en charge une large gamme de données géométriques. Il peut stocker les coordonnées des sommets, les faces polygonales, les normales, les couleurs et d’autres attributs, permettant une représentation polyvalente de la géométrie 3D.",[220,9059,9060,9063],{},[126,9061,9062],{},"Large prise en charge"," - Les fichiers PLY ont bénéficié d’une prise en charge étendue dans diverses applications logicielles et bibliothèques au sein de la communauté du graphisme informatique.",[220,9065,9066,9069],{},[126,9067,9068],{},"Structure de fichier simple"," - Le format PLY possède une structure relativement simple et directe, ce qui facilite la lecture, l’écriture et l’analyse par programme, à petite comme à grande échelle.",[107,9071,9072],{},[126,9073,8131],{},[731,9075,9076,9082,9088],{},[220,9077,9078,9081],{},[126,9079,9080],{},"Limites en animation"," - Le format Stanford PLY est principalement conçu pour des données géométriques statiques et ne prend pas en charge des fonctionnalités spécifiques à l’animation comme l’animation squelettique, le rigging ou l’animation par keyframe.",[220,9083,9084,9087],{},[126,9085,9086],{},"Manque de standardisation"," - Bien que le format PLY lui-même soit bien défini, il n’existe pas de standard universel pour des attributs supplémentaires au-delà de la géométrie de base. Ce manque de standardisation peut entraîner des problèmes de compatibilité.",[220,9089,9090,9093],{},[126,9091,9092],{},"Taille de fichiers importante ","- Selon la complexité et le niveau de détail de la géométrie, les fichiers PLY peuvent devenir volumineux.",[829,9095,9097],{"id":9096},"x3d-extensible-3d","X3D Extensible 3D",[107,9099,9100],{},"Le format de fichier X3D (Extensible 3D) est un standard ouvert pour représenter et échanger des graphismes informatiques 3D et des animations. Il prend en charge une large gamme d’applications, notamment l’animation, la visualisation, la réalité virtuelle et la réalité augmentée, en s’appuyant sur les capacités du format VRML.",[107,9102,9103],{},[126,9104,8111],{},[731,9106,9107],{},[220,9108,9109,9112],{},[126,9110,9111],{},"Capacités d’animation riches"," - X3D fournit une prise en charge étendue de diverses techniques d’animation, permettant de créer des animations complexes et dynamiques avec différents types de mouvement et de transformations. Il inclut des fonctionnalités de simulation de systèmes dynamiques comme la physique du monde réel.",[107,9114,9115],{},[126,9116,8131],{},[731,9118,9119,9125],{},[220,9120,9121,9124],{},[126,9122,9123],{},"Complexité ","- Les fichiers X3D sont plus complexes que d’autres formats, nécessitant des logiciels spécifiques pour visualiser et modifier, en raison de l’ensemble étendu de fonctionnalités, de la flexibilité, ainsi que du temps et des efforts nécessaires pour maîtriser l’outil.",[220,9126,9127,9130],{},[126,9128,9129],{},"Adoption limitée ","- Bien qu’il s’agisse d’un standard ouvert, X3D est moins largement adopté que d’autres formats.",[829,9132,9134],{"id":9133},"movies-and-pictures-mp4-png-jpg","Films et images (.mp4, .png, .jpg)",[107,9136,9137],{},"Vous devrez peut-être générer des fichiers d’aperçu à partir de vos scènes. Les aperçus sont essentiels pour une collaboration efficace. Ils permettent aux superviseurs et aux réalisateurs de donner leur avis. Grâce à eux, les itérations peuvent se faire partout, de manière plus fluide.",[107,9139,9140],{},"Nous parlerons de la façon de rendre des images et des animations dans Blender dans un prochain article.",[829,9142,9144],{"id":9143},"other-file-formats","Autres formats de fichiers",[107,9146,9147],{},"Blender propose deux autres formats de fichiers :",[731,9149,9150,9156],{},[220,9151,9152,9155],{},[126,9153,9154],{},"STL"," (STereoLithography) pour l’impression 3D",[220,9157,9158,9159,9162],{},"Le format de fichier ",[126,9160,9161],{},"Grease Pencil"," crée des animations 2D à partir de fichiers SVG ou PDF qui peuvent être combinés avec des éléments 3D.",[139,9164,9166],{"id":9165},"using-kitsu-to-streamline-preview-exports","Utiliser Kitsu pour rationaliser les exportations d’aperçus",[107,9168,9169],{},"Dans une production d’animation comptant des centaines d’actifs à gérer, l’exportation d’aperçus n’est pas une tâche simple. Au lieu d’exporter chaque actif / animation un par un, vous pouvez utiliser Kitsu Publisher pour partager automatiquement un aperçu pour un travail collaboratif, sans quitter votre outil de création de contenu numérique (DCC) préféré―que ce soit Blender, Unreal Engine 5 ou Harmony.",[107,9171,9172,9173,9175],{},"Kitsu est une plateforme de collaboration pour les studios d’animation afin de partager l’avancement de leurs productions et de valider les livraisons. Kitsu Publisher est une application de bureau qui relie les outils DCC à Kitsu afin d’envoyer automatiquement les aperçus d’export vers votre espace de travail Kitsu. Tout ce dont vous avez besoin est d’installer Kitsu Publisher et de l’ajouter en tant qu’extension Blender en quelques minutes. Vous pouvez ",[150,9174,8605],{"href":7924}," en fonction de votre système d’exploitation.",[107,9177,9178],{},"Non seulement cela vous permet de sauter complètement la tâche d’export si vous souhaitez uniquement partager des aperçus pour recueillir des retours, mais c’est aussi un outil précieux de communication pour suivre tous les actifs que vous devez exporter pour la production et hiérarchiser les tâches d’export selon les besoins de vos coéquipiers : plus d’allers-retours et de réunions interminables !",[107,9180,9181],{},"Encore mieux, grâce à son API, Kitsu vous fournit des assistants pour créer les chemins de fichiers de tous vos fichiers d’export.",[107,9183,9184,9185,9188],{},"Et, last but not least, Blender possède aussi ",[150,9186,9187],{"href":8615},"une extension Kitsu officielle"," pour interagir avec Kitsu directement depuis Blender, y compris des fonctionnalités comme l’exportation de snapshots et de vignettes.",[139,9190,1352],{"id":1349},[107,9192,9193],{},"Pour conclure, exporter avec Blender offre un processus simple pour partager des assets 3D, mais l’ensemble des options et formats de fichiers disponibles peut sembler impressionnant pour les débutants. Pour simplifier le workflow d’export, il est conseillé de commencer par l’option la plus simple qui répond à vos besoins. Bien que Blender prenne en charge de nombreux formats de fichiers adaptés à divers usages, il est essentiel de tenir compte de l’utilisation prévue, de la compatibilité avec d’autres logiciels et des exigences spécifiques du projet lors du choix d’un format d’export.",[107,9195,9196,9199,9206],{},[130,9197,9198],{},"Pour les équipes qui travaillent en collaboration, les exports manuels pour partager des assets peuvent être longs et pénibles. Kitsu propose une solution automatisée pour stocker et partager des assets directement depuis Blender avec les membres de l’équipe. ",[150,9200,9203],{"href":9201,"rel":9202},"https://account.cg-wire.com/signup/?ref=blog.cg-wire.com",[596],[130,9204,9205],{},"Essayez-le gratuitement dès aujourd’hui",[130,9207,9208],{},", et il ne vous faudra que quelques minutes pour démarrer !",{"title":243,"searchDepth":611,"depth":611,"links":9210},[9211,9212,9224,9225],{"id":8667,"depth":611,"text":8668},{"id":8727,"depth":611,"text":8728,"children":9213},[9214,9215,9216,9217,9218,9219,9220,9221,9222,9223],{"id":8734,"depth":1413,"text":8735},{"id":8792,"depth":1413,"text":8793},{"id":8841,"depth":1413,"text":8842},{"id":8890,"depth":1413,"text":8891},{"id":8940,"depth":1413,"text":8941},{"id":8987,"depth":1413,"text":8988},{"id":9041,"depth":1413,"text":9042},{"id":9096,"depth":1413,"text":9097},{"id":9133,"depth":1413,"text":9134},{"id":9143,"depth":1413,"text":9144},{"id":9165,"depth":611,"text":9166},{"id":1349,"depth":611,"text":1352},"https://blog.cg-wire.com/content/images/2023/07/pasted-image-0-1.png",{"updated_at":9228,"Heureusement, Blender propose plusieurs options d’export":9229,"featured_at":625,"visibility":626},"2026-03-26T09:44:02.000+01:00","dans cet article, nous expliquons chacune d’elles et quand elles sont les plus adaptées à utiliser dans votre pipeline d’animation afin d’en tirer le meilleur parti. Enfin, nous parlerons de la manière d’utiliser Kitsu, notre logiciel open-source de gestion de production, pour rendre les tâches d’export plus efficaces.\"","/blog-i18n/fr/getting-started-with-export-in-blender","2023-07-31T11:40:41.000+02:00",{"title":8654,"description":8661},"getting-started-with-export-in-blender","blog-i18n/fr/getting-started-with-export-in-blender/index",[9236],{"id":638,"name":6,"slug":10,"description":7,"feature_image":7,"visibility":626,"og_image":7,"og_title":7,"og_description":7,"twitter_image":7,"twitter_title":7,"twitter_description":7,"meta_title":7,"meta_description":7,"codeinjection_head":7,"codeinjection_foot":7,"canonical_url":7,"accent_color":7,"url":639},"KhFG8vDp9lPZ0zGQ0en7ZiHV_uE0KRCSUNYTLzaYkYM",[9239,9242,9245,9248,9251,9254,9257],{"id":5,"title":6,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":10,"meta":9240,"navigation":12,"pageType":13,"path":14,"seo":9241,"slug":10,"stem":16,"__hash__":17},{"name":6},{},{"id":23,"title":24,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":25,"meta":9243,"navigation":12,"pageType":13,"path":27,"seo":9244,"slug":25,"stem":29,"__hash__":30},{"name":24},{},{"id":32,"title":33,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":34,"meta":9246,"navigation":12,"pageType":13,"path":36,"seo":9247,"slug":34,"stem":38,"__hash__":39},{"name":33},{},{"id":41,"title":42,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":43,"meta":9249,"navigation":12,"pageType":13,"path":45,"seo":9250,"slug":43,"stem":47,"__hash__":48},{"name":42},{},{"id":50,"title":51,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":52,"meta":9252,"navigation":12,"pageType":13,"path":54,"seo":9253,"slug":52,"stem":56,"__hash__":57},{"name":51},{},{"id":59,"title":60,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":61,"meta":9255,"navigation":12,"pageType":13,"path":63,"seo":9256,"slug":61,"stem":65,"__hash__":66},{"name":60},{},{"id":68,"title":69,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":70,"meta":9258,"navigation":12,"pageType":13,"path":72,"seo":9259,"slug":70,"stem":74,"__hash__":75},{"name":69},{},[9261,9264,9267,9270,9273,9276,9279],{"id":5,"title":6,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":10,"meta":9262,"navigation":12,"pageType":13,"path":14,"seo":9263,"slug":10,"stem":16,"__hash__":17},{"name":6},{},{"id":23,"title":24,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":25,"meta":9265,"navigation":12,"pageType":13,"path":27,"seo":9266,"slug":25,"stem":29,"__hash__":30},{"name":24},{},{"id":32,"title":33,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":34,"meta":9268,"navigation":12,"pageType":13,"path":36,"seo":9269,"slug":34,"stem":38,"__hash__":39},{"name":33},{},{"id":41,"title":42,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":43,"meta":9271,"navigation":12,"pageType":13,"path":45,"seo":9272,"slug":43,"stem":47,"__hash__":48},{"name":42},{},{"id":50,"title":51,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":52,"meta":9274,"navigation":12,"pageType":13,"path":54,"seo":9275,"slug":52,"stem":56,"__hash__":57},{"name":51},{},{"id":59,"title":60,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":61,"meta":9277,"navigation":12,"pageType":13,"path":63,"seo":9278,"slug":61,"stem":65,"__hash__":66},{"name":60},{},{"id":68,"title":69,"body":7,"description":7,"extension":8,"lang":9,"localizedSlug":70,"meta":9280,"navigation":12,"pageType":13,"path":72,"seo":9281,"slug":70,"stem":74,"__hash__":75},{"name":69},{},1776340306164]