[{"data":1,"prerenderedAt":1065},["ShallowReactive",2],{"article-kitsu-new-features-en":3,"tags-header-en":46,"tags-posts-en":121,"tags-footer-en":1036},{"id":4,"title":5,"authors":6,"body":12,"description":12,"extension":17,"html":18,"meta":19,"navigation":36,"path":39,"published_at":25,"seo":40,"slug":41,"stem":42,"tags":43,"__hash__":45,"uuid":20,"comment_id":21,"feature_image":22,"featured":23,"visibility":24,"created_at":25,"updated_at":26,"custom_excerpt":27,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":28,"primary_tag":29,"url":34,"excerpt":27,"reading_time":35,"access":36,"comments":23,"og_image":37,"og_title":5,"og_description":27,"twitter_image":37,"twitter_title":5,"twitter_description":27,"meta_title":12,"meta_description":38,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:kitsu-new-features.json","Kitsu New Features",[7],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"5fe9b27094f20f00398a1673","Gwénaëlle Dupré","gwen","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2020/12/profile_pics.png",null,"Product Manager at CGWire","Paris, France","@gelnior","https://blog.cg-wire.com/author/gwen/","json","\u003Cp>We’ve been busy over the past few months building Kitsu 0.8! In this article you will find all the recent additions we made to Kitsu our production tracker!\u003C/p>\u003Ch3 id=\"new-features\">New features\u003C/h3>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-uD8VJiqcu1zMZou_.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"pictures-videos-annotation\">Pictures/videos annotation\u003C/h4>\u003Cp>The biggest news is that you can now annotate your previews. Whether it’s a picture or a video you will be able to add your drawings! You can use Kitsu to pinpoint details without writing long texts!\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-Juzt8rgFeCVp33_H.gif\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-ROyfWGgw1Kb-v8xr.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"we-are-tv-show-ready-\">We are TV-Show ready!\u003C/h4>\u003Cp>Kitsu can now handle episodes and a larger amount of shots and assets! When creating a new production, select the TV Show type. Then you will be able to separate shots and assets by episodes.\u003C/p>\u003Cp>It was the opportunity too to improve the navigation. Drop down menus are now available on all the pages related to current production. They allow you to switch from production, episodes or entities at any time!\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-OPYgq1KhYBvOpynX.gif\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-N5Jn1fTPMERrkuEP.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"team-section\">Team section\u003C/h4>\u003Cp>You can allocate CG artists and supervisors to dedicated productions. This way they can only see productions they are part of. Studio managers can still see every production.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-IO873gQ96bpvmG1x.gif\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-iUGi1g7iau8-5rog.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"time-sheets\">Time sheets\u003C/h4>\u003Cp>You won’t have to stay behind your CG artists and take note of everything they are doing anymore. The CG artists will now be able to easily fill the time sheet by themselves. Their only task will be to set a number of hours on each task they are assigned to.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-mATXWeUsRFX5ZyAH.gif\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-4zETTqfPfhzKDYbn.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"production-information\">Production information\u003C/h4>\u003Cp>We added more information on the production level like \u003Cem>fps\u003C/em>, \u003Cem>ratio, \u003C/em>and r\u003Cem>esolution\u003C/em>. Now the CG artists won’t have to guess or keep asking this information to their supervisors. Moreover, you won’t have to hang them above every desk anymore!\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-nkQYtH9fZTupAvX7.gif\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-23CMBsrClUh86PBX.png\" class=\"kg-image\" alt loading=\"lazy\">\u003C/figure>\u003Ch4 id=\"delete-function\">Delete function\u003C/h4>\u003Cp>You can force the removal of a shot or an asset without having to delete all their tasks anymore. You can also go beyond the cancellation and remove them definitely. Safety first but clarity is important too!\u003C/p>\u003Cp>That’s it! We hope you will all enjoy these new features. More goodness is on the way. Stay tuned!\u003C/p>\u003Cp>\u003Cem>At CGWire, we develop a production tracker named Kitsu. It’s here to help the production by managing all the heavy lifting for you:\u003C/em>\u003C/p>\u003Cul>\u003Cli>\u003Cem>Task dispatching\u003C/em>\u003C/li>\u003Cli>\u003Cem>Preview validations (publish, comments and retakes)\u003C/em>\u003C/li>\u003Cli>\u003Cem>Breakdown management\u003C/em>\u003C/li>\u003Cli>\u003Cem>Time tracking\u003C/em>\u003C/li>\u003Cli>\u003Cem>Easy deployment to the whole studio\u003C/em>\u003C/li>\u003Cli>\u003Cem>Instant sharing\u003C/em>\u003C/li>\u003Cli>\u003Cem>Up-to-date production reports\u003C/em>\u003C/li>\u003C/ul>\u003Cp>\u003Cem>If you are interested, ask for \u003C/em>\u003Ca href=\"https://cg-wire.com/?ref=blog.cg-wire.com\" rel=\"nofollow noopener noopener\">\u003Cem>a trial instance\u003C/em>\u003C/a>\u003Cem> and give us your feelings about what we do!\u003C/em>\u003C/p>",{"uuid":20,"comment_id":21,"feature_image":22,"featured":23,"visibility":24,"created_at":25,"updated_at":26,"custom_excerpt":27,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":28,"primary_tag":29,"url":34,"excerpt":27,"reading_time":35,"access":36,"comments":23,"og_image":37,"og_title":5,"og_description":27,"twitter_image":37,"twitter_title":5,"twitter_description":27,"meta_title":12,"meta_description":38,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"b2c8c85b-41e4-4e95-aaf2-5e1241415978","be0cf87a796a","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/0-uD8VJiqcu1zMZou_.png",false,"public","2018-12-03T08:36:01.000+01:00","2021-01-14T14:40:04.000+01:00","We’ve been busy over the past few months building Kitsu 0.8! In this article you will find all the recent additions we made to Kitsu our…",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"5fff0e3c653a0c003924f7ee","Company News","company","https://blog.cg-wire.com/tag/company/","https://blog.cg-wire.com/kitsu-new-features/",3,true,"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/1080/0-uD8VJiqcu1zMZou_.png","We’ve been busy over the past few months building Kitsu 0.8! In this article you will find all the recent additions we made to Kitsu our production tracker! The biggest news is that you can now…","/posts/kitsu-new-features",{"title":5},"kitsu-new-features","posts/kitsu-new-features",[44],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"VtY4Lk6iXUj37BOsHPVfpT1WKd36pJWAtNndgaaetdo",[47,58,67,77,88,100,111],{"id":48,"title":49,"body":12,"description":12,"extension":17,"meta":50,"name":49,"navigation":36,"path":54,"seo":55,"slug":56,"stem":56,"__hash__":57},"tag/blender.json","Blender",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":51,"url":53},{"posts":52},15,"https://blog.cg-wire.com/tag/blender/","/blender",{"description":12},"blender","NGhuNL5GEEpGrAt0Y1hoiAFOBRkB8zKBFq90XcJR47E",{"id":59,"title":60,"body":12,"description":12,"extension":17,"meta":61,"name":31,"navigation":36,"path":64,"seo":65,"slug":32,"stem":32,"__hash__":66},"tag/company.json","Company",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":62,"url":33},{"posts":63},35,"/company",{"description":12},"CSg2BLNemwEASf_RYxGHsJOXTxg3xNUldTg2Upc7ZC0",{"id":68,"title":69,"body":12,"description":12,"extension":17,"meta":70,"name":69,"navigation":36,"path":73,"seo":74,"slug":75,"stem":75,"__hash__":76},"tag/customer-stories.json","Customer Stories",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":71,"url":72},{"posts":35},"https://blog.cg-wire.com/tag/customer-stories/","/customer-stories",{"description":12},"customer-stories","vO2w4OuionBXR7-dsFeWvCucjpG7VuCqGV3NZOYyVw0",{"id":78,"title":79,"body":12,"description":12,"extension":17,"meta":80,"name":83,"navigation":36,"path":84,"seo":85,"slug":86,"stem":86,"__hash__":87},"tag/glossary.json","Glossary",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":81,"url":82},{"posts":52},"https://blog.cg-wire.com/tag/glossary/","Animation Glossary","/glossary",{"description":12},"glossary","ahYw1ulGqHh4X1VqtWmRXHQzLH25NsXPHgKJ8kwOMwA",{"id":89,"title":90,"body":12,"description":12,"extension":17,"meta":91,"name":95,"navigation":36,"path":96,"seo":97,"slug":98,"stem":98,"__hash__":99},"tag/pipeline.json","Pipeline",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":92,"url":94},{"posts":93},77,"https://blog.cg-wire.com/tag/pipeline/","Pipeline Automation","/pipeline",{"description":12},"pipeline","qa7lmThepbMYAJ--m7WHgcY7p9lpC51BDn7imjnLoHY",{"id":101,"title":102,"body":12,"description":12,"extension":17,"meta":103,"name":102,"navigation":36,"path":107,"seo":108,"slug":109,"stem":109,"__hash__":110},"tag/production-management.json","Production Management",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":104,"url":106},{"posts":105},52,"https://blog.cg-wire.com/tag/production-management/","/production-management",{"description":12},"production-management","CK3g20iyLvLAN6TiR91N008bRCUY5R5T0A-dnAm-nfI",{"id":112,"title":113,"body":12,"description":12,"extension":17,"meta":114,"name":113,"navigation":36,"path":117,"seo":118,"slug":119,"stem":119,"__hash__":120},"tag/resources.json","Resources",{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":115,"url":116},{"posts":35},"https://blog.cg-wire.com/tag/resources/","/resources",{"description":12},"resources","uMVK_T3_oD87qJ7NOx5cVBCT5uXC9zFj44ZZatYH5RQ",{"blender":122,"company":274,"customer-stories":413,"glossary":546,"pipeline":684,"production-management":817,"resources":952},[123,160,189,218,247],{"id":124,"title":125,"authors":126,"body":12,"description":12,"extension":17,"html":132,"meta":133,"navigation":36,"path":148,"published_at":149,"seo":150,"slug":151,"stem":152,"tags":153,"__hash__":157,"uuid":134,"comment_id":135,"feature_image":136,"featured":23,"visibility":24,"created_at":137,"updated_at":138,"custom_excerpt":139,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":158,"primary_tag":159,"url":145,"excerpt":139,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":147},"ghost/posts:self-hosted-blender-render-farm.json","Self-Hosting a Blender Render Farm Using Flamenco In 2026",[127],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"630632b2ca5910003d4a70af","Basile Samel","basile","https://blog.cg-wire.com/author/basile/","\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🖥️\u003C/div>\u003Cdiv class=\"kg-callout-text\">Turn idle machines into a powerful Blender render farm without touching the cloud.\u003C/div>\u003C/div>\u003Cp>When was the last time you almost missed a deadline because of rendering?\u003C/p>\u003Cp>Every time you open Blender, your workstation sounds like a jet engine preparing for takeoff, and your entire film worth months of work is held hostage by a single progress bar.\u003C/p>\u003Cp>Meanwhile, your old college laptop sits in a box gathering dust. It's not a powerhouse, but it has a GPU. It has RAM. It's a perfectly functional computer doing absolutely nothing while you panic.\u003C/p>\u003Cp>The concept of a \"render farm\" can sound intimidating to one-person studios. You might imagine server racks in a chilled room, expensive licenses, and IT professionals shouting about IP addresses.\u003C/p>\u003Cp>But in the modern Blender ecosystem, that's no longer the reality.\u003C/p>\u003Cp>In this article, \u003Cstrong>I'm going to walk you through how to turn old devices into a unified rendering system using \u003Cem>Flamenco\u003C/em>.\u003C/strong> We will demystify the network setup and get you rendering on multiple machines in a few hours.\u003C/p>\u003Chr>\u003Ch2 id=\"why-self-host-a-render-farm\">Why Self-Host a Render Farm?\u003C/h2>\u003Cp>Before we start plugging in Ethernet cables, let's talk about why you should bother. You might think, \"Why not just send everything to a cloud farm?\" Cloud farms are amazing, but having a local, self-hosted render farm changes your workflow in three fundamental ways.\u003C/p>\u003Cp>When you pay for a cloud farm, you are paying for the final output. \u003Ca href=\"https://blog.cg-wire.com/blender-kitsu-low-res-preview/\">This psychologically discourages you from test rendering\u003C/a>. \u003Cstrong>You become afraid to hit \"Render\" until you are 100% sure everything is perfect.\u003C/strong>\u003C/p>\u003Cp>When you own the farm, the cost of a render is electricity. \u003Ca href=\"https://blog.cg-wire.com/getting-started-with-blender-rendering/\">You can render a rough animation\u003C/a> at 50% resolution just to check the timing or lighting. \u003Cstrong>This freedom allows you to iterate faster.\u003C/strong> You stop guessing and start testing.\u003C/p>\u003Cp>Sometimes, working on a commercial project for a tech client with an NDA is so strict you aren't allowed to even whisper the product name. \u003Cstrong>Uploading those assets to a third-party cloud server - even a secure one - can sometimes violate strict NDA contracts.\u003C/strong> Keeping your data on your local network (LAN) ensures that no pixels leave your studio until you say so.\u003C/p>\u003Cp>There is a specific kind of agony in uploading a 2GB project file to the cloud, waiting for it to render, downloading the frames, and realizing you left a physics cache unbaked. \u003Cstrong>With a local farm like Flamenco, if you spot a mistake, you just hit \"Cancel,\" fix it, and hit \"Render\" again. No upload times, no download times.\u003C/strong> It feels like an extension of your workstation.\u003C/p>\u003Chr>\u003Ch2 id=\"what-is-blender-flamenco\">What is Blender Flamenco?\u003C/h2>\u003Cp>Setting up a render farm from scratch \u003Ca href=\"https://blog.cg-wire.com/blender-programmatic-rendering/\">used to involve complex scripting\u003C/a> or expensive third-party software. Now, we have Blender Flamenco.\u003C/p>\u003Cp>\u003Cstrong>Flamenco is Blender's open-source render farm.\u003C/strong> It's extremely easy to setup: the manager is the brain holding the list of tasks (frames to render) and tells the other computers what to do. The workers are your extra laptops or desktops. They listen to the Manager, ask for a frame, render it, save it, and ask for another.\u003C/p>\u003Cp>Flamenco is designed to be zero-config. It practically discovers itself on your network. If you can install Blender, you can set up Flamenco.\u003C/p>\u003Chr>\u003Ch2 id=\"1-the-setup\">1. The Setup\u003C/h2>\u003Cp>For this tutorial, we start with the simplest configuration possible with our desktop computer acting both as manager and worker. We'll later see how to add our laptop.\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Install Blender\u003C/strong> - Ensure your computer has Blender installed.\u003C/li>\u003Cli>\u003Cstrong>Download Flamenco\u003C/strong> - Go to the Flamenco website and download the package for your OS. Extract it to a folder.\u003C/li>\u003C/ol>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1064\" height=\"721\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-cec7140f-c6aa-4e18-83fb-be86e5a39ac7.png 1064w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"2-run-flamenco-manager\">2. Run Flamenco Manager\u003C/h2>\u003Col>\u003Cli>Open the Flamenco folder you extracted.\u003C/li>\u003Cli>Double-click \u003Ccode>flamenco-manager\u003C/code>.\u003C/li>\u003Cli>A terminal window will pop up with some text logs.\u003C/li>\u003Cli>Go through the configuration wizard to set up the job folder where you'll upload your blend files to render.\u003C/li>\u003Cli>Shortly after, your web browser should open automatically to \u003Ccode>http://localhost:8080\u003C/code>. This is the Flamenco web interface.\u003C/li>\u003C/ol>\u003Cp>If you see a friendly, dark-themed dashboard, congratulations. You are half a server admin already. The Manager is alive.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1319\" height=\"821\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-ac803a05-e189-4c17-9fe9-d5749f916aa0.png 1319w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>The manager will tell you to download the addon. Do it now as we'll need it for step 4.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1064\" height=\"721\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-ccd6a3fb-4abd-469e-a566-5adfddf76196.png 1064w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"3-the-worker\">3. The Worker\u003C/h2>\u003Cp>Now, leave the manager running and double-click \u003Ccode>flamenco-worker\u003C/code>.\u003C/p>\u003Cp>That's it.\u003C/p>\u003Cp>The Worker will scan your local network, find the Manager running on the same computer, and introduce itself. If you look back at your Desktop's web browser (the Manager interface), you should see it appear in the \"Workers\" tab, listed as \"Idle\" and ready for duty.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1319\" height=\"821\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-6bad58f1-615a-4a7b-8aff-38f07279ebe0.png 1319w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>You should also run \u003Ccode>flamenco-worker\u003C/code> on your Desktop! Your main computer can render and manage at the same time.\u003C/p>\u003Chr>\u003Ch2 id=\"4-add-the-blend-file-and-render\">4. Add the Blend File and Render\u003C/h2>\u003Cp>The stage is set. Now, we can get to work!\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Open Blender\u003C/strong> on your Desktop.\u003C/li>\u003Cli>\u003Cstrong>Enable the Addon\u003C/strong> - Go to Edit &gt; Preferences &gt; Add-ons &gt; Install from Disk. Search for the flamenco zip file you downloaded during the manager setup.\u003C/li>\u003Cli>\u003Cstrong>Link the Manager\u003C/strong> - In the Flamenco add-on preferences, copy/paste the manager's URL address.\u003C/li>\u003Cli>\u003Cstrong>Save Your File\u003C/strong> - Save your \u003Ccode>.blend\u003C/code> file in the configured job folder.\u003C/li>\u003C/ol>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"724\" height=\"732\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-88504c81-44cf-4d32-a374-0b2dc6746b56.png 724w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>In the Render Properties tab in Blender, scroll down to the \u003Cstrong>Flamenco\u003C/strong> panel.\u003C/p>\u003Col>\u003Cli>Click \u003Cstrong>\"Fetch Job Types\"\u003C/strong>.\u003C/li>\u003Cli>Select \u003Cstrong>\"Simple Render\"\u003C/strong>.\u003C/li>\u003Cli>Hit \u003Cstrong>\"Submit to Flamenco\"\u003C/strong>.\u003C/li>\u003C/ol>\u003Cp>Now, tab over to your web browser. You will see the job pop up. The status bars on your \"Workers\" list will turn green. Your Desktop will grab one frame to render at a time.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1319\" height=\"918\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-6e7fa2fb-b997-4f6f-ba60-bcc3c70d5bb0.png 1319w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"5-bringing-in-the-laptop\">5. Bringing in the Laptop\u003C/h2>\u003Cp>Now, to add your dusty laptop to the farm.\u003C/p>\u003Cp>Here is the single most actionable piece of advice I can give you, and it is where 90% of beginners fail: \u003Cstrong>All computers must see the files in the exact same place.\u003C/strong>\u003C/p>\u003Cp>If your texture is located at \u003Ccode>C:\\Users\\Dave\\Texture.png\u003C/code> on your desktop, your laptop \u003Cem>cannot\u003C/em> access that path. The laptop doesn't have a user named Dave, and it doesn't have the file on its C drive.\u003C/p>\u003Cp>You need a shared network folder, typically through a NAS. Depending on your operating system, the steps are similar but will slightly differ:\u003C/p>\u003Col>\u003Cli>Connect your desktop and laptop via Ethernet cable\u003C/li>\u003Cli>Create a NAS folder on your Desktop called \u003Ccode>RenderFarm\u003C/code>.\u003C/li>\u003Cli>Right-click it &gt; \u003Cstrong>Properties\u003C/strong> &gt; \u003Cstrong>Sharing\u003C/strong> &gt; \u003Cstrong>Share\u003C/strong>. Give read/write permission to your user.\u003C/li>\u003Cli>\u003Cstrong>Map the Network Drive:\u003C/strong> On your Desktop, map this folder to a drive letter, say \u003Ccode>Z:\u003C/code>. On your Laptop, navigate to the Desktop's network share and map it to **the same letter \u003Ccode>Z:**\u003C/code>.\u003C/li>\u003C/ol>\u003Cp>Now, when you save your Blender file to \u003Ccode>Z:\\RenderFarm\\MyProject.blend\u003C/code>, both computers see it at \u003Ccode>Z:\\RenderFarm\\MyProject.blend\u003C/code>. The path is absolute and identical.\u003C/p>\u003Cp>Now, leave the Desktop running and move over to \u003Cstrong>Computer B (Laptop)\u003C/strong>.\u003C/p>\u003Col>\u003Cli>Make sure your \u003Ccode>Z:\u003C/code> drive (or whatever shared storage you set up) is accessible. Open a file inside it just to be sure.\u003C/li>\u003Cli>Install and open the Flamenco folder on the laptop.\u003C/li>\u003Cli>Make sure you have the same Blender version installed as the one on your desktop.\u003C/li>\u003Cli>Double-click \u003Ccode>flamenco-worker\u003C/code>.\u003C/li>\u003C/ol>\u003Cp>That's it.\u003C/p>\u003Cp>The Worker will scan your local network and find the Manager running on the Desktop.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1504\" height=\"932\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-90501d50-29c3-4d8f-9b54-511e6c674739.png 1504w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Flamenco will now automatically orchestrate jobs between your computers.\u003C/p>\u003Cp>If you do not have access to a NAS or do not wish to purchase one, you can have a look at installing a free Samba server on a Linux workstation. Using cloud storage isn't possible because Flamenco doesn't handle asynchronous services, unless you create your own custom job type. We'll see how to do that \u003Ca href=\"https://blog.cg-wire.com/\">in a future article\u003C/a>, using Kitsu as an asynchronous \u003Ca href=\"https://blog.cg-wire.com/animation-asset-storage/\">asset storage server\u003C/a>.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion-knowing-when-to-scale\">Conclusion: Knowing When to Scale\u003C/h2>\u003Cp>We have covered the hardware setup, the crucial shared storage logic, and the software installation. If you have followed along, \u003Cstrong>you have a functioning render farm in your house and your dusty laptop is now a productive member of your team.\u003C/strong>\u003C/p>\u003Cp>Flamenco makes the barrier to entry for self-hosted rendering incredibly low. It respects your privacy, costs nothing but electricity, and allows you to squeeze every ounce of performance out of the hardware you already own.\u003C/p>\u003Cp>But there is a limit on what you can achieve by yourself.\u003C/p>\u003Cp>Eventually, you will hit a deadline where even your Desktop + Laptop combo isn't enough. Maybe you need to render a 4K sequence with heavy volumetrics in 24 hours and your home farm estimates a completion time of 3 weeks. This is the ceiling of self-hosting.\u003C/p>\u003Cp>When you hit this wall, you don't need to buy five more computers. \u003Cstrong>That's when you transition to a service like Ranch Computing\u003C/strong> that allows you to access hundreds of CPU/GPU nodes instantly. Your home farm is a great daily driver that's perfect for tests, previews, and lighter projects, while a cloud render farm is invaluable for quickly rendering high-quality deliverables to your clients.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":134,"comment_id":135,"feature_image":136,"featured":23,"visibility":24,"created_at":137,"updated_at":138,"custom_excerpt":139,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":142,"primary_tag":143,"url":145,"excerpt":139,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":147},"80ad6c13-1312-46ac-a74b-94e022668680","695bb702c665470001df4dcd","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","2026-01-05T14:05:06.000+01:00","2026-02-20T06:04:52.000+01:00","Learn how to build a self-hosted Blender render farm using Flamenco. This guide walks through setup, shared storage, workers, and scaling strategies to help artists render faster using the hardware they already own.","\u003C!-- Prism.js theme (syntax colors) -->\n\u003Clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css\">\n\n\u003C!-- Toolbar plugin styles (for the Copy button) -->\n\u003Clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.css\">\n\n\u003C!-- (Optional) Line-numbers styles -->\n\u003C!-- \u003Clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.css\"> -->\n\n\u003Cstyle>\n/* Tweak code block appearance a bit (keeps theme styles intact) */\npre[class*=\"language-\"] {\n  border-radius: 8px;\n  overflow: auto;\n}\n\n/* ✅ Always wrap long lines (no horizontal scroll needed) */\npre[class*=\"language-\"],\npre[class*=\"language-\"] code {\n  white-space: pre-wrap;    /* preserve indentation but allow wrapping */\n  word-break: break-word;   /* break long tokens if needed */\n  overflow-wrap: anywhere;  /* last-resort wrapping */\n}\n\n/* Improve toolbar (Copy button) spacing/looks */\ndiv.code-toolbar > .toolbar {\n  opacity: 1;\n  right: 6px;\n  top: 6px;\n}\ndiv.code-toolbar > .toolbar .toolbar-item > button {\n  background: #1f2937;\n  color: #fff;\n  border-radius: 6px;\n  padding: 6px 10px;\n  font-size: 12px;\n}\ndiv.code-toolbar > .toolbar .toolbar-item > button:hover {\n  filter: brightness(1.1);\n}\n\n/* (Optional) Auto line numbers on all code blocks\n   If you want line numbers, uncomment both this and the CSS/JS includes above/below. */\n/*\npre[class*=\"language-\"] {\n  padding-left: 3.25em;\n}\n*/\n\u003C/style>","\u003C!-- Prism core -->\n\u003Cscript defer src=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js\">\u003C/script>\n\u003Cscript defer src=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js\">\u003C/script>\n\n\u003C!-- Toolbar + Copy-to-Clipboard plugins -->\n\u003Cscript defer src=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/toolbar/prism-toolbar.min.js\">\u003C/script>\n\u003Cscript defer src=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js\">\u003C/script>\n\n\u003C!-- (Optional) Line-numbers plugin -->\n\u003C!-- \u003Cscript defer src=\"https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js\">\u003C/script> -->\n\n\u003Cscript>\n  // Configure autoloader to fetch language definitions (bash, python, etc.)\n  window.Prism = window.Prism || {};\n  Prism.plugins = Prism.plugins || {};\n  Prism.plugins.autoloader = Prism.plugins.autoloader || {};\n  Prism.plugins.autoloader.languages_path = 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/';\n\n  // OPTIONAL: If you want line numbers on every block automatically, uncomment:\n  /*\n  document.addEventListener('DOMContentLoaded', function () {\n    document.querySelectorAll('pre > code').forEach(function (code) {\n      const pre = code.parentElement;\n      pre.classList.add('line-numbers');\n    });\n  });\n  */\n\u003C/script>",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"5fff0e54653a0c003924f7f2","https://blog.cg-wire.com/self-hosted-blender-render-farm/",7,"\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@scottrodgerson?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Scott Rodgerson\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/self-hosted-blender-render-farm","2026-01-19T10:00:41.000+01:00",{"title":125},"self-hosted-blender-render-farm","posts/self-hosted-blender-render-farm",[154,155],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"69c20ddbcb09d8000107cfe5","DCPLn1PWShGHKlv5NXuil2qtBDL7tnabWDmi33KjLoc",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":161,"title":162,"authors":163,"body":12,"description":12,"extension":17,"html":165,"meta":166,"navigation":36,"path":178,"published_at":179,"seo":180,"slug":181,"stem":182,"tags":183,"__hash__":186,"uuid":167,"comment_id":168,"feature_image":169,"featured":23,"visibility":24,"created_at":170,"updated_at":171,"custom_excerpt":172,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":187,"primary_tag":188,"url":175,"excerpt":172,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":177},"ghost/posts:blender-shaders-explained.json","Working with Blender Shaders (2026): Nodes & Scripting",[164],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🎨\u003C/div>\u003Cdiv class=\"kg-callout-text\">Shaders are not magic, they’re visual recipes you can control and automate.\u003C/div>\u003C/div>\u003Cp>It's easy to panic the first time you hear the word \u003Cem>shader\u003C/em>. Someone mentions GLSL, GPUs start sweating, and suddenly you're imagining walls of unreadable code and your computer fan screaming for mercy.\u003C/p>\u003Cp>oHere's the part no one tells you early enough: you don't need to be a mathematician or a graphics programmer to work with shaders. You're not required to write low-level GPU code or understand every equation behind light physics. Blender doesn't expect that from you. Instead, it gives you nodes: visual building blocks that behave more like Lego than code. You plug things together, see the result instantly, and adjust until it feels right.\u003C/p>\u003Cp>Think of shaders less as code and more as recipes. You're mixing values, textures, and logic to describe how a surface should react to light. Sometimes you'll follow a known recipe, sometimes you'll improvise, and sometimes you'll break things just to see what happens. It's how you'll learn.\u003C/p>\u003Cp>\u003Cstrong>In this article, we're going to demystify what shading actually is, strip away the fear around it, and explore how to manipulate shaders procedurally using Blender's node system or a bit of scripting for an animation pipeline.\u003C/strong> By the end, shading won't feel like a forbidden room anymore.\u003C/p>\u003Chr>\u003Ch2 id=\"whats-a-shader\">\u003Cstrong>What's a Shader?\u003C/strong>\u003C/h2>\u003Cp>To understand shaders, we have to stop thinking about \"colors\" and start thinking about \"physics.\"\u003C/p>\u003Cp>\u003Ca href=\"https://blog.cg-wire.com/hard-surface-modeling/\">\u003Cu>If you paint a wooden chair red in the real world\u003C/u>\u003C/a>, you aren't just changing its color. You are adding a layer of material that interacts with light. That red paint has a specific roughness (how much it scatters light), a specific specularity (how shiny it is), and a specific refractive index.\u003C/p>\u003Cp>\u003Cstrong>A shader is a set of instructions that tells the computer how to simulate that light interaction.\u003C/strong>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"1067\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-296bf085-924e-40f9-92fc-346c5dc31de0.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Source: TurboSquid\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>When a ray of light from your digital sun hits the surface of your object, the shader steps in and asks:\u003C/p>\u003Cul>\u003Cli>\"Are you bouncing off?\" (Reflection)\u003C/li>\u003Cli>\"Are you going through?\" (Transmission/Glass)\u003C/li>\u003Cli>\"Are you getting trapped inside?\" (Absorption)\u003C/li>\u003Cli>\"Are you scattering under the skin?\" (Subsurface Scattering)\u003C/li>\u003C/ul>\u003Cp>If you're modeling a wet cobblestone street, a simple image texture makes it look like a flat photo of a street. A shader tells the renderer that the water in the cracks is perfectly reflective and smooth, while the stone is rough and dull. It tells the light to bounce differently off the wet parts than the dry parts.\u003Ca href=\"https://blog.cg-wire.com/how-light-shapes-emotion-in-animation/\"> \u003Cu>Light shapes reality.\u003C/u>\u003C/a>\u003C/p>\u003Chr>\u003Ch2 id=\"why-you-must-master-shader-nodes\">\u003Cstrong>Why You Must Master Shader Nodes\u003C/strong>\u003C/h2>\u003Cp>You might ask, \"Why not just download textures?\"\u003C/p>\u003Cp>Photo-scanning is great, but procedural shading gives you three superpowers that static images cannot match.\u003C/p>\u003Cp>When you use an image texture (a JPG or PNG), you are limited by pixels. Zoom in too close to a wall, and it becomes blurry.\u003C/p>\u003Cp>Shaders use math. \u003Cstrong>Math has no resolution limit.\u003C/strong> You can zoom into a procedural scratch on metal until you see the microscopic grooves, and it will remain crisp. Even if you have a model you're proud of, with clean topology and nice proportions, it'll still look flat without shaders.\u003C/p>\u003Cp>Blender's shader nodes make it \u003Cstrong>easy to tweak your textures in a consistent way\u003C/strong>. Let's say you are texturing a spaceship: you paint rust onto the hull using a texture map. Your Art Director walks in and says, \"Great, but the ship looks too old. Reduce the rust by 50%.\" If you hand-painted that, you have to start over or spend hours erasing. With shader nodes, you simply locate the \"Rust Amount\" value you created and slide it from \u003Ccode>1.0\u003C/code> to \u003Ccode>0.5\u003C/code>. Done.\u003C/p>\u003Cp>Static textures look frozen, but \u003Cstrong>shaders can also be animated\u003C/strong>. You can build a shader setup where moss grows on a rock over time based on the frame number, or where a shield glows brighter as it gets hit. Shaders allow your materials to react to the environment.\u003C/p>\u003Cp>For all these reasons, learning to master shader nodes is an incredible unlock for professional artists working with tight deadlines.\u003C/p>\u003Chr>\u003Ch2 id=\"the-different-types-of-shader-nodes\">\u003Cstrong>The Different Types of Shader Nodes\u003C/strong>\u003C/h2>\u003Cp>Blender's node system works like a flow chart. You click \u003Ccode>Add\u003C/code> to add nodes and connect them together. Data flows from left to right. To understand how to leverage each feature, you need to understand the different node types available.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"900\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-2573386d-adc9-4979-a848-89d1cae3645e.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"1-input-nodes\">\u003Cstrong>1. Input Nodes\u003C/strong>\u003C/h3>\u003Cp>Input nodes provide data from the scene, object, geometry, or user-defined values into the shader network.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Texture Coordinate\u003C/strong> - Provides UV, object, generated, and camera coordinates + use UV output to correctly map an image texture onto a UV-unwrapped model\u003C/li>\u003Cli>\u003Cstrong>Geometry\u003C/strong> - Outputs geometric information such as normals and pointiness + use Pointiness to create dirt accumulation in crevices\u003C/li>\u003Cli>\u003Cstrong>Fresnel\u003C/strong> - Calculates view-angle-based reflectivity + use it to create stronger reflections on the edges of glass\u003C/li>\u003Cli>\u003Cstrong>Object Info\u003C/strong> - Supplies per-object data like random values or object color + use Random output to give each object a slightly different color\u003C/li>\u003Cli>\u003Cstrong>Value\u003C/strong> - Outputs a constant numerical value + use it to control roughness with a single slider\u003C/li>\u003Cli>\u003Cstrong>Color\u003C/strong> - Outputs a constant color value + use it as a base color for a stylized material\u003C/li>\u003C/ul>\u003Ch3 id=\"2-output-nodes\">\u003Cstrong>2. Output Nodes\u003C/strong>\u003C/h3>\u003Cp>Output nodes define the final result of a shader and connect the node network to Blender’s rendering system.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Material Output\u003C/strong> - Outputs the final surface, volume, and displacement data + connect a Principled BSDF to the Surface input\u003C/li>\u003C/ul>\u003Ch3 id=\"3-shader-nodes\">\u003Cstrong>3. Shader Nodes\u003C/strong>\u003C/h3>\u003Cp>Shader nodes define how light interacts with a surface, including reflection, refraction, and emission.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Principled BSDF\u003C/strong> - Physically based all-in-one surface shader + create realistic metal, plastic, or skin materials\u003C/li>\u003Cli>\u003Cstrong>Diffuse BSDF\u003C/strong> - Produces matte, non-reflective surfaces + use for chalk, clay, or unpolished stone\u003C/li>\u003Cli>\u003Cstrong>Glossy BSDF\u003C/strong> - Produces mirror-like reflections + use for polished metal or mirrors\u003C/li>\u003Cli>\u003Cstrong>Glass BSDF\u003C/strong> - Combines refraction and reflection + use for windows or glass bottles\u003C/li>\u003Cli>\u003Cstrong>Emission\u003C/strong> - Emits light from a surface + use for screens, LEDs, or neon signs\u003C/li>\u003Cli>\u003Cstrong>Mix Shader\u003C/strong> - Blends two shader outputs + mix diffuse and glossy shaders for worn metal\u003C/li>\u003C/ul>\u003Ch3 id=\"4-displacement-nodes\">\u003Cstrong>4. Displacement Nodes\u003C/strong>\u003C/h3>\u003Cp>Displacement nodes alter surface detail by modifying geometry or shading normals.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Displacement\u003C/strong> - Performs true geometric displacement + create real depth in a brick wall using a height map (Cycles)\u003C/li>\u003Cli>\u003Cstrong>Bump\u003C/strong> - Simulates surface detail using normal perturbation + add fine scratches without increasing geometry\u003C/li>\u003Cli>\u003Cstrong>Normal Map\u003C/strong> - Converts normal textures into usable normal data + apply a baked normal map from a game asset\u003C/li>\u003C/ul>\u003Ch3 id=\"5-color-nodes\">\u003Cstrong>5. Color Nodes\u003C/strong>\u003C/h3>\u003Cp>Color nodes adjust, blend, and transform color information within the shader network.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Mix Color\u003C/strong> - Blends two colors or textures + mix a dirt texture over a clean base color\u003C/li>\u003Cli>\u003Cstrong>RGB Curves\u003C/strong> - Adjusts contrast and color balance + increase texture contrast without re-editing the image\u003C/li>\u003Cli>\u003Cstrong>Hue/Saturation\u003C/strong> - Modifies hue, saturation, and value + tint a material blue without repainting textures\u003C/li>\u003Cli>\u003Cstrong>Invert\u003C/strong> - Reverses color values + invert a roughness map to create a glossiness map\u003C/li>\u003C/ul>\u003Ch3 id=\"6-texture-nodes\">\u003Cstrong>6. Texture Nodes\u003C/strong>\u003C/h3>\u003Cp>Texture nodes generate or load image and procedural textures for materials.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Image Texture\u003C/strong> - Loads external image files + use an albedo map for a PBR material\u003C/li>\u003Cli>\u003Cstrong>Noise Texture\u003C/strong> - Generates smooth procedural noise + add subtle roughness variation to plastic\u003C/li>\u003Cli>\u003Cstrong>Voronoi Texture\u003C/strong> - Produces cell-based patterns + create cracks, scales, or stone tiles\u003C/li>\u003Cli>\u003Cstrong>Gradient Texture\u003C/strong> - Outputs smooth gradients + use as a mask for blending materials\u003C/li>\u003C/ul>\u003Ch3 id=\"7-utility-nodes\">\u003Cstrong>7. Utility Nodes\u003C/strong>\u003C/h3>\u003Cp>Utility nodes perform mathematical operations and data conversions.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Mapping\u003C/strong> - Transforms texture coordinates + scale and rotate a texture pattern\u003C/li>\u003Cli>\u003Cstrong>Math\u003C/strong> - Performs numerical operations + clamp roughness values to prevent extremes\u003C/li>\u003Cli>\u003Cstrong>Vector Math\u003C/strong> - Performs vector-based calculations + modify normal or direction vectors\u003C/li>\u003Cli>\u003Cstrong>Clamp\u003C/strong> - Limits values to a specified range + prevent over-bright emission values\u003C/li>\u003C/ul>\u003Ch3 id=\"8-group-nodes\">\u003Cstrong>8. Group Nodes\u003C/strong>\u003C/h3>\u003Cp>Group nodes package multiple nodes into reusable, organized components.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Node Group\u003C/strong> - Encapsulates complex node setups + create a reusable “Rust Shader” used across multiple assets\u003C/li>\u003C/ul>\u003Ch3 id=\"9-layout-nodes\">\u003Cstrong>9. Layout Nodes\u003C/strong>\u003C/h3>\u003Cp>Layout nodes organize the node graph visually and do not affect rendering output.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Frame\u003C/strong> - Visually groups related nodes + frame all texture-related nodes together\u003C/li>\u003Cli>\u003Cstrong>Reroute\u003C/strong> - Redirects node connections for clarity + clean up overlapping noodle connections\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"the-next-level-scripting-your-shaders\">\u003Cstrong>The Next Level: Scripting Your Shaders\u003C/strong>\u003C/h2>\u003Cp>When you get comfortable connecting nodes manually, you can make wood, plastic, gold, or any kind of material. But \u003Cstrong>what if you have a scene with 500 unique objects, and you need to generate a random variation\u003C/strong> of a worn metal material for each one with some tweaks?\u003C/p>\u003Cp>This is where Python scripting becomes key. You can use it to ensure every material in your project follows the same node structure. You can write a script that says, \"Make this material red, but vary the hue slightly by a random number for every object.\"\u003C/p>\u003Cp>Let's get our hands dirty. We are going to write a Python script that creates a new material, adds a Principled BSDF, generates a noise texture to control the color, and links it all up.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"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\u003C/a>\u003C/div>\u003C/div>\u003Cp>Open the \u003Cem>Scripting\u003C/em> tab in Blender, create a new text block, and follow along.\u003C/p>\u003Cp>First, we need to import the library and tell Blender we want to create a new material.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import random\n\nimport bpy\n\ndef create_procedural_material(mat_name):\n&nbsp;&nbsp;&nbsp;&nbsp;mat = bpy.data.materials.new(name=mat_name)\n\n&nbsp;&nbsp;&nbsp;&nbsp;mat.use_nodes = True\n&nbsp;&nbsp;&nbsp;&nbsp;nodes = mat.node_tree.nodes\n&nbsp;&nbsp;&nbsp;&nbsp;links = mat.node_tree.links\n\n&nbsp;&nbsp;&nbsp;&nbsp;nodes.clear()\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Now, let's add the nodes. Think of this as pulling items out of the \"Add\" menu programmatically:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">    node_output = nodes.new(type='ShaderNodeOutputMaterial')\n&nbsp;&nbsp;&nbsp;&nbsp;node_output.location = (400, 0)\n\n&nbsp;&nbsp;&nbsp;&nbsp;node_principled = nodes.new(type='ShaderNodeBsdfPrincipled')\n&nbsp;&nbsp;&nbsp;&nbsp;node_principled.location = (0, 0)\n\n&nbsp;&nbsp;&nbsp;&nbsp;node_principled.inputs['Roughness'].default_value = 0.2\n&nbsp;&nbsp;&nbsp;&nbsp;node_principled.inputs['Metallic'].default_value = 1.0\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Now, let's make it interesting. We will add a Noise Texture and a ColorRamp to generate a random color pattern.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">node_noise = nodes.new(type='ShaderNodeTexNoise')\n&nbsp;&nbsp;&nbsp;&nbsp;node_noise.location = (-600, 0)\n&nbsp;&nbsp;&nbsp;&nbsp;node_noise.inputs['Scale'].default_value = 15.0\n&nbsp;&nbsp;&nbsp;&nbsp;node_noise.inputs['Detail'].default_value = 10.0\n\n&nbsp;&nbsp;&nbsp;&nbsp;node_ramp = nodes.new(type='ShaderNodeValToRGB')\n&nbsp;&nbsp;&nbsp;&nbsp;node_ramp.location = (-300, 0)\n\n&nbsp;&nbsp;&nbsp;&nbsp;node_ramp.color_ramp.elements[0].color = (0.1, 0.1, 0.1, 1)\n\n&nbsp;&nbsp;&nbsp;&nbsp;rand_r = random.random()\n&nbsp;&nbsp;&nbsp;&nbsp;rand_g = random.random()\n&nbsp;&nbsp;&nbsp;&nbsp;rand_b = random.random()\n&nbsp;&nbsp;&nbsp;&nbsp;node_ramp.color_ramp.elements[1].color = (rand_r, rand_g, rand_b, 1)\u003C/code>\u003C/pre>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>Finally, we have to wire them together and apply this new shader to the current context (the default cube):\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">    links.new(node_noise.outputs['Fac'], node_ramp.inputs['Fac'])\n\n&nbsp;&nbsp;&nbsp;&nbsp;links.new(node_ramp.outputs['Color'], node_principled.inputs['Base Color'])\n\n&nbsp;&nbsp;&nbsp;&nbsp;links.new(node_principled.outputs['BSDF'], node_output.inputs['Surface'])\n\n&nbsp;&nbsp;&nbsp;&nbsp;return mat\n\nmy_new_mat = create_procedural_material(\"SciFi_Metal_Random\")\n\nbpy.context.object.data.materials.append(my_new_mat)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Copy that code into your text editor and press \"Run Script\" (the Play button). Look at your active object. It is now a metallic surface with a noise pattern of a random color. Run it again (change the name in the function call), and you get a different color.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1268\" height=\"827\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/01/data-src-image-99dc12fe-068b-40f7-9f10-ef0c5e000ba0.png 1268w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Congratulations, \u003Cstrong>you just created a procedural material generator!\u003C/strong>\u003C/p>\u003Cp>Have a look at\u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/blender-shaders?ref=blog.cg-wire.com\" rel=\"noreferrer\"> \u003Cu>our corresponding Github repository\u003C/u>\u003C/a> to play with the code!\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>Shaders are more than just coloring within the lines. They are the skin of your digital world. \u003Cstrong>They tell the story of the object\u003C/strong>: how old it is, where it has been, and what it is made of.\u003C/p>\u003Cp>By understanding the logic of shader nodes, \u003Cstrong>you can create anything from photorealistic skin to stylized cartoon fire\u003C/strong>. And by taking that leap into Python scripting, you unlock the ability to \u003Cstrong>work faster and smarter\u003C/strong>, automating the tedious parts of the job so you can focus on the art.\u003C/p>\u003Cp>But this is just one piece of the puzzle. You can change the surface, but what about the shape? The next logical step in your journey is \u003Cem>Geometry Nodes\u003C/em>. Just as Shader Nodes control the color and light procedurally, Geometry Nodes control the mesh and structure programmatically.\u003Ca href=\"https://blog.cg-wire.com/blender-scripting-geometry-nodes-2/\"> \u003Cu>Have a look at our dedicated article\u003C/u>\u003C/a> to create entire scenes from code!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":167,"comment_id":168,"feature_image":169,"featured":23,"visibility":24,"created_at":170,"updated_at":171,"custom_excerpt":172,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":173,"primary_tag":174,"url":175,"excerpt":172,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":177},"67a0028f-66b2-4116-ac34-040c8a14d052","695b7d1dc665470001df4d80","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","2026-01-05T09:58:05.000+01:00","2026-03-26T09:56:11.000+01:00","Learn how Blender shaders really work, from node-based materials to procedural shading and Python-driven automation. This guide breaks down shader concepts, node types, and scripting techniques to help artists build flexible, production-ready materials.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/blender-shaders-explained/",8,"\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@guerrillabuzz?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">GuerrillaBuzz\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/blender-shaders-explained","2026-01-05T10:35:18.000+01:00",{"title":162},"blender-shaders-explained","posts/blender-shaders-explained",[184,185],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"L9nHGKFoNkSSxbDZv_Z2mmZLxxHmhill232zPkpfpCE",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":190,"title":191,"authors":192,"body":12,"description":12,"extension":17,"html":194,"meta":195,"navigation":36,"path":207,"published_at":208,"seo":209,"slug":210,"stem":211,"tags":212,"__hash__":215,"uuid":196,"comment_id":197,"feature_image":198,"featured":23,"visibility":24,"created_at":199,"updated_at":200,"custom_excerpt":201,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":216,"primary_tag":217,"url":204,"excerpt":201,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":206},"ghost/posts:blender-programmatic-rendering.json","Programmatic Video Rendering in Blender Using Python (2026)",[193],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🧠\u003C/div>\u003Cdiv class=\"kg-callout-text\">Turn Blender into a programmable rendering engine with just a few lines of Python.\u003C/div>\u003C/div>\u003Cp>Learning Blender as a 3D artist usually means learning about its addon ecosystem. Tasks that would take hours like rigging a character can be turned into seconds with addons like Rigify. The same goes for most workflows, and we often end up asking ourselves the same recurring question: \"Can Blender do this automatically?\"\u003C/p>\u003Cp>The answer is yes. The key is the programming language Python.\u003C/p>\u003Cp>Blender includes a powerful built-in scripting engine, and with just a few lines of code, you can create objects, position cameras, and even trigger full renders.\u003C/p>\u003Cp>You won't need to pay for an addon if you know how to build one yourself. And at its core, an addon is just a script wrapped in a custom Blender user interface.\u003C/p>\u003Cp>If you've never scripted in Blender before, discovering the \u003Ccode>bpy\u003C/code> module feels like opening a secret door inside a tool you thought you already knew: suddenly, every part of the interface becomes programmable. You're not just clicking buttons anymore but giving instructions to build repeatable systems.\u003C/p>\u003Cp>One of the most important workflows you can automate is rendering. Not only to make your pipeline faster but also to help keep rendering settings consistent and predictable. In this tutorial, we'll implement a basic programmatic rendering system to automatically animate a 3D text and turn it into a full HD video. We'll start from zero, exploring how to run Python for Blender and how to use it to control the scene. By the end, you'll have a good overview of how to automate common animation tasks.\u003C/p>\u003Chr>\u003Ch2 id=\"use-cases\">\u003Cstrong>Use Cases\u003C/strong>\u003C/h2>\u003Cp>Programmatic rendering unlocks a wide range of powerful workflows that go far beyond traditional manual scene building:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Data-driven motion graphics\u003C/strong> — Animated charts, realtime API-driven broadcast graphics, or automatically generated social videos.\u003C/li>\u003Cli>\u003Cstrong>Generative art\u003C/strong> — Procedural patterns, noise fields, particle experiments, and algorithmic illustrations that evolve from code.\u003C/li>\u003Cli>\u003Cstrong>Batch-rendered variants\u003C/strong> — Personalized ads, product color variations, automated aspect-ratio crops, and bulk social asset generation.\u003C/li>\u003Cli>\u003Cstrong>Procedural 3D content\u003C/strong> — Terrain builders, parametric modeling, foliage/world population, and automated 3D asset variations.\u003C/li>\u003Cli>\u003Cstrong>Generative UI &amp; design systems\u003C/strong> — Dynamic SVGs, templated banners, and brand-consistent graphics rendered on demand.\u003C/li>\u003Cli>\u003Cstrong>VFX and animation scripting\u003C/strong> — Automated rig controls, crowd systems, particle population, and repeatable simulation setups.\u003C/li>\u003Cli>\u003Cstrong>Simulation visualizations\u003C/strong> — Fluid and smoke simulations, traffic and crowd dynamics, and scientific or physics-based renders.\u003C/li>\u003C/ul>\u003Cp>Many 3D modeling tasks are repetitive and time-consuming. By integrating them into an automated, script-driven pipeline, artists can focus more on creative worldbuilding while Python handles the tedious parts in the background.\u003C/p>\u003Cp>In any case, the development workflow is pretty much the same:\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Setup\u003C/strong> - define needed input data and scene cleanup\u003C/li>\u003Cli>\u003Cstrong>Geometry generation\u003C/strong> - modeling the actual assets needed for the task\u003C/li>\u003Cli>\u003Cstrong>Animation\u003C/strong> - defining the transforms and their associated keyframes\u003C/li>\u003Cli>\u003Cstrong>Output\u003C/strong> - the desired assets (3D models, video, image sequence, etc.)\u003C/li>\u003C/ol>\u003Cp>This is exactly the path we're going to take for our 3D text video rendering example.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blender-programmatic-rendering?ref=blog.cg-wire.com\">https://github.com/cgwire/blender-programmatic-rendering\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"1-scene-setup\">\u003Cstrong>1. Scene Setup\u003C/strong>\u003C/h2>\u003Cp>Before we dive into generating scenes, we first need a clean starting point. When you open Blender, it loads a default scene usually containing a cube, a camera, and a light. For this tutorial, we'll only need the latter two.\u003C/p>\u003Cp>The first step in using Blender programmatically is importing the \u003Ccode>bpy\u003C/code> module. This gives you full access to Blender's data, tools, and rendering pipeline directly from Python:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import bpy\n\nbpy.data.objects.remove(bpy.data.objects.get(\"Cube\"), do_unlink=True)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Here, we remove the default \u003Cstrong>Cube\u003C/strong> object. The \u003Ccode>do_unlink=True\u003C/code> parameter makes sure Blender not only deletes the object but also unlinks it from any scene that might reference it.\u003C/p>\u003Chr>\u003Ch2 id=\"2-manipulating-3d-text\">\u003Cstrong>2. Manipulating 3D Text\u003C/strong>\u003C/h2>\u003Cp>Next, we add a 3D text object to the scene to serve as the core element we'll manipulate and eventually render programmatically.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.ops.object.text_add(location=(0, 0, 0))\ntext_obj = bpy.context.object\ntext_obj.name = \"CaptionText\"\ntext_obj.data.body = \"Hello world!\"\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>This code snippet creates a new text object at the world origin, assigns it a readable name, and sets its displayed text to \u003Ccode>\"Hello world!\"\u003C/code>.\u003C/p>\u003Cp>To give the text more presence in the scene, we can adjust its geometry. Increasing the size and adding extrusion make the text fully 3D, and centering it on both axes simplifies future transformations and animations:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">text_obj.data.size = 0.6\ntext_obj.data.extrude = 0.05\ntext_obj.data.align_x = \"CENTER\"\ntext_obj.data.align_y = \"CENTER\"\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>With these adjustments, the text is cleanly centered, properly scaled, and ready for further processing.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"901\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-8cb519b5-e128-4bdd-9348-9aa0dfe2c36c.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"3-adding-keyframes\">\u003Cstrong>3. Adding Keyframes\u003C/strong>\u003C/h2>\u003Cp>We\u003Ca href=\"https://blog.cg-wire.com/stepped-animation/\"> \u003Cu>create a simple animation by inserting keyframes\u003C/u>\u003C/a> for the text position over time.\u003C/p>\u003Cp>First, we move our timeline cursor to frame 1, position the text at the starting location, and record that position with a keyframe:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.frame_set(1)\ntext_obj.location = (-4.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=1)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Next, we advance to frame 40, shift the text along the X axis, and insert another keyframe to mark its new position:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.frame_set(40)\ntext_obj.location = (0.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=40)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>With these two keyframes in place, Blender automatically interpolates the movement between them, creating a smooth animation as the text glides into the center of the frame.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"901\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-c33d7b37-264c-4c9f-a1ea-e8f2e2a39ff2.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"4-video-rendering\">\u003Cstrong>4. Video Rendering\u003C/strong>\u003C/h2>\u003Cp>All we have left to do is\u003Ca href=\"https://blog.cg-wire.com/getting-started-with-blender-rendering/\"> \u003Cu>configure Blender's rendering settings\u003C/u>\u003C/a> and output the final video.\u003C/p>\u003Cp>The first choice is which rendering engine to use: \u003Cstrong>Eevee\u003C/strong> or \u003Cstrong>Cycles\u003C/strong>.\u003C/p>\u003Cp>Eevee is a real-time rasterization engine, making it extremely fast and ideal for previews or stylized animation. Cycles, on the other hand, is a physically based path tracer that produces more realistic lighting but requires much longer render times. For quick iteration and most automated workflows, Eevee is generally the better option:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.render.engine = \"BLENDER_EEVEE\"\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Next, we specify the output resolution:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.render.resolution_x = 1920\nbpy.context.scene.render.resolution_y = 1080\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Then we set the frame rate and define the animation range. Here, a 60-frame shot at 24 fps:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.render.fps = 24\nbpy.context.scene.frame_start = 1\nbpy.context.scene.frame_end = 60\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Blender also needs to know how to encode the final video. We'll export it as an MP4 using H.264 video encoding for rendering speed:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.render.image_settings.file_format = \"FFMPEG\"\nbpy.context.scene.render.ffmpeg.format = \"MPEG4\"\nbpy.context.scene.render.ffmpeg.codec = \"H264\"\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Finally, we choose where the output file will be written using the current folder for convenience:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.context.scene.render.filepath = \"//render.mp4\"\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>With everything configured, we can start the render process with a single command:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.ops.render.render(animation=True)\u003C/code>\u003C/pre>\u003Chr>\u003Ch2 id=\"5-putting-it-all-together\">\u003Cstrong>5. Putting it all together\u003C/strong>\u003C/h2>\u003Cp>Our code is complete and we just need to put it into a Python file \u003Ccode>render.py\u003C/code>:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import bpy\n\nbpy.data.objects.remove(bpy.data.objects.get(\"Cube\"), do_unlink=True)\n\nbpy.ops.object.text_add(location=(0, 0, 0))\ntext_obj = bpy.context.object\ntext_obj.name = \"CaptionText\"\ntext_obj.data.body = \"Hello world!\"\n\ntext_obj.data.size = 0.6\ntext_obj.data.extrude = 0.05\ntext_obj.data.align_x = \"CENTER\"\ntext_obj.data.align_y = \"CENTER\"\n\nbpy.context.scene.frame_set(1)\ntext_obj.location = (-4.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=1)\n\nbpy.context.scene.frame_set(40)\ntext_obj.location = (0.0, 0.0, 1.0)\ntext_obj.keyframe_insert(data_path=\"location\", frame=40)\n\nbpy.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\n\nbpy.context.scene.render.image_settings.file_format = \"FFMPEG\"\nbpy.context.scene.render.ffmpeg.format = \"MPEG4\"&nbsp; # 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\"\n\nbpy.ops.render.render(animation=True)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Now, run the script to start rendering:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">python3 render.py\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Once the render finishes, check your working directory and your fully programmatically generated animation should now be ready to view.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1088\" height=\"722\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-2b287259-a96b-456b-b95e-375bf116e3a1.png 1088w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">🔗\u003C/div>\u003Cdiv class=\"kg-callout-text\">You can find our code in a Github repository for easy reproducibility:\u003Ca href=\"https://github.com/cgwire/blender-programmatic-rendering?ref=blog.cg-wire.com\"> \u003Cu>github.com/cgwire/blender-programmatic-rendering\u003C/u>\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>In this walkthrough, you built a complete automated pipeline inside Blender: setting up a clean scene, creating and modifying 3D text, animating it with keyframes, and rendering the sequence with smooth interpolation. All of it handled through Python with no manual adjustments needed!\u003C/p>\u003Cp>Now that you've seen how much control the Blender API provides, you can take these ideas much further: automate your workflows, generate graphics from data, build internal tools that assemble scenes, render variations, or create entire animations with a single command... the list to help your animation studio become more productive never ends.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":196,"comment_id":197,"feature_image":198,"featured":23,"visibility":24,"created_at":199,"updated_at":200,"custom_excerpt":201,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":202,"primary_tag":203,"url":204,"excerpt":201,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":206},"4457d779-ae8e-4ed7-9398-91772c0996c0","6948dba20bfbc7000190a8bf","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","2025-12-22T06:48:18.000+01:00","2026-02-20T06:04:02.000+01:00","Learn how to automate animation and video rendering in Blender using Python. This tutorial covers scene setup, 3D text generation, keyframe animation, and programmatic rendering to build repeatable, script-driven workflows.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/blender-programmatic-rendering/",6,"\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@sebastiansvenson?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Sebastian Svenson\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/blender-programmatic-rendering","2025-12-29T10:00:10.000+01:00",{"title":191},"blender-programmatic-rendering","posts/blender-programmatic-rendering",[213,214],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"vOpwec7s0eruEbUu1OcdDfl9ESqnn1LglPRNKNn4kgw",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":219,"title":220,"authors":221,"body":12,"description":12,"extension":17,"html":223,"meta":224,"navigation":36,"path":236,"published_at":237,"seo":238,"slug":239,"stem":240,"tags":241,"__hash__":244,"uuid":225,"comment_id":226,"feature_image":227,"featured":23,"visibility":24,"created_at":228,"updated_at":229,"custom_excerpt":230,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":245,"primary_tag":246,"url":233,"excerpt":230,"reading_time":234,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":235},"ghost/posts:blender-kitsu-versioning-addon.json","Managing Blender File Revisions with a Kitsu Versioning Addon (2026)",[222],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🧱\u003C/div>\u003Cdiv class=\"kg-callout-text\">Replace chaotic file naming with a single source of truth for Blender revisions.\u003C/div>\u003C/div>\u003Cp>Every project begins with good intentions. You start with a clean \u003Ccode>model.blend\u003C/code>, organized folders, and the promise that this time you’ll keep things tidy.\u003C/p>\u003Cp>But as deadlines tighten, the quiet entropy of production sets in. Before long, your project directory starts to resemble an archaeological dig site of panicked last-minute edits:\u003C/p>\u003Cpre>\u003Ccode>model.blend\nmodel_v2.blend\nmodel_v2b.blend\nmodel_final.blend\nmodel_final_really_final.blend\nmodel_FINAL_v3.blend\u003C/code>\u003C/pre>\u003Cp>You know how it happens: someone needs a quick change, another artist branches off a version \"just in case,\" and soon no one is entirely certain which file is \"the real one.\" Comments in chat threads contradict filenames, shots render from outdated versions, and the supervisor sighs deeply.\u003C/p>\u003Cp>In an animation studio, these micro-chaos moments add up. That’s where a proper source of truth needs to enter the story.\u003C/p>\u003Cp>For many teams, that source is Kitsu. And for Blender artists, the missing piece is an automated bridge that keeps files versioned, traceable, and aligned with the project’s production data.\u003C/p>\u003Cp>So you decide to take control: you’re going to make Blender talk to Kitsu and build a versioning system that makes your pipeline feel like it finally has your back.\u003C/p>\u003Cp>In this tutorial, we’ll create an addon that manages file revisions directly from Blender. You’ll be able to connect Blender to a Kitsu project, create and upload revisions of your 3D models, view all existing revisions, and pull older revisions back into Blender.\u003C/p>\u003Chr>\u003Ch2 id=\"workflow-overview\">\u003Cstrong>Workflow Overview\u003C/strong>\u003C/h2>\u003Cp>In a typical Kitsu-driven workflow, an artist opens a Blender scene, does their work, hits a milestone, and uploads a revision. Artists review, iterate, revise, and upload again. Kitsu keeps every step neatly.\u003C/p>\u003Cp>But it wouldn't hurt if you could just upload or pull revisions with a click, right?\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Start in Blender\u003C/strong> - We open our working scene—modeling, shading, rigging, whatever the task at hand demands.\u003C/li>\u003Cli>\u003Cstrong>Checkpoint the work\u003C/strong> - When we hit a milestone (\"blocking complete,\" \"ready for review\"), we create a new revision in Kitsu.\u003C/li>\u003Cli>\u003Cstrong>Review the history\u003C/strong> - Kitsu stores all revisions, giving supervisors a clear timeline and letting you compare versions without digging through files.\u003C/li>\u003Cli>\u003Cstrong>Pull new changes\u003C/strong> - When we need a different version, we can just click to pull in an asset in our current workspace.\u003C/li>\u003C/ol>\u003Cp>This is a very basic workflow, so we are bound to run into problems like how to handle conflict resolution (what if two artists work on the same shot and create a new revision each, how do we handle this?), but it's good enough to give us a functional addon we can improve later on to fit our animation pipeline needs.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blender-kitsu-versioning-addon?ref=blog.cg-wire.com\">https://github.com/cgwire/blender-kitsu-versioning-addon\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"1-populating-the-kitsu-dashboard\">\u003Cstrong>1. Populating The Kitsu Dashboard\u003C/strong>\u003C/h2>\u003Cp>Kitsu’s web interface is designed so producers, coordinators, or leads can quickly set up the structure of a project. Before Blender artists can publish revisions, we need to populate our production with work-in-progress assets. In\u003Ca href=\"https://blog.cg-wire.com/dcc-integration-blender-kitsu/\"> \u003Cu>the Kitsu Docker instance for local development\u003C/u>\u003C/a>:\u003C/p>\u003Col>\u003Cli>Log into the \u003Cstrong>Kitsu dashboard\u003C/strong>.\u003C/li>\u003Cli>In the main navigation bar, go to \u003Cstrong>Productions\u003C/strong>.\u003C/li>\u003Cli>Click \u003Cstrong>\"Create production\"\u003C/strong> (usually top-right corner).\u003C/li>\u003Cli>Fill in the production details\u003C/li>\u003C/ol>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"985\" height=\"694\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-58cb0571-2b74-4110-9b07-9e15030bbd05.png 985w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>The new production will appear in the list, and you can open it to begin adding assets.\u003C/p>\u003Cp>Assets are the building blocks of your project: characters, props, environments, vehicles... anything that needs production tracking.\u003C/p>\u003Col>\u003Cli>Go to \u003Cstrong>Productions → Your Production Name\u003C/strong>.\u003C/li>\u003Cli>Switch to the \u003Cstrong>Assets\u003C/strong> tab within the production.\u003C/li>\u003Cli>Click \u003Cstrong>\"Create Asset\"\u003C/strong>.\u003C/li>\u003Cli>Enter an \u003Cstrong>Asset Name\u003C/strong> (e.g., \"RobotHead\") and \u003Cstrong>Asset Type\u003C/strong> (Character, Prop, Set, etc.)\u003C/li>\u003C/ol>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1270\" height=\"870\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-f4336c33-57ef-4baa-9715-e0c749f7d9b4.png 1270w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Your asset now exists and has 3 tasks assigned to it.&nbsp;\u003C/p>\u003Cp>Tasks define the workflow steps (Modeling, Shading, Rigging, etc.) that artists will perform on each asset.\u003C/p>\u003Cp>We now have everything we need to test our addon.\u003C/p>\u003Chr>\u003Ch2 id=\"2-linking-the-current-blender-project-to-a-kitsu-task\">\u003Cstrong>2. Linking the Current Blender Project to a Kitsu Task\u003C/strong>\u003C/h2>\u003Cp>We start with a minimal addon declaration that defines the UI location, loads \u003Ccode>gazu\u003C/code>, and prepares the data we’ll expose in dropdown menus:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bl_info = {\n&nbsp;&nbsp;&nbsp;&nbsp;\"name\": \"Model Versioning (Production/Task/Asset/Revisions)\",\n&nbsp;&nbsp;&nbsp;&nbsp;\"author\": \"cgwire\",\n&nbsp;&nbsp;&nbsp;&nbsp;\"version\": (1, 0, 0),\n&nbsp;&nbsp;&nbsp;&nbsp;\"blender\": (2, 80, 0),\n&nbsp;&nbsp;&nbsp;&nbsp;\"location\": \"View3D &gt; Sidebar &gt; ModelVersioning\",\n&nbsp;&nbsp;&nbsp;&nbsp;\"description\": \"Browse productions, tasks, assets, and manage revisions (list/create/load)\",\n&nbsp;&nbsp;&nbsp;&nbsp;\"category\": \"3D View\",\n}\n\nimport sys\n\nsys.path.append(\"~/.local/lib/python3.11/site-packages\")\n\nimport os\nimport tempfile\n\nimport bpy\nimport gazu\nfrom bpy.props import EnumProperty, PointerProperty\nfrom bpy.types import Operator, Panel, PropertyGroup\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Note that \u003Ccode>sys.path.append(\"~/.local/lib/python3.11/site-packages\")\u003C/code> allows us to use our local Python installation to access external packages like \u003Ccode>gazu\u003C/code>. By default, Blender runs its own Python environment, so installing packages can be cumbersome. To solve this, we just tell Blender to have a look at our local modules. Update this path accordingly to match your system configuration.\u003C/p>\u003Cp>Before we can automate versioning, Blender needs to know \u003Cem>where\u003C/em> in Kitsu the current model belongs. That means identifying the project, the asset, the task, and eventually the revisions associated with it.\u003C/p>\u003Cp>The first step is simple: authenticate with Kitsu, retrieve available productions, and let the artist pick the context directly from the Sidebar UI.\u003C/p>\u003Cp>Once the addon loads, we authenticate and point the addon at the Kitsu API host:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">gazu.set_host(\"&lt;http://localhost/api&gt;\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\ntemp_dir_path = tempfile.gettempdir()\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>This establishes the session we’ll use to browse productions, find tasks, and eventually create revisions.\u003C/p>\u003Cp>From here, we can begin exposing the production structure. With helper functions for project, asset, task, and revision lookup, we populate each dropdown dynamically:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">def find_project(name):\n&nbsp;&nbsp;&nbsp;&nbsp;return gazu.project.get_project_by_name(name)\n\ndef find_asset(project, name):\n&nbsp;&nbsp;&nbsp;&nbsp;return gazu.asset.get_asset_by_name(project, name)\n\ndef find_task(asset, type_id):\n&nbsp;&nbsp;&nbsp;&nbsp;return gazu.task.get_task_by_name(asset, type_id, \"main\")\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Each \u003Ccode>EnumProperty\u003C/code> callback pulls fresh data from Kitsu:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">def enum_projects(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;items = []\n&nbsp;&nbsp;&nbsp;&nbsp;projects = gazu.project.all_projects()\n&nbsp;&nbsp;&nbsp;&nbsp;for p in projects:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((p[\"name\"], p[\"name\"], \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;if not items:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((\"NONE\", \"--- no productions ---\", \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;return items\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Assets, tasks, and revisions follow the same pattern:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">def enum_assets(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;project = find_project(context.scene.mv_state.project)\n&nbsp;&nbsp;&nbsp;&nbsp;items = []\n&nbsp;&nbsp;&nbsp;&nbsp;if project:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assets = gazu.asset.all_assets_for_project(project)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for t in assets:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((t[\"name\"], t[\"name\"], \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;if not items:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((\"NONE\", \"--- no tasks ---\", \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;return items\n\ndef enum_tasks(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;project = find_project(context.scene.mv_state.project)\n&nbsp;&nbsp;&nbsp;&nbsp;asset = find_asset(project, context.scene.mv_state.asset)\n&nbsp;&nbsp;&nbsp;&nbsp;items = []\n&nbsp;&nbsp;&nbsp;&nbsp;if asset:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tasks = gazu.task.all_tasks_for_asset(asset)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for t in tasks:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((t[\"task_type_id\"], t[\"task_type_name\"], \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;if not items:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((\"NONE\", \"--- no tasks ---\", \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;return items\n\ndef enum_revisions(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;project = find_project(context.scene.mv_state.project)\n&nbsp;&nbsp;&nbsp;&nbsp;asset = find_asset(project, context.scene.mv_state.asset)\n&nbsp;&nbsp;&nbsp;&nbsp;task = find_task(asset, context.scene.mv_state.task)\n&nbsp;&nbsp;&nbsp;&nbsp;items = []\n&nbsp;&nbsp;&nbsp;&nbsp;if task:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revisions = gazu.files.get_all_preview_files_for_task(task)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for r in revisions:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((str(r[\"revision\"]), str(r[\"revision\"]), \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;if not items:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items.append((\"NONE\", \"--- no revisions ---\", \"\"))\n&nbsp;&nbsp;&nbsp;&nbsp;return items\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Finally, we store all UI selections in a single state object:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">class MV_State(PropertyGroup):\n&nbsp;&nbsp;&nbsp;&nbsp;project: EnumProperty(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=\"Project\", description=\"Select project\", items=enum_projects\n&nbsp;&nbsp;&nbsp;&nbsp;)\n&nbsp;&nbsp;&nbsp;&nbsp;asset: EnumProperty(name=\"Asset\", description=\"Select asset\", items=enum_assets)\n&nbsp;&nbsp;&nbsp;&nbsp;task: EnumProperty(name=\"Task\", description=\"Select task\", items=enum_tasks)\n&nbsp;&nbsp;&nbsp;&nbsp;revision: EnumProperty(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=\"Revision\", description=\"Select revision\", items=enum_revisions\n&nbsp;&nbsp;&nbsp;&nbsp;)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>This is the foundation of our pipeline integration: Blender now knows how to browse Kitsu and bind itself to the exact task the artist is working on. From here, we can start working on the revision lifecycle.\u003C/p>\u003Chr>\u003Ch2 id=\"3-creating-a-new-revision-button\">\u003Cstrong>3. Creating a \"New Revision\" Button\u003C/strong>\u003C/h2>\u003Cp>We can start automating the part artists interact with most: creating new revisions. In a typical manual workflow, you’d export your file and upload it in Kitsu to the correct task. Our addon will streamline this into a single button press inside Blender.\u003C/p>\u003Cp>Kitsu handles new revisions through \u003Ccode>publish_preview()\u003C/code>. This call sends both the file and metadata:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")\n\nbpy.ops.export_scene.gltf(filepath=temp_file_path, export_format=\"GLB\")\n\n(comment, preview_file) = gazu.task.publish_preview(\n&nbsp;&nbsp;&nbsp;&nbsp;task,\n&nbsp;&nbsp;&nbsp;&nbsp;task_status,\n&nbsp;&nbsp;&nbsp;&nbsp;revision=new_revision,\n&nbsp;&nbsp;&nbsp;&nbsp;comment=\"increment revision\",\n&nbsp;&nbsp;&nbsp;&nbsp;preview_file_path=temp_file_path,\n)\n\nos.remove(temp_file_path)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>In our addon, we’ll trigger this from a button in the Sidebar.\u003C/p>\u003Cp>The operator performs three main steps: grab the user’s selections from the addon's state, compute the next revision number, and upload the exported file as the new revision:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">class MV_OT_create_revision(Operator):\n&nbsp;&nbsp;&nbsp;&nbsp;bl_idname = \"mv.create_revision\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_label = \"Create Revision\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;def invoke(self, context, event):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wm = context.window_manager\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return wm.invoke_props_dialog(self, width=400)\n\n&nbsp;&nbsp;&nbsp;&nbsp;def execute(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;project = find_project(context.scene.mv_state.project)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asset = find_asset(project, context.scene.mv_state.asset)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task = find_task(asset, context.scene.mv_state.task)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revision = context.scene.mv_state.revision\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_revision = int(revision) + 1\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task_status = gazu.task.get_task_status_by_name(\"todo\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bpy.ops.export_scene.gltf(filepath=temp_file_path, export_format=\"GLB\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(comment, preview_file) = gazu.task.publish_preview(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task_status,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revision=new_revision,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment=\"increment revision\",\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview_file_path=temp_file_path,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(temp_file_path)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.report({\"INFO\"}, \"Revision created\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return {\"FINISHED\"}\u003C/code>\u003C/pre>\u003Chr>\u003Ch2 id=\"4-pulling-a-revision-into-blender\">\u003Cstrong>4. Pulling a Revision into Blender\u003C/strong>\u003C/h2>\u003Cp>Versioning isn’t just about publishing your work, it's also about being able to \u003Cem>go back\u003C/em>. Whether you’re reviewing earlier stages, comparing topology, or recovering a detail from a previous iteration, you need a quick, reliable way to load new and older revisions into Blender.\u003C/p>\u003Cp>Once a task is selected, pulling a revision from Kitsu becomes a simple two-step operation: download the preview file associated with the selected revision, and import it into Blender.\u003C/p>\u003Cp>After fetching all preview files for the current task, we can target the revision by index and bring the asset directly into Blender:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")\n\npreview_file = preview_files[int(revision) - 1]\ngazu.files.download_preview_file(preview_file, temp_file_path)\nbpy.ops.import_scene.gltf(filepath=temp_file_path)\n\nos.remove(temp_file_path)\u003C/code>\u003C/pre>\u003Cp>This gives us a consistent way to retrieve assets exactly as they were at that point in production.\u003C/p>\u003Cp>We encapsulate this workflow inside an operator that mirrors the structure of the Create Revision button:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">class MV_OT_load_revision(Operator):\n&nbsp;&nbsp;&nbsp;&nbsp;bl_idname = \"mv.load_revision\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_label = \"Load Revision\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;def execute(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;project = find_project(context.scene.mv_state.project)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asset = find_asset(project, context.scene.mv_state.asset)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task = find_task(asset, context.scene.mv_state.task)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revision = context.scene.mv_state.revision\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview_files = gazu.files.get_all_preview_files_for_task(task)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp_file_path = os.path.join(temp_dir_path, \"new_version.glb\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview_file = preview_files[int(revision) - 1]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gazu.files.download_preview_file(preview_file, temp_file_path)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bpy.ops.import_scene.gltf(filepath=temp_file_path)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(temp_file_path)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.report({\"INFO\"}, \"Opened Revision\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return {\"FINISHED\"}\u003C/code>\u003C/pre>\u003Cp>This operator makes it trivial for artists to browse and load any version stored in Kitsu without leaving Blender.\u003C/p>\u003Chr>\u003Ch2 id=\"5-registering-the-addon\">\u003Cstrong>5. Registering The Addon\u003C/strong>\u003C/h2>\u003Cp>\u003Ca href=\"https://blog.cg-wire.com/blender-addon-ui-scripting-guide/\">\u003Cu>The panel now ties the whole revision workflow together\u003C/u>\u003C/a>:\u003C/p>\u003Cul>\u003Cli>Select the project\u003C/li>\u003Cli>Choose the asset\u003C/li>\u003Cli>Pick the task\u003C/li>\u003Cli>Browse revisions\u003C/li>\u003Cli>Create or load versions with a single click\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"language-python\">class MV_PT_panel(Panel):\n&nbsp;&nbsp;&nbsp;&nbsp;bl_label = \"Model Versioning\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_idname = \"MV_PT_panel\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_space_type = \"VIEW_3D\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_region_type = \"UI\"\n&nbsp;&nbsp;&nbsp;&nbsp;bl_category = \"ModelVersion\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;def draw(self, context):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout = self.layout\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = context.scene\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mv = scene.mv_state\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.label(text=\"Project\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.prop(mv, \"project\", text=\"\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.separator()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.label(text=\"Asset\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.prop(mv, \"asset\", text=\"\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.separator()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.label(text=\"Task\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.prop(mv, \"task\", text=\"\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.separator()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.label(text=\"Revision\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.prop(mv, \"revision\", text=\"\")\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.separator()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row = layout.row(align=True)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row.operator(\"mv.create_revision\", text=\"Create Revision\", icon=\"ADD\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.operator(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"mv.load_revision\", text=\"Load Selected Revision\", icon=\"IMPORT\"\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)\u003C/code>\u003C/pre>\u003Cp>\u003C/p>\u003Cp>Finally, we register the operators, panel, and state so Blender knows how to construct the UI:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">classes = (\n&nbsp;&nbsp;&nbsp;&nbsp;MV_State,\n&nbsp;&nbsp;&nbsp;&nbsp;MV_OT_create_revision,\n&nbsp;&nbsp;&nbsp;&nbsp;MV_OT_load_revision,\n&nbsp;&nbsp;&nbsp;&nbsp;MV_PT_panel,\n)\n\ndef register():\n&nbsp;&nbsp;&nbsp;&nbsp;for c in classes:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bpy.utils.register_class(c)\n&nbsp;&nbsp;&nbsp;&nbsp;bpy.types.Scene.mv_state = PointerProperty(type=MV_State)\n\ndef unregister():\n&nbsp;&nbsp;&nbsp;&nbsp;for c in reversed(classes):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bpy.utils.unregister_class(c)\n&nbsp;&nbsp;&nbsp;&nbsp;if hasattr(bpy.types.Scene, \"mv_state\"):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;del bpy.types.Scene.mv_state\n\nif __name__ == \"__main__\":\n&nbsp;&nbsp;&nbsp;&nbsp;register()\u003C/code>\u003C/pre>\u003Cp>At this point, the model versioning workflow is fully bidirectional: you can publish new revisions from Blender and retrieve earlier ones instantly.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"759\" height=\"488\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-00e861e7-3b2e-4bdc-80b8-1af740cab480.png 759w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>With just a handful of Blender API operators and the convenience of the Gazu SDK, we’ve built a practical (yet basic) versioning workflow that lives directly inside Blender and stays in sync with Kitsu. Artists can link their Blender scene to a Kitsu project, asset, and task, create new revisions with a single button press, browse the full revision history for any task, and pull older versions straight into Blender whenever they need to compare or recover work.\u003C/p>\u003Cp>This workflow is only the beginning. From here, you could expand the addon with automated exports, thumbnail or turntable renders, support for multiple output formats, supervisor review tools, or even hooks into a render farm.\u003C/p>\u003Cp>To get you started, make sure to clone\u003Ca href=\"https://github.com/cgwire/blender-kitsu-versioning-addon?ref=blog.cg-wire.com\"> \u003Cu>our Github repository\u003C/u>\u003C/a> for this versioning addon and try it out yourself!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":225,"comment_id":226,"feature_image":227,"featured":23,"visibility":24,"created_at":228,"updated_at":229,"custom_excerpt":230,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":231,"primary_tag":232,"url":233,"excerpt":230,"reading_time":234,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":235},"4ee5e3ab-dd50-4121-99cb-c59d96c2eb7d","6948ca070bfbc7000190a884","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","2025-12-22T05:33:11.000+01:00","2026-02-20T06:04:01.000+01:00","Learn how to build a Blender addon that connects to Kitsu to manage asset revisions. This tutorial covers creating, browsing, and loading file versions directly from Blender, keeping production files traceable and in sync with studio workflows.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/blender-kitsu-versioning-addon/",12,"\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@jaspergarrattphotography?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Jasper Garratt\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/blender-kitsu-versioning-addon","2025-12-22T10:00:20.000+01:00",{"title":220},"blender-kitsu-versioning-addon","posts/blender-kitsu-versioning-addon",[242,243],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"RvLHyMPCRMLBkkSF0lzBXOx7AHvfvlghiFKTD38-uwg",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":248,"title":249,"authors":250,"body":12,"description":12,"extension":17,"html":252,"meta":253,"navigation":36,"path":263,"published_at":264,"seo":265,"slug":266,"stem":267,"tags":268,"__hash__":271,"uuid":254,"comment_id":255,"feature_image":256,"featured":23,"visibility":24,"created_at":257,"updated_at":229,"custom_excerpt":258,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":272,"primary_tag":273,"url":261,"excerpt":258,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":262},"ghost/posts:blender-kitsu-low-res-preview.json","Automating Low-Res Animation Previews in Blender with Kitsu (2026)",[251],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">⚡\u003C/div>\u003Cdiv class=\"kg-callout-text\">Speed up animation reviews with lightweight previews that render in seconds, not hours.\u003C/div>\u003C/div>\u003Cp>Waiting for full-resolution renders just to review a shot slows down the entire production. Artists spend time waiting and supervisors get delayed feedback. The iteration loop is inefficient.\u003C/p>\u003Cp>To address this, we can create low-resolution animation previews directly in Blender and auto-upload them to Kitsu using Python as a part of our animation pipeline. These previews are fast to render, easy to review, and can be quickly used in Kitsu for approval.\u003C/p>\u003Cp>This is a big deal because full-resolution renders can take hours, and the cloud storage and network bandwidth costs are no joke when you're dealing with thousands of shots. Going from 1080p to 480p can divide the size by up to 5x!\u003C/p>\u003Cp>In this tutorial, we’ll cover how to:\u003C/p>\u003Cul>\u003Cli>Adjust Blender render settings for low-resolution previews\u003C/li>\u003Cli>Automate the render process using Python\u003C/li>\u003Cli>Use \u003Ccode>ffmpeg\u003C/code> to watermark and timestamp the video for fast contextualization\u003C/li>\u003Cli>Export videos and upload them to Kitsu\u003C/li>\u003C/ul>\u003Cp>By the end, you’ll have a script that saves time on shot reviews without sacrificing feedback quality.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blender-kitsu-low-res-preview?ref=blog.cg-wire.com\">https://github.com/cgwire/blender-kitsu-low-res-preview\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"1-simple-blender-scene-setup\">\u003Cstrong>1. Simple Blender Scene Setup\u003C/strong>\u003C/h2>\u003Cp>Before we can create an animated preview, we need a starting object in the scene. For this tutorial, we’ll use Blender’s default cube.\u003C/p>\u003Cp>First, we create a reference of the scene and the cube:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import bpy\n\ncube = bpy.data.objects[\"Cube\"]\nscene = bpy.context.scene\u003C/code>\u003C/pre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"901\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-bf950a7a-c387-4b8d-9318-49e5bd3251bd.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"2-adding-keyframes-for-animation\">\u003Cstrong>2. Adding Keyframes for Animation\u003C/strong>\u003C/h2>\u003Cp>The next step is animating our cube. For quick modeling previews, short sequences are ideal. Here, we’ll create a \u003Cstrong>360° rotation\u003C/strong> over 48 frames (2 seconds at 24 FPS):\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">for frame, angle in [(1, 0), (12, 1.57), (24, 3.14), (36, 4.71), (48, 6.28)]:\n&nbsp;&nbsp;&nbsp;&nbsp;scene.frame_set(frame)\n&nbsp;&nbsp;&nbsp;&nbsp;cube.rotation_euler[2] = angle\n&nbsp;&nbsp;&nbsp;&nbsp;cube.keyframe_insert(data_path=\"rotation_euler\", index=2)\u003C/code>\u003C/pre>\u003Cp>This loop sets keyframes at regular intervals, rotating the cube smoothly around its Z-axis by increments of pi/2. Using a small number of frames keeps rendering fast and makes it perfect for preview purposes.\u003C/p>\u003Cp>At this point, you could scrub the timeline in Blender to verify the cube rotates as expected.\u003C/p>\u003Chr>\u003Ch2 id=\"3-low-resolution-rendering\">\u003Cstrong>3. Low-Resolution Rendering\u003C/strong>\u003C/h2>\u003Cp>With animation in place, we can configure Blender to render a \u003Cstrong>fast, low-resolution preview\u003C/strong>. The goal is speed over quality: we want something clear enough for review but quick to produce.\u003C/p>\u003Cp>Here, we use\u003Ca href=\"https://blog.cg-wire.com/getting-started-with-blender-rendering/\"> \u003Cu>the Eevee rendering engine for speed and to reduce unnecessary rendering overhead\u003C/u>\u003C/a>. It's much faster than Cycles because it's a simple rasterisation engine, and we don't need a hyper-realistic output in 90% of cases.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">scene.render.engine = \"BLENDER_EEVEE\"\n\nscene.render.resolution_x = 1920\nscene.render.resolution_y = 1080\nscene.render.resolution_percentage = 50\n\nscene.render.fps = 24\nscene.frame_start = 1\nscene.frame_end = 48&nbsp; # match your animation length\n\nscene.render.image_settings.file_format = \"FFMPEG\"\nscene.render.ffmpeg.format = \"MPEG4\"\nscene.render.ffmpeg.codec = \"H264\"\n\nscene.render.filepath = \"//preview.mp4\"\u003C/code>\u003C/pre>\u003Cp>Although we go for a classic landscape resolution, reducing \u003Ccode>resolution_percentage\u003C/code> or turning off high-quality sampling in Eevee can drastically reduce render times for previews.\u003C/p>\u003Cp>The rest of the settings are pretty standard: 24 frames per second, 48 frames total, and a mp4 output video with H264 encoding (for faster compression) written in the script's current folder.\u003C/p>\u003Cp>Depending on your use case, you can reduce the resolution, decrease the frame rate, and lower the bitrate to lower the size of your previews. You still need enough quality for the review process, though, so tweak the settings for an optimal balance with performance.\u003C/p>\u003Cp>Finally, we can trigger the render in one line:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">bpy.ops.render.render(animation=True)\u003C/code>\u003C/pre>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1088\" height=\"722\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-27b0c802-b589-4306-b52b-5f910b58320b.png 1088w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>The preview video can be immediately used for review or further processed with tools like FFmpeg for timestamps, watermarks, or custom naming conventions before uploading to Kitsu.\u003C/p>\u003Chr>\u003Ch2 id=\"4-ffmpeg-processing-timestamp-naming-watermark\">\u003Cstrong>4. FFmpeg Processing: Timestamp, Naming, Watermark\u003C/strong>\u003C/h2>\u003Cp>Once Blender has rendered your animation to a video file, you can further process it using \u003Cstrong>FFmpeg\u003C/strong>. This is\u003Ca href=\"https://blog.cg-wire.com/ffmpeg-commands-for-animators/\"> \u003Cu>a common step in production pipelines\u003C/u>\u003C/a> to add timestamps, watermarks, or custom naming-making the previews ready for review.\u003C/p>\u003Cp>Run the following command in a terminal after rendering your preview:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">ffmpeg -framerate 24 \\\\\\\\\n&nbsp;&nbsp;-i preview.mp4 \\\\\\\\\n&nbsp;&nbsp;-i watermark.png \\\\\\\\\n&nbsp;&nbsp;-filter_complex \"\\\\\\\\\n&nbsp;&nbsp;&nbsp;&nbsp;[0:v]drawtext=text='%{pts\\\\\\\\:hms}':x=10:y=10:fontsize=24:fontcolor=white:bordercolor=black:borderw=2[v1]; \\\\\\\\\n&nbsp;&nbsp;&nbsp;&nbsp;[v1][1:v]overlay=W-w-20:H-h-20\" \\\\\\\\\n&nbsp;&nbsp;-c:v libx264 -crf 22 -pix_fmt yuv420p \\\\\\\\\n&nbsp;&nbsp;preview_with_stamp.mp4\u003C/code>\u003C/pre>\u003Cul>\u003Cli>\u003Cstrong>\u003Ccode>drawtext\u003C/code>\u003C/strong> overlays a running timestamp in the top-left corner.\u003C/li>\u003Cli>\u003Ccode>\u003Cstrong>overlay\u003C/strong>\u003C/code> places a watermark image (\u003Ccode>watermark.png\u003C/code>) in the bottom-right corner.\u003C/li>\u003Cli>\u003Cstrong>\u003Ccode>c:v libx264 -crf 22 -pix_fmt yuv420p\u003C/code>\u003C/strong> ensures good quality and broad compatibility for video playback.\u003C/li>\u003Cli>The output file, \u003Ccode>preview_with_stamp.mp4\u003C/code>, is your finalised preview ready for review.\u003C/li>\u003C/ul>\u003Cp>Of course, you can adjust the font size, position, or watermark placement as needed to standardise previews for your team or client reviews.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1088\" height=\"722\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-aaed9f6c-1b29-4592-b629-1830a6f2aa79.png 1088w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>This step completes the preparation of a production-ready, low-resolution animation preview. The file is now ready to be uploaded to \u003Cstrong>Kitsu\u003C/strong> for quick feedback.\u003C/p>\u003Chr>\u003Ch2 id=\"5-uploading-to-kitsu-via-gazu\">\u003Cstrong>5. Uploading to Kitsu via Gazu\u003C/strong>\u003C/h2>\u003Cp>Once your low-resolution preview is ready, you can upload it directly to \u003Cstrong>Kitsu\u003C/strong> via the dashboard or use the \u003Ccode>gazu\u003C/code> Python SDK. Kitsu is a collaborative pipeline tracker allowing artists and supervisors to access the preview immediately for review.\u003C/p>\u003Cp>The following Python script provides a simple interactive CLI that lets you choose the project and task to upload your preview to:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import gazu\n\ndef pickProject(label, list_of_items):\n&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Helper UI to pick one item from a list.\"\"\"\n&nbsp;&nbsp;&nbsp;&nbsp;for i, item in enumerate(list_of_items):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"{i + 1}. {item['name']}\")\n&nbsp;&nbsp;&nbsp;&nbsp;idx = int(input(f\"Choose {label} number: \")) - 1\n&nbsp;&nbsp;&nbsp;&nbsp;return list_of_items[idx]\n\ndef pickTask(label, list_of_items):\n&nbsp;&nbsp;&nbsp;&nbsp;\"\"\"Helper UI to pick one item from a list.\"\"\"\n&nbsp;&nbsp;&nbsp;&nbsp;for i, item in enumerate(list_of_items):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asset = gazu.entity.get_entity(item[\"entity_id\"])\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status = gazu.task.get_task_status(item[\"task_status_id\"])\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type = gazu.task.get_task_type(item[\"task_type_id\"])\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"{i + 1}. {asset['name']} {type['name']} {status['name']}\")\n&nbsp;&nbsp;&nbsp;&nbsp;idx = int(input(f\"Choose {label} number: \")) - 1\n&nbsp;&nbsp;&nbsp;&nbsp;return list_of_items[idx]\n\ngazu.set_host(\"&lt;http://localhost/api&gt;\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\nprojects = gazu.project.all_projects()\nproject = pickProject(\"project\", projects)\n\ntasks = gazu.task.all_tasks_for_project(project)\ntask = pickTask(\"task\", tasks)\n\nprint(\"Uploading preview...\")\ntask_status = gazu.task.get_task_status_by_name(\"todo\")\nresult = gazu.task.publish_preview(\n&nbsp;&nbsp;&nbsp;&nbsp;task,\n&nbsp;&nbsp;&nbsp;&nbsp;task_status,\n&nbsp;&nbsp;&nbsp;&nbsp;comment=\"Auto-generated preview\",\n&nbsp;&nbsp;&nbsp;&nbsp;preview_file_path=\"./preview.mp4\",\n)\n\nprint(\"Done:\", result)\u003C/code>\u003C/pre>\u003Cp>First, we log in to Kitsu via \u003Ccode>gazu\u003C/code> with your credentials. We use the\u003Ca href=\"https://blog.cg-wire.com/dcc-integration-blender-kitsu/\"> \u003Cu>local development environment installation via Kitsu Docker\u003C/u>\u003C/a>. The program lets you select the \u003Cstrong>project\u003C/strong> and \u003Cstrong>task\u003C/strong> from available options using different Kitsu API endpoints to get all your production data:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1343\" height=\"816\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-21091709-64dd-41c6-875e-2cdce8b5b178.png 1343w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>We then upload the generated preview video from the previous steps to the selected task.\u003C/p>\u003Cp>Once complete, the preview is available in Kitsu’s review interface, making it easy for team members and supervisors to give feedback without waiting for high-resolution renders.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"985\" height=\"948\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-78d2cd48-21e9-4599-9b2b-a5e5bef63f76.png 985w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>The review engine is perfect to quickly annotate frames and add comments on precise shots:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"809\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/data-src-image-6ae9b3dd-18e9-4d85-9fa6-e5106babc87e.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"6-putting-it-all-together\">\u003Cstrong>6. Putting it all together\u003C/strong>\u003C/h2>\u003Cp>To automate the task end-to-end, let's write a quick bash command:\u003C/p>\u003Cp>\u003Cstrong>\u003Cu>preview.sh\u003C/u>\u003C/strong>\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">python3 render.py &amp;&amp; ./watermark.sh &amp;&amp; python3 upload.py\u003C/code>\u003C/pre>\u003Cp>We can then run the script every time we need to share a preview:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">./preview.sh\u003C/code>\u003C/pre>\u003Cp>Check out our\u003Ca href=\"https://github.com/cgwire/blender-kitsu-low-res-preview?ref=blog.cg-wire.com\"> \u003Cu>Github repository blender-kitsu-low-res-preview\u003C/u>\u003C/a> to try out the final result yourself.\u003C/p>\u003Chr>\u003Ch2 id=\"7-artist-friendly-addon-overview\">\u003Cstrong>7. Artist-Friendly Addon Overview\u003C/strong>\u003C/h2>\u003Cp>Though this is out of the scope of this article, it could be easy to wrap up our code in a Blender addon for artists to easily use.\u003C/p>\u003Cp>You would need a main panel to hold dropdown menus to pick a production, asset, and task to upload to. And a button to click to upload. The uploading logic would take care of rendering, calling ffmpeg as a subprocess for watermarking, and actually sending the temporary files to Kitsu.\u003C/p>\u003Cp>Have a look at our article on\u003Ca href=\"https://blog.cg-wire.com/blender-addon-ui-scripting-guide/\"> \u003Cu>Blender Add-on UI Development\u003C/u>\u003C/a> for more information.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>By now, you’ve set up a full pipeline: creating a simple 3D object in Blender, animating it, generating a low-resolution preview, adding timestamps and watermarks, and uploading it to Kitsu. The benefits are immediately clear:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Faster reviews\u003C/strong> - Supervisors and team members can watch previews immediately without waiting for full-resolution renders.\u003C/li>\u003Cli>\u003Cstrong>Quicker iterations\u003C/strong> - Artists get feedback faster, which shortens the iteration loop and reduces bottlenecks.\u003C/li>\u003Cli>\u003Cstrong>Fewer blockers\u003C/strong> - Automated previews and uploads eliminate repetitive manual steps in the pipeline to keep deliverables consistent.\u003C/li>\u003C/ul>\u003Cp>What used to take an hour of manual work can now be handled with a few scripts, giving the team more time to focus on the creative side of production instead of repetitive tasks.\u003C/p>\u003Cp>You can take this workflow even further depending on your animation studio's needs: add buttons or panels in Blender to run the entire pipeline with one click, automatically batch-generate previews for multiple shots or scenes in a single script, etc.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":254,"comment_id":255,"feature_image":256,"featured":23,"visibility":24,"created_at":257,"updated_at":229,"custom_excerpt":258,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":259,"primary_tag":260,"url":261,"excerpt":258,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":262},"d4c6e01e-3b37-4c90-b42c-cbfeecc518c2","693549d4ee42880001e4b1dc","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","2025-12-07T10:33:08.000+01:00","Learn how to generate low-resolution animation previews in Blender and automatically upload them to Kitsu. This tutorial covers Blender render settings, Python automation, FFmpeg processing, and preview publishing to streamline animation reviews.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/blender-kitsu-low-res-preview/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@allisonsaeng?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Allison Saeng\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/blender-kitsu-low-res-preview","2025-12-15T10:00:23.000+01:00",{"title":249},"blender-kitsu-low-res-preview","posts/blender-kitsu-low-res-preview",[269,270],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"slGFk0J3LjB1nVzZocG4Vk6gTdZMox1-G7CWEnotp_I",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},[275,310,337,362,388],{"id":276,"title":277,"authors":278,"body":12,"description":12,"extension":17,"html":288,"meta":289,"navigation":36,"path":300,"published_at":301,"seo":302,"slug":303,"stem":304,"tags":305,"__hash__":307,"uuid":290,"comment_id":291,"feature_image":292,"featured":23,"visibility":24,"created_at":293,"updated_at":294,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":308,"primary_tag":309,"url":298,"excerpt":295,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:build-in-public-march-2026.json","Build in Public: March 2026 Update",[279],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"68d2f1e036b5be000835a0db","Frank Rousseau","frankrousseau","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/01/photo_identite.png","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/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/","\u003Cp>Welcome to our latest CGWire and Kitsu update! Over the past three months, we’ve been hard at work, and we’re excited to share all the progress, new features, and improvements we’ve made. Let’s dive in! 🚀\u003C/p>\u003Chr>\u003Ch2 id=\"kitsu-updates-%F0%9F%A6%8A\">\u003Cstrong>Kitsu Updates 🦊\u003C/strong>\u003C/h2>\u003Cp>We’ve continued building on top of the \u003Cstrong>v1.0.0 foundations\u003C/strong>, with a focus on flexibility, security, and deeper customization:\u003C/p>\u003Cp>\u003Cstrong>1. More Entities in the Production Schedule 📊\u003C/strong>\u003Cbr>You can now schedule \u003Cstrong>sequences and edits\u003C/strong> alongside shots and assets. It’s a more complete way to plan your production and align timelines across different levels.\u003C/p>\u003Cp>\u003Cstrong>2. Stronger Two-Factor Authentication 🛡️\u003C/strong>\u003Cbr>Studios now have better visibility and control over security, with a 2FA indicator on the People page and the ability to enforce 2FA across the entire organization.\u003C/p>\u003Cp>\u003Cstrong>3. Plugins in Project Menus 🧩\u003C/strong>\u003Cbr>Plugins can now be added directly to \u003Cstrong>project menus\u003C/strong>, making it easier to integrate custom tools into everyday workflows and access them without leaving Kitsu.\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://dev.kitsu.cloud/kitsu-plugins/development.html?ref=blog.cg-wire.com#kitsu-plugins-development\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Kitsu Plugins Development | Kitsu Developer\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">Kitsu provides a public API that gives developers programmatic access to our core features to build integrations, custom tools, or extend the UI with Kitsu plugins.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/kitsu.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Kitsu Developer\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/kitsu.png\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Learn more about Kitsu plugin development here\u003C/em>\u003C/i>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"infrastructure-updates-%F0%9F%92%BD\">\u003Cstrong>Infrastructure Updates 💽\u003C/strong>\u003C/h2>\u003Cp>This quarter focused on improving reliability and performance across the platform. \u003C/p>\u003Cp>We made \u003Cstrong>video normalization more robust\u003C/strong>, ensuring smoother, more consistent playback, while a series of code optimisations and infrastructure tweaks delivered overall performance gains across Kitsu.\u003C/p>\u003Chr>\u003Ch2 id=\"events-%F0%9F%8E%AB\">\u003Cstrong>Events 🎫\u003C/strong>\u003C/h2>\u003Cp>The highlight of this quarter was definitely the very first \u003Cstrong>Kitsu Summit, \u003C/strong>and what a day it was! 🎉\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-13.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1750\" height=\"1318\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-13.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-13.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/03/image-13.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-13.png 1750w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Held in \u003Cstrong>Paris\u003C/strong>, we brought together production professionals, technical directors, and studio teams for a full day of talks, discussions, and real-world insights on using Kitsu across animation, VFX, and games.\u003C/p>\u003Cp>A huge thank you to all the \u003Cstrong>speakers, attendees, and partners\u003C/strong> who made this event possible. It was amazing to see the community come together, and we’re already thinking about what comes next. 👀\u003C/p>\u003Cp>Missed it or want to revisit the talks? You can watch all the sessions here:\u003C/p>\u003Cfigure class=\"kg-card kg-embed-card\">\u003Ciframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/videoseries?list=PLp_1gB5ZBHXpMe4lb2X6nDHmapNM7C2bP\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\">\u003C/iframe>\u003C/figure>\u003Cp>Want to dive deeper? Check out our full recap:\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card\">\u003Ca class=\"kg-bookmark-container\" href=\"https://blog.cg-wire.com/kitsu-summit-2026/\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Kitsu Summit 2026 - Where Pipelines Meet People\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">The first Kitsu Summit gathered animation, VFX, and game production professionals in Paris for 15 talks on production pipelines, studio workflows, AI in animation, and the 2026 Kitsu roadmap.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/raster.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">CGWire Blog\u003C/span>\u003Cspan class=\"kg-bookmark-publisher\">Gwénaëlle Dupré\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/4080-3072-max.jpg\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003C/figure>\u003Cp>Beyond the Kitsu Summit, we also had the chance to attend \u003Cstrong>Tokyo ACTF\u003C/strong> in March, another great opportunity to connect with teams and share what we’re building.\u003C/p>\u003Cp>Next stops: \u003Cstrong>FMX\u003C/strong> in May and \u003Cstrong>Annecy MIFA\u003C/strong> in June. If you’re attending, come say hi! 👋\u003C/p>\u003Chr>\u003Ch2 id=\"finance-%F0%9F%92%B0\">\u003Cstrong>Finance 💰\u003C/strong>\u003C/h2>\u003Cp>Things remain \u003Cstrong>stable on the financial side\u003C/strong>, which is reassuring in the current climate. We’ve continued to maintain steady operations while preparing for the next phase of growth.\u003C/p>\u003Cp>To support this, we’ve taken out a \u003Cstrong>loan to invest in our sales efforts\u003C/strong>, helping us reach more studios, strengthen our presence in key markets, and continue building momentum around Kitsu.\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://metrics.cg-wire.com/?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">CGWire - Metrics\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">This\n webpage shows the KPI&nbsp;of the company. We made them public because we \nare part of the Open Company movement. Transparency is important to \nbuild trust. Let us know if you want to see additional information.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://cg-wire.com/favicon.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Metrics\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://www.cg-wire.com/_nuxt/logo.4d5a2d7e.png\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">📊 \u003C/strong>\u003C/b>\u003Cspan style=\"white-space: pre-wrap;\">Check out our public KPIs and see how we’re doing behind the scenes\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"communication-%F0%9F%97%A3%EF%B8%8F\">\u003Cstrong>Communication 🗣️\u003C/strong>\u003C/h2>\u003Cp>Following the Kitsu Summit, we’ve been sharing the talks with the community so more teams can benefit from the insights discussed during the event.\u003C/p>\u003Cp>On the content side, we’re improving the blog with \u003Cstrong>translations in three languages\u003C/strong>, making it more accessible to our growing international audience and easier to explore Kitsu in your native language.\u003C/p>\u003Chr>\u003Ch2 id=\"studios-productions-%F0%9F%8F%AB\">\u003Cstrong>Studios &amp; Productions 🏫\u003C/strong>\u003C/h2>\u003Cp>Over the past three months, we’ve had the privilege of welcoming several top-tier organizations to the Kitsu family. These studios span games, film, and animation—and each one brings new energy, feedback, and creativity into the ecosystem.\u003C/p>\u003Cp>Here’s the full list of recent additions: 🎬\u003C/p>\u003Cul>\u003Cli>dayda.studio\u003C/li>\u003Cli>20STM\u003C/li>\u003Cli>lamola.studio\u003C/li>\u003Cli>snowcloud\u003C/li>\u003Cli>Érase una vez films\u003C/li>\u003Cli>Camello Audiovisual\u003C/li>\u003Cli>Station cachée\u003C/li>\u003Cli>xishan.studio\u003C/li>\u003C/ul>\u003Cp>We’re thrilled to support these teams as they scale their pipelines, streamline their reviews, and bring incredible stories to life. Welcome aboard! 👋✨\u003C/p>\u003Chr>\u003Ch2 id=\"closing-notes-%E2%9C%8D%EF%B8%8F\">\u003Cstrong>Closing Notes \u003C/strong>&nbsp;✍️\u003C/h2>\u003Cp>Thanks for reading and being part of the journey! 🙌\u003C/p>\u003Cp>This quarter was a special one for us, with the first \u003Cstrong>Kitsu Summit\u003C/strong> bringing the community together in a way we’ve never done before. Seeing teams share, connect, and learn from each other was a real highlight.\u003C/p>\u003Cp>We’re heading into the next quarter with plenty of energy, and we’re excited for what’s coming next.\u003C/p>\u003Cp>See you in \u003Cstrong>June\u003C/strong>! 👋\u003C/p>",{"uuid":290,"comment_id":291,"feature_image":292,"featured":23,"visibility":24,"created_at":293,"updated_at":294,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":296,"primary_tag":297,"url":298,"excerpt":295,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"6ac3f1c2-8536-4b1d-9d82-695e64d3d3be","69c0d3dacb09d8000107cfac","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/buildinpublic_march_2026.png","2026-03-23T06:47:06.000+01:00","2026-03-31T10:00:43.000+02:00","Welcome to our latest CGWire and Kitsu update! Over the past three months, we’ve been hard at work, and we’re excited to share all the progress, new features, and improvements we’ve made. Let’s dive in!",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"https://blog.cg-wire.com/build-in-public-march-2026/",4,"/posts/build-in-public-march-2026","2026-03-31T10:00:44.000+02:00",{"title":277},"build-in-public-march-2026","posts/build-in-public-march-2026",[306],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"YQ7Ie68jBzPz8Ib94gGHAVPlgEM2HXMwJYiA0OdJpJg",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},{"id":311,"title":312,"authors":313,"body":12,"description":12,"extension":17,"html":315,"meta":316,"navigation":36,"path":327,"published_at":328,"seo":329,"slug":330,"stem":331,"tags":332,"__hash__":334,"uuid":317,"comment_id":318,"feature_image":319,"featured":23,"visibility":24,"created_at":320,"updated_at":321,"custom_excerpt":322,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":335,"primary_tag":336,"url":325,"excerpt":322,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:kitsu-summit-2026.json","Kitsu Summit 2026 - Where Pipelines Meet People",[314],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🎉\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">70+ attendees. 15 talks. 2 rooms. One community.\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>On February 12th in Paris, the very first Kitsu Summit brought production professionals together for a full day of learning, sharing, and connection.\u003C/div>\u003C/div>\u003Cp>On February 12th, 2026, in the heart of Paris, the very first&nbsp;\u003Cstrong>Kitsu Summit\u003C/strong>&nbsp;became a reality.\u003C/p>\u003Cp>What began as an idea to bring the Kitsu community together turned into a full day of talks, roadmap reveals, pipeline debates, shared meals, and real human connection.\u003C/p>\u003Cp>From the moment people walked through the doors, you could feel it 🧡\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/CleanShot-2026-02-20-at-9---.09.34.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"535\" height=\"566\">\u003C/figure>\u003Chr>\u003Ch2 id=\"%F0%9F%91%95-swag-smiles-and-a-familiar-mascot\">👕 Swag, Smiles, and a Familiar Mascot\u003C/h2>\u003Cp>Before the first keynote even began, something special was waiting in the lobby.\u003C/p>\u003Cp>Our exclusive&nbsp;\u003Cstrong>Kitsu Summit swag\u003C/strong>&nbsp;was on display, embroidered white Kitsu T-shirts, tote bags, and stickers. And of course, the Kitsu mascot was there to greet everyone.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/Finder-2026-02-24-2.31.46---pm.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"974\" height=\"1162\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/Finder-2026-02-24-2.31.46---pm.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/Finder-2026-02-24-2.31.46---pm.png 974w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Our friendly Kitsu mascot, ready to welcome everyone 🧡🦊\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>It was a simple way to mark the occasion and bring everyone together.\u003C/p>\u003Chr>\u003Ch2 id=\"%F0%9F%8F%9B-a-venue-worthy-of-the-occasion\">🏛 A Venue Worthy of the Occasion\u003C/h2>\u003Cp>The summit took place at Cap Digital, a beautiful venue near Gare du Nord.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/4080-3072-max1.jpg\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1506\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/4080-3072-max1.jpg 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/4080-3072-max1.jpg 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/4080-3072-max1.jpg 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2026/02/4080-3072-max1.jpg 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>We ran two conference rooms simultaneously, with talks happening in both&nbsp;\u003Cstrong>English 🇬🇧 and French 🇫🇷\u003C/strong>, making the event accessible to a broader community.\u003C/p>\u003Cfigure class=\"kg-card kg-gallery-card kg-width-wide kg-card-hascaption\">\u003Cdiv class=\"kg-gallery-container\">\u003Cdiv class=\"kg-gallery-row\">\u003Cdiv class=\"kg-gallery-image\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/image-4.png\" width=\"2000\" height=\"1500\" loading=\"lazy\" alt=\"\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/image-4.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/image-4.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/image-4.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2026/02/image-4.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/div>\u003Cdiv class=\"kg-gallery-image\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/image-2.png\" width=\"2000\" height=\"1506\" loading=\"lazy\" alt=\"\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/image-2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/image-2.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/image-2.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2026/02/image-2.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/div>\u003C/div>\u003C/div>\u003Cfigcaption>\u003Cp>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Both rooms were full throughout the day. At times, people were standing at the back. \u003C/em>\u003C/i>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Cblockquote>💬 There is real appetite for open conversations about production workflows.\u003C/blockquote>\u003Chr>\u003Ch2 id=\"%F0%9F%8E%A4-15-talks-real-production-stories\">🎤 15 Talks, Real Production Stories\u003C/h2>\u003Cp>Across animation, VFX, and hybrid studios, speakers shared how they:\u003C/p>\u003Cp>• Produced award-winning feature films\u003Cbr>• Managed hundreds of projects at scale\u003Cbr>• Built fully open source TV pipelines\u003Cbr>• Redfined 3D asset management\u003Cbr>• Mixed 2D and 3D in hybrid workflows\u003Cbr>• Applied 3D techniques to 2D pipelines\u003Cbr>• Integrated AI thoughtfully into production 🤖\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-green\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">Check out some of the talks on our YouTube playlist linked below\u003Cbr>\u003Cbr>🔗\u003Ca href=\"https://www.youtube.com/playlist?list=PLp_1gB5ZBHXpMe4lb2X6nDHmapNM7C2bP&ref=blog.cg-wire.com\" rel=\"noreferrer\"> Kitsu Summit 2026 Talks\u003C/a>\u003C/div>\u003C/div>\u003Cp>The diversity of approaches was striking. There is no single way to use Kitsu and that flexibility is one of its strengths.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/image-3.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1506\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/image-3.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/image-3.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/image-3.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2026/02/image-3.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Cspan style=\"white-space: pre-wrap;\">Speaker \u003C/span>\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Mario Hawat \u003C/strong>\u003C/b>\u003Cspan style=\"white-space: pre-wrap;\">from \u003C/span>\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Autour De Minuit \u003C/strong>\u003C/b>\u003Cspan style=\"white-space: pre-wrap;\">sharing how Blender and Kitsu work together across diverse animation styles.\u003C/span>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"%F0%9F%9A%80-major-announcements\">🚀 Major Announcements\u003C/h2>\u003Cp>The summit was also where we unveiled:\u003C/p>\u003Cp>• Our new plugin system\u003Cbr>• Revamped developer documentation\u003Cbr>• The 2026 Kitsu roadmap\u003C/p>\u003Cp>The new developer documentation is already live:\u003Cbr>🔗 \u003Ca href=\"https://dev.kitsu.cloud/?ref=blog.cg-wire.com\">https://dev.kitsu.cloud/\u003C/a>\u003C/p>\u003Cblockquote>Shout out to CGWire CEO Frank Rousseau for hosting and MC’ing the entire day, guiding the sessions, keeping everything on track, and quite literally staying on his feet from start to finish.\u003C/blockquote>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/image-6.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1506\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/image-6.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/image-6.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/image-6.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2026/02/image-6.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">CGWire’s Product Manager, Gwenaelle Dupré, showcases the latest and greatest features of Kitsu\u003C/em>\u003C/i>\u003Cspan style=\"white-space: pre-wrap;\"> 🦊 \u003C/span>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"%F0%9F%8D%BD-production-meets-gastronomy\">🍽 Production Meets Gastronomy\u003C/h2>\u003Cp>Let’s talk about the food.\u003C/p>\u003Cp>Marie Julien Cuisine delivered a beautiful breakfast, lunch, and cocktail, with vegetarian options and dishes prepared with care and intention.\u003C/p>\u003Cp>And yes, the wine selection deserved its own mention 🍷\u003C/p>\u003Cp>We enjoyed&nbsp;\u003Cstrong>Pierres Blanches by Domaine de Brin\u003C/strong>&nbsp;and&nbsp;\u003Cstrong>Groseille from Domaine de Montaillant\u003C/strong>, bringing a distinctly French touch to the summit lunch.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/CleanShot-2026-02-24-at-3---.07.30@2x.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1794\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/CleanShot-2026-02-24-at-3---.07.30@2x.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/CleanShot-2026-02-24-at-3---.07.30@2x.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/02/CleanShot-2026-02-24-at-3---.07.30@2x.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/CleanShot-2026-02-24-at-3---.07.30@2x.png 1794w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Great food. Great wine. Great conversations.\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>Some of the most valuable discussions happened over plates and glasses, meeting studio teams we had only spoken to remotely before.\u003C/p>\u003Cblockquote>🤝 For many of us, Kitsu now truly has a face to the name.\u003C/blockquote>\u003Chr>\u003Ch2 id=\"%F0%9F%8C%8D-from-slack-messages-to-real-conversations\">🌍 From Slack Messages to Real Conversations\u003C/h2>\u003Cp>One of the most rewarding aspects of the day was finally meeting in person the people we have collaborated with for years through tickets, calls, and review notes.\u003C/p>\u003Cul>\u003Cli>Production managers.\u003C/li>\u003Cli>Technical directors.\u003C/li>\u003Cli>Studio founders.\u003C/li>\u003C/ul>\u003Cp>There is something powerful about moving from remote conversations to face-to-face exchanges.\u003C/p>\u003Cul>\u003Cli>New projects were discussed.\u003C/li>\u003Cli>Ideas were challenged.\u003C/li>\u003Cli>Connections were strengthened.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"%F0%9F%A5%82-and-we-didn%E2%80%99t-want-it-to-end\">🥂 And We Didn’t Want It to End\u003C/h2>\u003Cp>The closing cocktail turned into long conversations.\u003C/p>\u003Cp>Long enough, in fact, that we were eventually (politely) asked to leave the venue.\u003C/p>\u003Cp>Which naturally led to the speaker dinner, a relaxed evening to thank the people who made the summit possible.\u003C/p>\u003Cp>A huge shout-out to all our speakers who travelled to Paris to share their expertise. Some came from as far as&nbsp;\u003Cstrong>Hyderabad and New York\u003C/strong>&nbsp;to be there with us 🌎\u003C/p>\u003Cp>That level of commitment means a lot.\u003C/p>\u003Cp>Your generosity in sharing your pipelines, your challenges, and your lessons learned is what made this summit meaningful.\u003C/p>\u003Chr>\u003Ch2 id=\"%F0%9F%92%9B-a-milestone-for-the-community\">💛 A Milestone for the Community\u003C/h2>\u003Cp>The first Kitsu Summit proved something important.\u003C/p>\u003Cul>\u003Cli>Studios want to share what they are building.\u003C/li>\u003Cli>They want to see how others solve similar challenges.\u003C/li>\u003Cli>They want honest conversations about workflows, tools, and production realities.\u003C/li>\u003C/ul>\u003Cp>And most of all, they want to meet the people behind the projects. Seeing so many familiar names become real faces was one of the most rewarding parts of the day.\u003C/p>\u003Cp>Thank you to everyone who attended, spoke, supported, and stayed until the lights went out. This was not just a conference. It was the beginning of something bigger 🦊\u003C/p>\u003Cp>A big thank you to our sponsors \u003Cstrong>Ranch Computing, TVPaint\u003C/strong> &amp; \u003Cstrong>Lenovo\u003C/strong> for supporting the Kitsu Summit and helping make the event possible, including generously sponsoring the lunch buffet.\u003C/p>\u003Cp>Lenovo’s high-performance workstations power demanding productions across animation and VFX, and we were proud to have them alongside us in Paris.\u003C/p>\u003Cp>🔗 Lenovo: \u003Ca href=\"https://www.lenovo.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">https://www.lenovo.com/\u003C/a>\u003Cbr>🔗 TVPaint: \u003Ca href=\"https://tvpaint.com/?ref=blog.cg-wire.com\">https://tvpaint.com/\u003C/a>\u003Cbr>🔗 Ranch Computer: \u003Ca href=\"https://www.ranchcomputing.com/en/?ref=blog.cg-wire.com\">https://www.ranchcomputing.com/\u003C/a>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/CleanShot-2026-02-24-at-3---.10.39@2x.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1490\" height=\"1214\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/CleanShot-2026-02-24-at-3---.10.39@2x.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/CleanShot-2026-02-24-at-3---.10.39@2x.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/CleanShot-2026-02-24-at-3---.10.39@2x.png 1490w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">A big thank you to our sponsors \u003C/em>\u003C/i>\u003Cspan style=\"white-space: pre-wrap;\">🙌\u003C/span>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"see-you-next-year-%F0%9F%91%8B\">See You Next Year 👋\u003C/h2>\u003Cp>If this first edition proved anything, it is that production professionals want spaces like this.\u003C/p>\u003Cul>\u003Cli>More transparency.\u003C/li>\u003Cli>More shared pipelines.\u003C/li>\u003Cli>More honest conversations.\u003C/li>\u003C/ul>\u003Cp>We cannot wait to build the next one with you.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":317,"comment_id":318,"feature_image":319,"featured":23,"visibility":24,"created_at":320,"updated_at":321,"custom_excerpt":322,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":323,"primary_tag":324,"url":325,"excerpt":322,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"789fdd0a-2cb3-476b-bfe0-fb9a62fb9881","699822dc5f0dd400018b08a1","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/4080-3072-max.jpg","2026-02-20T10:01:16.000+01:00","2026-03-04T12:37:27.000+01:00","The first Kitsu Summit gathered animation, VFX, and game production professionals in Paris for 15 talks on production pipelines, studio workflows, AI in animation, and the 2026 Kitsu roadmap.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"https://blog.cg-wire.com/kitsu-summit-2026/",5,"/posts/kitsu-summit-2026","2026-03-01T15:40:29.000+01:00",{"title":312},"kitsu-summit-2026","posts/kitsu-summit-2026",[333],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"P2z88v0_-MnzJ98RMzz9m8Ol9m-DBcSAg5mgZm9uUnk",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},{"id":338,"title":339,"authors":340,"body":12,"description":12,"extension":17,"html":342,"meta":343,"navigation":36,"path":352,"published_at":353,"seo":354,"slug":355,"stem":356,"tags":357,"__hash__":359,"uuid":344,"comment_id":345,"feature_image":346,"featured":23,"visibility":24,"created_at":347,"updated_at":348,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":360,"primary_tag":361,"url":351,"excerpt":295,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:build-in-public-december-2025-update.json","Build in Public: December 2025 Update",[341],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>Welcome to our latest CGWire and Kitsu update! Over the past three months, we’ve been hard at work, and we’re excited to share all the progress, new features, and improvements we’ve made. Let’s dive in! 🚀\u003C/p>\u003Chr>\u003Ch2 id=\"kitsu-updates-%F0%9F%A6%8A\">\u003Cstrong>Kitsu Updates 🦊\u003C/strong>\u003C/h2>\u003Cp>We’ve hit a major milestone—\u003Cstrong>Kitsu is now officially in version 1.0.0\u003C/strong>! 🎉\u003C/p>\u003Cp>This marks a new chapter for the platform, with more flexibility, performance, and polish across the board. From the brand-new plugin system to smarter scheduling and review tools, here’s a look at what’s new:\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>1. 🧩 Plugin System\u003C/strong>\u003Cbr>Kitsu’s new plugin system lets teams extend the API—and soon, even the UI—with custom features. Tailor Kitsu to your studio’s exact needs with just a bit of code.\u003C/p>\u003Cp>🔗 \u003Ca href=\"https://zou.cg-wire.com/plugins/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Learn more about plugins\u003C/a>\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>2. 🗓️ Schedule View &amp; Timesheet Overlay for Task Types\u003C/strong>\u003Cbr>You can now toggle a schedule view from any task type page and overlay timesheet data to compare time spent vs estimates—perfect for tracking real progress at a glance.\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>3. 📝 Clients Can Now Attach Frames to Comments\u003C/strong>\u003Cbr>Clients can now pin an exact frame when leaving feedback in shared playlists. It’s clearer, more contextual, and avoids the usual back-and-forth.\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>4. 🧠 Add Multiple Versions of the Same Entity to a Playlist\u003C/strong>\u003Cbr>Need to review animation, comp, and FX for the same shot? You can now add different task types from the same entity to a single playlist—great for cross-department reviews.\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cstrong>5. ✉️ Playlist Notifications for Clients\u003C/strong>\u003Cbr>Skip the manual email. When you share a playlist, you can now notify clients directly via Kitsu—they’ll receive a clean email with the link and instructions.\u003C/p>\u003Chr>\u003Ch2 id=\"infrastructure-updates-%F0%9F%92%BD\">\u003Cstrong>Infrastructure Updates 💽\u003C/strong>\u003C/h2>\u003Cp>This quarter, our infrastructure efforts were all about \u003Cstrong>optimisation\u003C/strong>. One major milestone: we upgraded our \u003Cstrong>PostgreSQL database\u003C/strong>, resulting in a noticeable performance boost across the platform.\u003C/p>\u003Cp>We also added a small but meaningful feature for our sustainability-minded users, as you can now \u003Cstrong>access your carbon invoices directly\u003C/strong> from the subscription management UI. Everything you need to report your carbon consumption tied to Kitsu is just a click away.\u003C/p>\u003Chr>\u003Ch2 id=\"events-%F0%9F%8E%AB\">\u003Cstrong>Events 🎫\u003C/strong>\u003C/h2>\u003Cp>We had a fantastic showing at \u003Cstrong>RADI in Angoulême\u003C/strong>, where we officially announced \u003Cstrong>Kitsu v1.0.0\u003C/strong> in front of an audience of over 400 animation professionals—a big moment for the team and the product!\u003C/p>\u003Cp>Meanwhile, we’re deep in preparation for the upcoming \u003Cstrong>Kitsu Summit\u003C/strong>. With the foundations in place, our focus now is making sure everything runs smoothly. We’ll be sharing more as we count down to February.\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://www.cg-wire.com/kitsu-summit?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Kitsu Summit 2026\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">February 12, 2026 - Paris, France - Join the Future of Production Collaboration\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/favicon-2.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Kitsu Summit 2026\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/meetup.af7c0c6c.jpg\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">👆 Get all the details and grab your tickets!\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"finance-%F0%9F%92%B0\">\u003Cstrong>Finance 💰\u003C/strong>\u003C/h2>\u003Cp>Q4 closed on a strong note, with a \u003Cstrong>slight but steady income increase\u003C/strong> over 2024, something we’re proud of given the current market conditions. \u003C/p>\u003Cp>We also applied for a \u003Cstrong>new loan from the French BPI\u003C/strong> to support our continued investment in product development and community growth.\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://metrics.cg-wire.com/?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">CGWire - Metrics\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">This\n webpage shows the KPI&nbsp;of the company. We made them public because we \nare part of the Open Company movement. Transparency is important to \nbuild trust. Let us know if you want to see additional information.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://cg-wire.com/favicon.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Metrics\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://www.cg-wire.com/_nuxt/logo.4d5a2d7e.png\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">📊 \u003C/strong>\u003C/b>\u003Cspan style=\"white-space: pre-wrap;\">Check out our public KPIs and see how we’re doing behind the scenes\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"communication-%F0%9F%97%A3%EF%B8%8F\">\u003Cstrong>Communication 🗣️\u003C/strong>\u003C/h2>\u003Cp>We’ve been spreading the word! With the \u003Cstrong>Kitsu Summit\u003C/strong> on the horizon and \u003Cstrong>v1.0.0 officially released\u003C/strong>, we kicked off a French PR campaign to mark the milestone.\u003C/p>\u003Cp>Kitsu was recently featured in both \u003Cstrong>Écran Total\u003C/strong> and \u003Cstrong>3DVF\u003C/strong>, highlighting our mission to support creative industries with powerful, user-friendly tools:\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://3dvf.com/collaboration-et-gestion-de-production-kitsu-passe-en-version-1/?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Collaboration et gestion de production&nbsp;: Kitsu passe en version 1\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">Découvrez les avancées de Kitsu V1 pour l’animation et VFX. Optimisez production avec outils de planification, budget et plugins.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/favicon-3.jpg\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">3DVF\u003C/span>\u003Cspan class=\"kg-bookmark-publisher\">Benoît Rogez\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/kitsu-3.webp\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">📚 Kitsu 1.0 coverage on 3DVF\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Cfigure class=\"kg-card kg-embed-card kg-card-hascaption\">\u003Ciframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/xPwCcV0X3Xw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\" title=\"Kitsu by CGWire : V1, finances, bilan carbone, Autodesk... Kitsu nous dit tout !\">\u003C/iframe>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">🎥 Video interview on Écran Total\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://ecran-total.fr/2025/11/18/interview-de-franck-rousseau-fondateur-et-directeur-general-de-cgwire-il-faut-des-outils-capables-de-faire-cohabiter-industrie-et-creation-artistique/?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Frank Rousseau, fondateur et directeur général de CGWire : “Il faut des outils capables de faire cohabiter industrie et création artistique”\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">CGWire est né du constat que les studios d’animation manquaient d’outils efficaces pour structurer leur production et coordonner leurs équipes. De cette nécessité est née Kitsu, une plateforme open source qui accompagne aujourd’hui la transformation numérique des studios en simplifiant le suivi des tâches et la collaboration à distance. Entretien avec Frank Rousseau, son créateur.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/et-favicon-1.svg\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Ecran Total\u003C/span>\u003Cspan class=\"kg-bookmark-publisher\">Joseph Le Fer\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/frank_rousseau_cgwire-1.jpg\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">📰 Interview with Franck Rousseau (Écran Total)\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Cp>More to come as we continue sharing what makes Kitsu special with teams across the globe.\u003C/p>\u003Chr>\u003Ch2 id=\"studios-productions-%F0%9F%8F%AB\">\u003Cstrong>Studios &amp; Productions 🏫\u003C/strong>\u003C/h2>\u003Cp>Over the past three months, we’ve had the privilege of welcoming several top-tier organizations to the Kitsu family. These studios span games, film, and animation—and each one brings new energy, feedback, and creativity into the ecosystem.\u003C/p>\u003Cp>Here’s the full list of recent additions: 🎬\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"https://pianosanofilms.fr/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Piano Sano\u003C/a>\u003C/li>\u003Cli>Clown 13\u003C/li>\u003Cli>\u003Ca href=\"https://www.k3dvfx.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Kiddigraph\u003C/a>\u003C/li>\u003Cli>Soup Kitchen\u003C/li>\u003Cli>\u003Ca href=\"https://www.offensivegroup.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Offensive Marketing Group\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://studio.grange-animation.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">La Grange Animation\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://scrawlanimation.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Scrawl animation\u003C/a>\u003C/li>\u003C/ul>\u003Cp>We’re thrilled to support these teams as they scale their pipelines, streamline their reviews, and bring incredible stories to life. Welcome aboard! 👋✨\u003C/p>\u003Chr>\u003Ch2 id=\"closing-notes-%E2%9C%8D%EF%B8%8F\">\u003Cstrong>Closing Notes \u003C/strong>&nbsp;✍️\u003C/h2>\u003Cp>Thanks for reading and following along with our journey! 🙌\u003C/p>\u003Cp>Whether you’re a long-time user or just discovering Kitsu, we’re always excited to connect. If you have questions, feedback, or ideas to share, don’t hesitate to reach out. We love hearing from the community. 💬\u003C/p>\u003Cp>As we wrap up the year, we want to say a big \u003Cstrong>thank you\u003C/strong> for your continued support, and we wish you a joyful start to \u003Cstrong>2026\u003C/strong> filled with creativity, collaboration, and success. ✨\u003C/p>\u003Cp>We’ll be back in \u003Cstrong>March\u003C/strong> with more updates, insights, and behind-the-scenes news. Until then, take care and see you soon! 👋 🎉\u003C/p>",{"uuid":344,"comment_id":345,"feature_image":346,"featured":23,"visibility":24,"created_at":347,"updated_at":348,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":349,"primary_tag":350,"url":351,"excerpt":295,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"6978bb0f-3180-44a6-8628-f1b466e74f04","6948df400bfbc7000190a8f5","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/12/buildinpublic_december_2025.png","2025-12-22T07:03:44.000+01:00","2026-03-26T10:56:37.000+01:00",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"https://blog.cg-wire.com/build-in-public-december-2025-update/","/posts/build-in-public-december-2025-update","2025-12-31T13:00:26.000+01:00",{"title":339},"build-in-public-december-2025-update","posts/build-in-public-december-2025-update",[358],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"yMYtnuX3VF_UaRyJJa9UrMjF-6NRLWK6qobtvzIiAx0",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},{"id":363,"title":364,"authors":365,"body":12,"description":12,"extension":17,"html":367,"meta":368,"navigation":36,"path":378,"published_at":379,"seo":380,"slug":381,"stem":382,"tags":383,"__hash__":385,"uuid":369,"comment_id":370,"feature_image":371,"featured":23,"visibility":24,"created_at":372,"updated_at":373,"custom_excerpt":374,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":386,"primary_tag":387,"url":377,"excerpt":374,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:kitsu-v1-0-0-is-out.json","Kitsu v1.0.0 is out!",[366],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>From TV Series to famous feature films, Kitsu was involved in a wide range of production styles, including 2D, 3D, 2D/3D, VFX, Stop-Motion, immersive experiences, and monumental projections.\u003C/p>\u003Cp>Better, over the past few years, Kitsu has accompanied the animation and VFX industries through all its major changes: pipeline and workflow maturity, lockdown, platform booming, and the recent crisis. \u003C/p>\u003Cp>Kitsu enabled studios to adopt distributed setups based on remote work and co-productions. During the good days, it made it easy to onboard many artists quickly, and then it facilitated organizing teams in a lean way.\u003C/p>\u003Cp>Today, over 10,000 professionals in the animation and VFX industries use Kitsu daily. Thousands of hours of movies were reviewed and delivered through our system. Kitsu was battle-hardened on many productions and proved its excellence. Movies that used Kistu won all the main awards (Cristal, Oscar, Palme d'Or, etc.) and met success by reaching a large audience. \u003C/p>\u003Cp>The game industry also benefited from Kitsu's power. Creative teams from prominent licensing companies adopted it to manage their assets and communicate with artists.\u003C/p>\u003Cp>Students enjoyed Kitsu too, by acquiring a professional frame during their studies. Many young professionals were ready to work in a team environment when they started with their first studio. \u003C/p>\u003Cp>Most of all, our community helped to refine, improve, and debug the solution throughout the process. We received countless feedback and contributions. It allowed us to build the most accurate software on the market.\u003C/p>\u003Cp>That's why, today, we are proud to announce that Kitsu is now available as version 1.0.0! It felt natural to mark the fact that Kitsu is now a robust software that can be used entirely in production. He has successfully proved that it is a fully functional part of a production pipeline. You can now feel confident using it for your productions.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/website_illustrations_illustration_awards_coloring_v6-2-3-.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1481\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/website_illustrations_illustration_awards_coloring_v6-2-3-.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/website_illustrations_illustration_awards_coloring_v6-2-3-.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/website_illustrations_illustration_awards_coloring_v6-2-3-.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/website_illustrations_illustration_awards_coloring_v6-2-3-.png 2000w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Ch3 id=\"main-recent-new-features\">Main Recent New Features\u003C/h3>\u003Cp>All versions come with new features. Below are the main additions we made to version 1.0.0.\u003C/p>\u003Cp>\u003Cem>Contact Sheets\u003C/em>\u003C/p>\u003Cp>Every view can be seen as a contact sheet to get a more visual overview of the production!\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/screenshot-kitsu-vue-principale.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1048\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/screenshot-kitsu-vue-principale.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/screenshot-kitsu-vue-principale.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/screenshot-kitsu-vue-principale.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2025/11/screenshot-kitsu-vue-principale.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Cp>\u003Cem>Versioned Schedule\u003C/em>\u003C/p>\u003Cp>You can forecast your schedule and try different scenarios. It's possible to display this same schedule based on the actual dates of tasks.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/kitsu-plannin.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"991\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/kitsu-plannin.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/kitsu-plannin.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/kitsu-plannin.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2025/11/kitsu-plannin.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Cp>\u003Cem>Task Schedule Split View\u003C/em>\u003C/p>\u003Cp>To make progress more visual, you can display your schedule as a split view.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/Capture-d-----cran-du-2025-11-14-13-52-57.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1044\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/Capture-d-----cran-du-2025-11-14-13-52-57.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/Capture-d-----cran-du-2025-11-14-13-52-57.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/Capture-d-----cran-du-2025-11-14-13-52-57.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2025/11/Capture-d-----cran-du-2025-11-14-13-52-57.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003Cem>Task Schedule Comparison\u003C/em>\u003C/p>\u003Cp>Still in the task schedule, you can display the previous steps and the day when time sheets were filled. This way, you can set dates with context.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/screenshot-kitsu-planning.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"991\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/screenshot-kitsu-planning.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/screenshot-kitsu-planning.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/screenshot-kitsu-planning.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2025/11/screenshot-kitsu-planning.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Cp>\u003Cem>Budget\u003C/em>\u003C/p>\u003Cp>With Kitsu, you can now forecast your budget and try different scenarios. It includes software and hardware costs. It also allows for comparison with real expenses.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/screenshot-kitsu-budget.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"989\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/screenshot-kitsu-budget.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/screenshot-kitsu-budget.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/screenshot-kitsu-budget.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2025/11/screenshot-kitsu-budget.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Cp>\u003Cem>Plugins\u003C/em>\u003C/p>\u003Cp>Last but not least, you can now tweak Kitsu for any of your use cases. For that, you can set up a new plugin in Kitsu to extend its capabilities. \u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image-1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"950\" height=\"1142\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/image-1.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image-1.png 950w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Ch3 id=\"upcoming-breaking-changes\">Upcoming Breaking Changes\u003C/h3>\u003Cp>This new version is a prelude to the 1.1.0 version that will include some breaking changes. There won't be any backward compatibility. These changes are tied to the execution environment and are listed below:\u003C/p>\u003Cul>\u003Cli>Kitsu REST API (Zou): Drop Support for:\u003Cul>\u003Cli>Postgres &lt; 14\u003C/li>\u003Cli>Python &lt; 3.10\u003C/li>\u003C/ul>\u003C/li>\u003Cli>Python API (Gazu) - Drop Support for: Python 2.7 and Python 3.6\u003C/li>\u003Cli>Kitsu UI: Only the following web browsers will be supported\u003Cul>\u003Cli>Chrome &gt;=107\u003C/li>\u003Cli>Edge &gt;=107\u003C/li>\u003Cli>Firefox &gt;=104\u003C/li>\u003Cli>Safari &gt;=16\u003C/li>\u003C/ul>\u003C/li>\u003C/ul>\u003Cp>If you can't do without these tools, v1.0.0 will always be a robust software for you. If you self-host Kitsu and want to stick with the latest versions, you will have to update the dependencies. Cloud and On-Premise users are not affected by the Kitsu REST API changes.\u003C/p>\u003Ch3 id=\"whats-next\">What's next\u003C/h3>\u003Cp>Since the beginning of Kitsu, we have operated two main developments. The first one was dedicated to Artists, Supervisors, and Directors. It&nbsp;included the basic features necessary for collaboration and review of the work done, such as task dispatching, commenting, status updates, and the review engine.\u003C/p>\u003Cp>Then, we ran a new phase dedicated to Producers with scheduling, budget, and cross-project features (and soon-to-come, carbon consumption tracking). We also added the capability to compare forecasting with real data.\u003C/p>\u003Cp>Following these two significant additions, we have entered a consolidation phase, during which we will refine all existing features and optimize performance. Once this operation is complete, we will proceed to the third phase, dedicated to Technical Directors. \u003C/p>\u003Cp>We will focus on integrations and extension capabilities of Kisu. In other words, we will make the use of Kitsu with DCCs seamless and ensure that our plugin system covers all your use cases. \u003C/p>\u003Cp>Overall, version 1.0.0 is a significant milestone for Kitsu. It wraps a long and committed work and opens the door to a new era for the software. We will keep pushing it forward to allow you to\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image-2.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"906\" height=\"965\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/image-2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image-2.png 906w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"celebrate-it\">Celebrate it!\u003C/h3>\u003Cp>We will celebrate this release with a full day of conference dedicated to Kitsu on February 12, 2026 in the heart of Paris, France! We will deliver more details about the future roadmap. Now that Kitsu impacts so many creative professionals, this event will have a significant impact on the industry. Let's come together to design the future of production collaboration. Join us for this unique event!\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card\">\u003Ca class=\"kg-bookmark-container\" href=\"https://www.cg-wire.com/kitsu-summit?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Kitsu Summit 2026\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">February 12, 2026 - Paris, France - Join the Future of Production Collaboration\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/favicon-4.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Kitsu Summit 2026\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/meetup.af7c0c6c-1.jpg\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003C/figure>\u003Cp>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/11/image.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/11/image.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2025/11/image.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/image.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>",{"uuid":369,"comment_id":370,"feature_image":371,"featured":23,"visibility":24,"created_at":372,"updated_at":373,"custom_excerpt":374,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":375,"primary_tag":376,"url":377,"excerpt":374,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"faf7a825-8874-461f-bb36-889ea35a9748","691f8ab22d9da500010f93c1","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/11/Kitsu-V1_Final.png","2025-11-20T22:40:02.000+01:00","2025-11-26T12:52:20.000+01:00","From TV Series to famous feature films, Kitsu was involved in a wide range of productions, including 2D, 3D, 2D/3D, VFX, Stop-Motion, immersive experiences, and monumental projections. Better, over the past few years...",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"https://blog.cg-wire.com/kitsu-v1-0-0-is-out/","/posts/kitsu-v1-0-0-is-out","2025-11-26T12:50:07.000+01:00",{"title":364},"kitsu-v1-0-0-is-out","posts/kitsu-v1-0-0-is-out",[384],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"LP0fd_mJA6HdOktLmDnsoL5pwSwjC-9qMNis2FUw9II",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},{"id":389,"title":390,"authors":391,"body":12,"description":12,"extension":17,"html":393,"meta":394,"navigation":36,"path":403,"published_at":404,"seo":405,"slug":406,"stem":407,"tags":408,"__hash__":410,"uuid":395,"comment_id":396,"feature_image":397,"featured":23,"visibility":24,"created_at":398,"updated_at":399,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":411,"primary_tag":412,"url":402,"excerpt":295,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:build-in-public-september-2025-update.json","Build in Public: September 2025 Update",[392],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>Welcome to our latest CGWire and Kitsu update! Over the past three months, we’ve been hard at work, and we’re excited to share all the progress, new features, and improvements we’ve made. Let’s dive in! 🚀\u003C/p>\u003Chr>\u003Ch2 id=\"kitsu-updates-%F0%9F%A6%8A\">\u003Cstrong>Kitsu Updates 🦊\u003C/strong>\u003C/h2>\u003Cp>We’re continually adding new and exciting features to Kitsu. Here are some of the highlights from the past few months:\u003C/p>\u003Cp>\u003C/p>\u003Ch3 id=\"1-schedule-versioning-%F0%9F%93%85\">\u003Cstrong>1. Schedule Versioning 📅\u003C/strong>\u003C/h3>\u003Cp>You can now create and switch between different versions of your schedule—ideal for testing crew changes, alternate timelines, or forecasting delays without touching your main plan.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 id=\"2-full-budget-forecasting-%F0%9F%92%BB%F0%9F%93%8A\">\u003Cstrong>2. Full Budget Forecasting 💻📊\u003C/strong>\u003C/h3>\u003Cp>Budgeting now includes \u003Cstrong>hardware and software costs\u003C/strong>, pulled directly from your equipment and license lists. Just tick the box to get a more complete view of your production spend.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 id=\"3-faster-navigation-between-tasks-%E2%9A%A1%F0%9F%8E%AC\">\u003Cstrong>3. Faster Navigation Between Tasks ⚡🎬\u003C/strong>\u003C/h3>\u003Cp>New navigation buttons let you jump between tasks and entities without going back to the spreadsheet view—great for reviewing items quickly and staying in flow.\u003C/p>\u003Cp>\u003C/p>\u003Ch3 id=\"4-smarter-more-expressive-comments-%F0%9F%92%AC%E2%9C%A8\">\u003Cstrong>4. Smarter, More Expressive Comments 💬✨\u003C/strong>\u003C/h3>\u003Cp>You can now cross-post comments to related tasks with #, attach files directly to replies, and add \u003Cstrong>emojis\u003C/strong> to keep feedback clear, organized, and full of personality. 🙌\u003C/p>\u003Cp>\u003C/p>\u003Ch3 id=\"5-enhanced-camera-controls-in-the-object-viewer-%F0%9F%96%B1%EF%B8%8F%F0%9F%93%90\">\u003Cstrong>5. Enhanced Camera Controls in the Object Viewer 🖱️📐\u003C/strong>\u003C/h3>\u003Cp>You now have more control over HDR rotation and field-of-view settings when viewing assets. Shortcuts work with both mouse and touch, and they’ve been added to the Shortcut Modal for easy access.\u003C/p>\u003Chr>\u003Ch2 id=\"infrastructure-updates-%F0%9F%92%BD\">\u003Cstrong>Infrastructure Updates 💽\u003C/strong>\u003C/h2>\u003Cul>\u003Cli>We’ve been working behind the scenes to improve \u003Cstrong>video processing performance\u003C/strong>, aiming to make previews faster and more reliable across all types of content. \u003C/li>\u003Cli>For those who need them, \u003Cstrong>monthly carbon invoices\u003C/strong> for subscriptions are coming soon, just a bit more paperwork to automate before they’re live!\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"events-%F0%9F%8E%AB\">\u003Cstrong>Events 🎫\u003C/strong>\u003C/h2>\u003Cul>\u003Cli>We’re excited to be attending \u003Cstrong>RADI\u003C/strong> this quarter—looking forward to meeting teams working at the intersection of real-time and animation!\u003C/li>\u003Cli>Even bigger news: the \u003Cstrong>first-ever Kitsu Summit\u003C/strong> is happening on \u003Cstrong>February 12, 2026\u003C/strong>, in \u003Cstrong>Paris\u003C/strong>. It’ll be a full day of conferences, keynotes, and community connection, featuring speakers from studios like \u003Cstrong>Blender Studio\u003C/strong>, \u003Cstrong>Remembers\u003C/strong>, and \u003Cstrong>Ryff\u003C/strong>.\u003C/li>\u003C/ul>\u003Cfigure class=\"kg-card kg-bookmark-card kg-card-hascaption\">\u003Ca class=\"kg-bookmark-container\" href=\"https://www.cg-wire.com/kitsu-summit?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Kitsu Summit 2026\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">February 12, 2026 - Paris, France - Join the Future of Production Collaboration\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/favicon-2.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Kitsu Summit 2026\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/thumbnail/meetup.af7c0c6c.jpg\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">👆 Get all the details and grab your tickets!\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Chr>\u003Ch2 id=\"finance-%F0%9F%92%B0\">\u003Cstrong>Finance 💰\u003C/strong>\u003C/h2>\u003Cul>\u003Cli>Q3 brought in strong income compared to previous years, great to see continued momentum even as the market shifts. \u003C/li>\u003Cli>We also secured a couple of grants this quarter, including \u003Cstrong>CIR\u003C/strong> and a second round of \u003Cstrong>CNC support\u003C/strong>, which will help us continue investing in product improvements and community growth.\u003C/li>\u003C/ul>\u003Cfigure class=\"kg-card kg-bookmark-card\">\u003Ca class=\"kg-bookmark-container\" href=\"https://metrics.cg-wire.com/?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">CGWire - Metrics\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">This\n webpage shows the KPI&nbsp;of the company. We made them public because we \nare part of the Open Company movement. Transparency is important to \nbuild trust. Let us know if you want to see additional information.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://cg-wire.com/favicon.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Metrics\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://www.cg-wire.com/_nuxt/logo.4d5a2d7e.png\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003C/figure>\u003Chr>\u003Ch2 id=\"sustainability-%F0%9F%8C%B3\">\u003Cstrong>Sustainability \u003C/strong>🌳\u003C/h2>\u003Cp>We’ve just published our \u003Cstrong>2024 Carbon Report\u003C/strong>, offering a transparent look at CGWire’s environmental footprint. The biggest emissions came from long-haul travel and cloud infrastructure, and we’re already taking steps to reduce both through smarter hosting and internal practices.\u003C/p>\u003Cfigure class=\"kg-card kg-bookmark-card\">\u003Ca class=\"kg-bookmark-container\" href=\"https://www.cg-wire.com/carbon-report?ref=blog.cg-wire.com\">\u003Cdiv class=\"kg-bookmark-content\">\u003Cdiv class=\"kg-bookmark-title\">Carbon Report\u003C/div>\u003Cdiv class=\"kg-bookmark-description\">At CGWire, we measured the real impact of our activity on the environment. This 2024 report highlights our main emission posts, our progress margins, and the concrete actions we are committed to to reduce our footprint.\u003C/div>\u003Cdiv class=\"kg-bookmark-metadata\">\u003Cimg class=\"kg-bookmark-icon\" src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/icon/favicon-3.png\" alt=\"\">\u003Cspan class=\"kg-bookmark-author\">Carbon Report\u003C/span>\u003C/div>\u003C/div>\u003Cdiv class=\"kg-bookmark-thumbnail\">\u003Cimg src=\"https://www.cg-wire.com/_nuxt/carbon.107a8a01.png\" alt=\"\" onerror=\"this.style.display = 'none'\">\u003C/div>\u003C/a>\u003C/figure>\u003Chr>\u003Ch2 id=\"communication-%F0%9F%97%A3%EF%B8%8F\">\u003Cstrong>Communication 🗣️\u003C/strong>\u003C/h2>\u003Cul>\u003Cli>The \u003Ca href=\"https://www.cg-wire.com/kitsu-summit?ref=blog.cg-wire.com\" rel=\"noreferrer\">\u003Cstrong>Kitsu Summit\u003C/strong> \u003C/a>is now officially announced—mark your calendars for \u003Cstrong>February 12, 2026\u003C/strong>! \u003C/li>\u003Cli>We’re also working on fresh \u003Cstrong>visuals for our Annecy MIFA booth\u003C/strong>, so keep an eye out for a new look at upcoming events.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"studios-productions-%F0%9F%8F%AB\">\u003Cstrong>Studios &amp; Productions 🏫\u003C/strong>\u003C/h2>\u003Cp>Over the past three months, we’ve had the privilege of welcoming several top-tier organizations to the Kitsu family. These studios span games, film, and animation—and each one brings new energy, feedback, and creativity into the ecosystem.\u003C/p>\u003Cp>Here’s the full list of recent additions: 🎬\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"https://gaoshanpictures.com/?ref=blog.cg-wire.com\">Gaoshan Pictures\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://vawworldstudios.com/?ref=blog.cg-wire.com\">VAW World Studios\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://monumental.art/?ref=blog.cg-wire.com\">Monumental\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://www.ecv.fr/?ref=blog.cg-wire.com\">ECV School\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://datawithvision.com/?ref=blog.cg-wire.com\">Data With Vision\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://k3dvfx.com/?ref=blog.cg-wire.com\">K3D VFX\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://www.les-monstres.com/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Les Monstres\u003C/a>\u003C/li>\u003C/ul>\u003Cp>We’re thrilled to support these teams as they scale their pipelines, streamline their reviews, and bring incredible stories to life. Welcome aboard! 👋✨\u003C/p>\u003Chr>\u003Ch2 id=\"closing-notes-%E2%9C%8D%EF%B8%8F\">\u003Cstrong>Closing Notes \u003C/strong>&nbsp;✍️\u003C/h2>\u003Cp>Thanks for reading and following along with our journey! 🙌\u003C/p>\u003Cp>Whether you’re a long-time user or just discovering Kitsu, we’re always happy to connect. If you have any questions, feedback, or ideas you’d like to share, don’t hesitate to reach out—we love hearing from the community. 💬\u003C/p>\u003Cp>We’ll be back in D\u003Cstrong>ecember\u003C/strong> with more updates, insights, and behind-the-scenes news. Until then, take care and keep creating! 👋\u003C/p>",{"uuid":395,"comment_id":396,"feature_image":397,"featured":23,"visibility":24,"created_at":398,"updated_at":399,"custom_excerpt":295,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":400,"primary_tag":401,"url":402,"excerpt":295,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"21730203-d4c4-416d-a267-b8c90316b392","68d3b109302e8e0001b2efc8","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/buildinpublic_september_2025.jpg","2025-09-24T10:51:21.000+02:00","2026-03-26T10:51:14.000+01:00",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"https://blog.cg-wire.com/build-in-public-september-2025-update/","/posts/build-in-public-september-2025-update","2025-09-30T10:00:52.000+02:00",{"title":390},"build-in-public-september-2025-update","posts/build-in-public-september-2025-update",[409],{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},"g46NEmseXIZgVhl0MpK1mH7ZsikTjOkmjj7EJ8e1pdw",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":30,"name":31,"slug":32,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":33},[414,441,467,494,520],{"id":415,"title":416,"authors":417,"body":12,"description":12,"extension":17,"html":419,"meta":420,"navigation":36,"path":431,"published_at":432,"seo":433,"slug":434,"stem":435,"tags":436,"__hash__":438,"uuid":421,"comment_id":422,"feature_image":423,"featured":23,"visibility":24,"created_at":424,"updated_at":425,"custom_excerpt":426,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":439,"primary_tag":440,"url":430,"excerpt":426,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:remembers-kitsu-arco-production.json","How \"Remembers Studio\" Used Kitsu to Scale Up Production on Arco",[418],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🎬\u003C/div>\u003Cdiv class=\"kg-callout-text\">Scaling a studio is not about adding tools, it is about introducing structure without slowing artists down.\u003C/div>\u003C/div>\u003Cfigure class=\"kg-card kg-embed-card kg-card-hascaption\">\u003Ciframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/HlvIZsmB8-8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen=\"\" title=\"Piloter la production d’un long métrage : étude de cas “Arco” | Audrey Tondre (Remembers Studio)\">\u003C/iframe>\u003Cfigcaption>\u003Cp>\u003Cspan style=\"white-space: pre-wrap;\">To watch the full talk upon which this article is based, check out the video above\u003C/span>\u003C/p>\u003C/figcaption>\u003C/figure>\u003Cp>When the animated feature film \u003Cem>Arco\u003C/em> premiered in autumn 2025, the release was met with considerable recognition: a selection at the Cannes Film Festival and a Crystal Award at the Annecy International Animation Film Festival. Behind that success was a small Parisian studio, Remembers, navigating its first feature film with a lean production team and a project management tool most of its artists had never heard of before: Kitsu.\u003C/p>\u003Cp>At the Kitsu Submit conference, Audrey Tondre, the production director on \u003Cem>Arco\u003C/em>, shared an honest and detailed account of how she introduced Kitsu to a studio that was not asking for it, and why it turned out to be exactly the right move.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Audrey joined Remembers specifically to produce \u003Cem>Arco\u003C/em>, a traditional hand-drawn 2D feature directed by Ugo Bienvenu and co-produced by Remembers (which Bienvenu runs with partner Félix de Givry) and the company Mountain (founded by Sophie Mas and Natalie Portman). Her background before this project was almost exclusively in 3D feature films, a world where production tracking tools are deeply embedded in every workflow.\u003C/p>\u003Cp>Coming into a 2D studio, producing its first feature was a significant context shift. And that gap between worlds is precisely what makes her story useful for any animation studio looking to grow.\u003C/p>\u003Chr>\u003Ch2 id=\"a-studio-built-for-small-scale-work\">A Studio Built for Small-Scale Work\u003C/h2>\u003Cp>Remembers had built a strong reputation on short-format projects: music videos, commercials, and short films. The quality of the work was not in question. But the infrastructure for managing a long-form project simply did not exist yet.\u003C/p>\u003Cblockquote>\"There was no pipeline, no development team. All the space was dedicated to the artists.\"\u003C/blockquote>\u003Cp>The entire film was produced in-house at Remembers, spread across three separate premises in the 20th arrondissement of Paris. At peak production, around 70 people were working in the animation studios, with a total headcount of roughly 150 people over the course of the project. The production team consisted of Audrey as production director and executive producer, two production coordinators, and one intern.\u003C/p>\u003Cp>With that ratio of production staff to creative staff, having the right tools was not optional.\u003C/p>\u003Chr>\u003Ch2 id=\"the-challenge-introducing-tools-no-one-asked-for\">The Challenge: Introducing Tools No One Asked For\u003C/h2>\u003Cp>When Audrey arrived at Remembers, the studio was tracking projects with Google Sheets. That approach works at the scale of a short film where six people share a room and can turn around to check on each other's screens. Not at a feature film scale.\u003C/p>\u003Cp>But the core team was not asking for anything different.\u003C/p>\u003Cblockquote>\"Very clearly, when I talked about production management and tracking tools, there was no demand for it.\"\u003C/blockquote>\u003Cp>This is a common scenario in small and mid-sized studios making the jump to larger productions. The habits formed on smaller work do not automatically flag themselves as insufficient. Audrey knew she had to solve a problem that had not yet been named, and she had to do it without creating friction.\u003C/p>\u003Cblockquote>\"I knew that if I brought in a new tool, I needed to address a need that hadn't been identified by the core team already in place. The main challenge right away was not to constrain them.\"\u003C/blockquote>\u003Chr>\u003Ch2 id=\"why-kitsu-won\">Why Kitsu Won\u003C/h2>\u003Cp>Audrey's reference point for project tracking came from the 3D feature world, where the dominant tool is Ftrack, a powerful but developer-dependent platform. She immediately recognized it would be the wrong choice for Remembers.\u003C/p>\u003Cblockquote>\"I immediately sensed that it wasn't going to be suitable at all in the context of \u003Cem>Arco\u003C/em>.\"\u003C/blockquote>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-1.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-1.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-1.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-1.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Ftrack and similar enterprise-grade tools require in-house developers to deploy, configure, and maintain. Remembers had none of that: no IT staff, no technical director, no pipeline developer. Bringing in a tool that required that kind of support would have created more problems than it solved.\u003C/p>\u003Cp>Kitsu addressed her core constraints from the start. After a demo with the Kitsu team, the studio collectively decided to move forward. The reasons were practical:\u003C/p>\u003Cul>\u003Cli>No development required to get started\u003C/li>\u003Cli>No ongoing maintenance burden\u003C/li>\u003Cli>No in-house technical resources needed\u003C/li>\u003Cli>An interface intuitive enough for people picking up a production tool for the first time\u003C/li>\u003C/ul>\u003Cblockquote>\"That reassured me greatly. And obviously we were looking for something very intuitive, because since I was addressing people who weren't asking for tools, they needed to be able to pick it up and get on board very naturally.\"\u003C/blockquote>\u003Chr>\u003Ch2 id=\"how-kitsu-worked-in-practice\">How Kitsu Worked in Practice\u003C/h2>\u003Ch3 id=\"the-artist-experience\">The Artist Experience\u003C/h3>\u003Cp>Every artist on the production, regardless of which of the three sites they worked from, had a personal page in Kitsu showing all their assigned tasks (rough animation, clean animation, or other), the status of each task, the estimated time allocated, and a running log of time already spent.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-2.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-2.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-2.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-2.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cblockquote>\"You can understand that between this and having no tool at all, we've already made an enormous step forward. And it's not just about productivity, it's more enjoyable too.\"\u003C/blockquote>\u003Cp>Viewing a specific version of a shot no longer meant digging through a shared network drive and risking pulling the wrong file. In Kitsu, every version is one click away and tied directly to its comments. That alone removed a significant source of confusion and wasted time.\u003C/p>\u003Ch3 id=\"the-supervisor-experience\">The Supervisor Experience\u003C/h3>\u003Cp>Supervisors built their review pages using simple filters. An animation supervisor could filter for all shots currently \"waiting for approval,\" see exactly what needed attention, and post feedback directly on the relevant version. Comments were timestamped, attributed, and version-specific.\u003C/p>\u003Cblockquote>\"It's very targeted and it works well.\"\u003C/blockquote>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-3.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-3.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-3.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-3.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-3.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Beyond the functional benefit, Kitsu gave supervisors something less obvious but equally valuable: structured time. Rather than being interrupted throughout the day by artists seeking feedback, supervisors could set aside dedicated review blocks in the morning and afternoon, and spend the rest of their time on their own work.\u003C/p>\u003Ch3 id=\"cross-department-communication\">Cross-Department Communication\u003C/h3>\u003Cp>One of the most practical features Audrey highlighted was the ability to tag anyone in the project from within any task comment thread. On a long production where compositing might uncover an issue with a background that had already been approved weeks earlier, this closed the loop quickly.\u003C/p>\u003Cblockquote>\"Inter-department exchanges are really quite easy and can be quick. Often it's small edits, things that slipped through because the shots had already been approved.\"\u003C/blockquote>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-4.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-4.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-4.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-4.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-4.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"using-kitsu-data-for-production-tracking\">Using Kitsu Data for Production Tracking\u003C/h2>\u003Cp>The second half of Audrey's talk addressed a concern that production managers with experience in more advanced platforms sometimes raise about Kitsu: the lack of custom-built analytics pages. In tools like Ftrack, you can construct dashboards that process and display data in multiple ways without leaving the platform.\u003C/p>\u003Cp>Kitsu does not offer that out of the box. Audrey's response was pragmatic and worth paying attention to.\u003C/p>\u003Cblockquote>\"In reality, all the data that can be valuable in production tracking does exist in Kitsu. It's just not always visible on pages you'll find ready-made.\"\u003C/blockquote>\u003Cp>Her approach combined two simple steps: export a CSV from Kitsu, then import it into a Google Sheet she had built herself.\u003C/p>\u003Ch3 id=\"tracking-production-curves\">Tracking Production Curves\u003C/h3>\u003Cp>For each major department, she maintained a projected completion curve plotted against time. The vertical axis tracked the number of shots completed, and the dashed line represented the original model. Each week, she exported real data from Kitsu's Sequence Stats page, which shows the exact number of shots in each status across every department. She imported that CSV and the Google Sheet updated automatically.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-5.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-5.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-5.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-5.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-5.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>The result was an immediate visual indicator of whether production was tracking to plan or drifting.\u003C/p>\u003Cblockquote>\"A feature film is a big undertaking with a lot of inertia. If you start drifting for one week, that's okay. Two weeks, you need to look at what's happening.\"\u003C/blockquote>\u003Cp>She also applied a simple weighting system to shots currently in progress. A completed shot counted as one. A shot in editing counted as 0.75. A shot waiting for approval counted as a lower weight. This gave her a more accurate picture of work done rather than just work fully signed off.\u003C/p>\u003Ch3 id=\"tracking-inventory-between-departments\">Tracking Inventory Between Departments\u003C/h3>\u003Cp>On a linear production pipeline, each department feeds the next. If animation moves faster than layout, animators sit idle. If compositing falls behind, it creates a bottleneck no matter how far ahead animation is. Audrey tracked inventory levels at each stage: what was fully available for each department, what was still in progress, and what had already passed through.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-6.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1920\" height=\"1080\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/04/image-6.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/04/image-6.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2026/04/image-6.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/image-6.png 1920w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>She built a table in Google Sheets with all sequences on one axis and all departments on the other. Cells turned dark green at 100 percent, light green for work in progress, and white when nothing remained. Every cell was formula-driven. No numbers were entered manually. One CSV export from Kitsu's shots page, one import, and the entire table refreshed.\u003C/p>\u003Cblockquote>\"It lets us ask the right questions: 'Oh, this department is moving a bit faster. Do we need to accelerate the previous one, or can we shift some artists from one department to another?'\"\u003C/blockquote>\u003Chr>\u003Ch2 id=\"adoption-was-easier-than-expected\">Adoption Was Easier Than Expected\u003C/h2>\u003Cp>A common worry when introducing new tools to a creative team is resistance. Audrey's experience ran counter to that fear.\u003C/p>\u003Cp>She set up Kitsu before the bulk of the team arrived. By the time animators and background artists joined in large numbers, the tool was already in place and populated. They arrived to a working system rather than a work-in-progress.\u003C/p>\u003Cblockquote>\"Kitsu is something that's very, very easy to pick up. You can click anywhere, you see the film's images, you see all the departments and sequences that might relate to your own.\"\u003C/blockquote>\u003Cp>That last point matters more than it might seem. Artists did not experience Kitsu as a reporting obligation. They experienced it as a window into the broader project. Browsing shots from other departments, seeing the whole film take shape across sequences, made the tool genuinely interesting to use.\u003C/p>\u003Cblockquote>\"It's also enjoyable and motivating to browse around in the tool. It's not just 'oh, I have to post my latest version.'\"\u003C/blockquote>\u003Chr>\u003Ch2 id=\"key-takeaways\">Key Takeaways\u003C/h2>\u003Cp>Audrey's experience on \u003Cem>Arco\u003C/em> offers a few clear lessons for animation studios at a similar inflection point.\u003C/p>\u003Cp>The absence of a technical team is not a blocker. Kitsu does not require developers, a technical director, or an IT department to deploy and maintain. For small and mid-sized studios, this removes the single largest obstacle to adopting a real production tracking platform.\u003C/p>\u003Cp>Simplicity builds adoption. The more complex the tool, the more training it demands and the more resistance it generates. Kitsu's interface allowed a team with no prior experience with production tracking software to get on board quickly and without building up resentment.\u003C/p>\u003Cp>The data is already there. If Kitsu does not offer a specific analytics view out of the box, that is not the end of the conversation. CSV exports from the Sequence Stats and shots pages provide all the raw material needed to build whatever tracking logic a production manager requires, in whatever format suits them.\u003C/p>\u003Cp>Structure and creativity are not opposites. Ugo Bienvenu's ambition on \u003Cem>Arco\u003C/em> was to make a film that could almost have been made in the 1950s: beautiful images, precise animation, minimal compositing, and great music. Kitsu did not interfere with that vision. It protected it by keeping the production on track so that the artists could focus entirely on the work.\u003C/p>\u003Cblockquote>\"The goal was to structure things in the most imperceptible way possible.\"\u003C/blockquote>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":421,"comment_id":422,"feature_image":423,"featured":23,"visibility":24,"created_at":424,"updated_at":425,"custom_excerpt":426,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":427,"primary_tag":428,"url":430,"excerpt":426,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"c66d47f2-d263-4a9e-aad5-f27aebe2c46a","69d4c1a6c037da0001fce813","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/04/arco-ugo-bienvenu-critique-film.jpg","2026-04-07T10:34:46.000+02:00","2026-04-16T11:48:34.000+02:00","Discover how Remembers used Kitsu to scale production on Arco. Learn how a small studio transitioned from Google Sheets to a structured pipeline without developers.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"69c20df4cb09d8000107cfe7","https://blog.cg-wire.com/remembers-kitsu-arco-production/","/posts/remembers-kitsu-arco-production","2026-04-13T11:11:27.000+02:00",{"title":416},"remembers-kitsu-arco-production","posts/remembers-kitsu-arco-production",[437],{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"al6z2t2K9mRQwGazWVe51MY_TEybs5Zl73HsassAVtY",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},{"id":442,"title":443,"authors":444,"body":12,"description":12,"extension":17,"html":446,"meta":447,"navigation":36,"path":457,"published_at":458,"seo":459,"slug":460,"stem":461,"tags":462,"__hash__":464,"uuid":448,"comment_id":449,"feature_image":450,"featured":23,"visibility":24,"created_at":451,"updated_at":452,"custom_excerpt":453,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":465,"primary_tag":466,"url":456,"excerpt":453,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:customer-story-tant-mieux-prod.json","Customer Story: Tant Mieux Prod",[445],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>\u003C/p>\u003Ch2 id=\"a-few-words-about-tant-mieux-prod\">A few words about Tant Mieux Prod\u003C/h2>\u003Cp>\u003Ca href=\"https://www.tantmieuxprod.net/?ref=blog.cg-wire.com\">Tant Mieux Prod\u003C/a> was born with the goal of producing 13 short movies from young Directors who had just left school. Initially, only a single session was scheduled. But the success was so great that they were able to do it every year for ten years. \u003C/p>\u003Cp>This led them to produce other movies with two criteria in mind: demanding and for children. They started with the Tobie Lolness series, one of the most acclaimed French productions. And, they now have two feature films and another series in pre-production. \u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/image-7.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1750\" height=\"1347\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2024/10/image-7.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2024/10/image-7.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2024/10/image-7.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/image-7.png 1750w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch2 id=\"tant-mieux-prod-and-kitsu\">Tant Mieux Prod and Kitsu\u003C/h2>\u003Cp>Tristan, Production Director, worked on the Tobie Lolness TV series, a 26x26' project with high-quality standards. It is a series based on the story of the eponymous novel where little characters living in a big tree fight to keep their host alive.\u003C/p>\u003Cp>This three-year production involved four different studios and required tight collaboration between all stakeholders. This is why they chose Kitsu for their project. In this interview, Tristan will tell us how they used the solution to make tracking and collaboration as smooth as possible for Tobie Lolness.\u003C/p>\u003Cp>\u003Ca href=\"https://www.france.tv/enfants/neuf-douze-ans/tobie-lolness/?ref=blog.cg-wire.com\">Watch the full TV Series\u003C/a>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/tristan-mercier-3.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"400\" height=\"400\">\u003C/figure>\u003Ch3 id=\"what-tools-did-you-use-before-kitsu\">What tools did you use before Kitsu?\u003C/h3>\u003Cp>Like many studios, we used Google Sheets or Excel spreadsheets at the beginning of production or for smaller productions. As soon as the number of artists increases or the production is outsourced to one or more studios, it becomes necessary to use a collaboration platform like Kitsu.\u003C/p>\u003Ch3 id=\"how-did-you-hear-about-our-solution\">How did you hear about our solution?\u003C/h3>\u003Cp>I first discovered Kitsu at Cube Creative for tracking the series \"De Gaulle à la plage.\" I quickly noticed that Kitsu had been adopted by the studios I was used to working with. I enjoyed it and notice the benefits brought by the solution. It sounded natural to use for Tobie Lolness.\u003C/p>\u003Ch3 id=\"did-you-have-any-preconceived-notions-before-using-it\">Did you have any preconceived notions before using it?\u003C/h3>\u003Cp>Having used other asset managers or production tracking software, discovering a new tool naturally raised some questions. Performance, cost, and platform usability were the main concerns, but Kitsu proved to be up to our expectations.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/Capture-d--cran-2024-10-09---22.03.40.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1250\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2024/10/Capture-d--cran-2024-10-09---22.03.40.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2024/10/Capture-d--cran-2024-10-09---22.03.40.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2024/10/Capture-d--cran-2024-10-09---22.03.40.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2024/10/Capture-d--cran-2024-10-09---22.03.40.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"what-has-changed-in-the-way-you-work-since-using-it\">What has changed in the way you work since using it?\u003C/h3>\u003Cp>Our internal communication and communication with remote studios have been simplified. We can discuss a specific asset or task without exchanging 10 emails. If we have any doubts, we can rely on what is indicated on the platform. It serves as a kind of history log.\u003Cbr>We would likely find it hard to go back to more traditional production tracking methods.\u003C/p>\u003Ch3 id=\"what-features-have-had-the-most-impact-on-your-workflow\">What features have had the most impact on your workflow?\u003C/h3>\u003Cp>Personally, the feature I use the most is the filter on the asset page, which allows me to quickly get an overview of specific elements to adjust everyone's schedules.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/image-6.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1188\" height=\"864\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2024/10/image-6.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2024/10/image-6.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/image-6.png 1188w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Ch3 id=\"what-are-the-advantages-of-using-kitsu\">What are the advantages of using Kitsu?\u003C/h3>\u003Cp>The concentration of information on a single platform is very useful for tracking the production of all visual elements.\u003Cbr>With the rise of remote work and various studios operating remotely, there is a large volume of assets being moved from one server to another. Kitsu allows us to eliminate any doubt about who/when/where the latest version of an asset was made.\u003C/p>\u003Ch3 id=\"you%E2%80%99ve-worked-in-multiple-studios-how-did-you-organize-yourselves-to-facilitate-collaboration\">You’ve worked in multiple studios. How did you organize yourselves to facilitate collaboration?\u003C/h3>\u003Cp>For the series \u003Cem>Tobie Lolness\u003C/em>, in addition to the lead studio \u003Cem>Tant Mieux Prod\u003C/em>, \u003Cem>Waooh!\u003C/em>, \u003Cem>Caribara Annecy\u003C/em>, and \u003Cem>Fost Angoulême\u003C/em> also contributed to the creation of the series' visual elements. Each studio had its own needs and working habits. We agreed together on the steps, tasks, and statuses we would use in the production. The creation of statuses is customizable, and in addition to the common statuses shared by all studios, each one could customize its own tasks.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/Capture-d--cran-2024-10-09---22.05.49.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1250\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2024/10/Capture-d--cran-2024-10-09---22.05.49.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2024/10/Capture-d--cran-2024-10-09---22.05.49.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2024/10/Capture-d--cran-2024-10-09---22.05.49.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2024/10/Capture-d--cran-2024-10-09---22.05.49.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"do-you-think-a-tool-like-kitsu-was-key-in-achieving-your-quality-objectives\">Do you think a tool like Kitsu was key in achieving your quality objectives?\u003C/h3>\u003Cp>I’m not sure if Kitsu helps us reach our goals, but it’s undeniably a great tool to track them.\u003C/p>\u003Ch3 id=\"can-you-give-us-some-metrics-on-the-time-you%E2%80%99ve-saved-using-kitsu\">Can you give us some metrics on the time you’ve saved using Kitsu?\u003C/h3>\u003Cp>This is a hard metric to quantify, but for production roles and heads of departments who validate shots or assets, it’s undeniably a great tool for everyone to gain a certain level of independence and speed.\u003C/p>\u003Ch3 id=\"kitsu-in-two-words\">\u003Cstrong>Kitsu in two words?\u003C/strong>\u003C/h3>\u003Cp>Autonomy and collaboration!\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/Capture-d--cran-2024-10-09---21.56.37.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"2000\" height=\"1250\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2024/10/Capture-d--cran-2024-10-09---21.56.37.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2024/10/Capture-d--cran-2024-10-09---21.56.37.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2024/10/Capture-d--cran-2024-10-09---21.56.37.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2024/10/Capture-d--cran-2024-10-09---21.56.37.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003Cem>Thank you Tristan for this customer story! It's great that you were able to share insights about your studio and your experience with Kitsu. At CGWire we are proud to have helped you with the Tobie Lolness project. We wish you the best for your next productions!\u003C/em>\u003C/p>",{"uuid":448,"comment_id":449,"feature_image":450,"featured":23,"visibility":24,"created_at":451,"updated_at":452,"custom_excerpt":453,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":454,"primary_tag":455,"url":456,"excerpt":453,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"1ecd51e7-0033-4779-87ca-383c417fa44f","67041babf3e59f00013319c9","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2024/10/tobie-lolness-1.jpg","2024-10-07T19:34:35.000+02:00","2024-10-11T11:48:24.000+02:00","Tobie Lolness TV series, a 26x26 project, involved four different studios and required tight collaboration between all stakeholders. This is why they chose Kitsu for their project. ",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"https://blog.cg-wire.com/customer-story-tant-mieux-prod/","/posts/customer-story-tant-mieux-prod","2024-10-11T11:21:10.000+02:00",{"title":443},"customer-story-tant-mieux-prod","posts/customer-story-tant-mieux-prod",[463],{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"_pmeysDUCK6dIuXB2fAoWhhw9hj59q_hQXHcOsNQ_1k",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},{"id":468,"title":469,"authors":470,"body":12,"description":12,"extension":17,"html":472,"meta":473,"navigation":36,"path":484,"published_at":485,"seo":486,"slug":487,"stem":488,"tags":489,"__hash__":491,"uuid":474,"comment_id":475,"feature_image":476,"featured":23,"visibility":24,"created_at":477,"updated_at":478,"custom_excerpt":479,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":492,"primary_tag":493,"url":482,"excerpt":479,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":483,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:customer-story-makuta-vfx-studio.json","Customer Story: Makuta VFX Studio",[471],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>Pete Draper, Makuta VFX Co-Founder, following their work on the RRR movie (one of the biggest blockbusters in India), accepted to share with us his experience of Kitsu. He told us how he took advantage of Kitsu to ship the production on time despite tight deadlines and unexpected covid lockdowns.\u003C/p>\u003Ch2 id=\"a-few-words-about-makuta\">A few words about Makuta \u003C/h2>\u003Cp>Makuta is a Visual Effects facility located in South India (Hyderabad). We've been running for just over twelve years and have produced visual effects and scanning for several of India’s top-grossing national and international features, including the one we brought Kitsu on to. We tend to maintain artist levels around 50-60 and peaking around 120 at a major crunch, focusing mainly on the artistry and creativity of a show. We were the first studio in India to purchase and utilize LiDAR on our features.\u003C/p>\u003Ch2 id=\"makuta-studio-and-kitsu\">Makuta Studio and Kitsu\u003C/h2>\u003Ch3 id=\"hello-pete-can-you-introduce-yourself\">Hello Pete, can you introduce yourself? \u003C/h3>\u003Cp>I’m the co-founder of Makuta Visual Effects and have been involved in the VFX industry since the mid-1990s. I’ve written several books on 3ds max, was the primary 3ds max journalist and tutorial author for 3D World magazine for over a decade, an Alpha &amp; Beta tester for Autodesk for nine years, and an external examiner for several UK universities’ VFX-related courses.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/06/pete_draper.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"500\" height=\"500\">\u003C/figure>\u003Ch3 id=\"how-did-you-decide-to-set-up-a-studio-in-india\">How did you decide to set up a studio in India? \u003C/h3>\u003Cp>in 2008, I did some work on an Indian film's title sequence when I was in the UK which lead to me coming over to develop the pipeline and QC shots for another film the following February. As both did well, I and two others, who I worked with on the latter project, decided to set up a studio out here and try to take things to the next stage. The idea was to split the time between here and the UK. But, over the following few years, I was spending more time over here. To a point now, the last time I went back to England, the word \"Brexit\" didn't even exist...\u003C/p>\u003Ch3 id=\"which-tools-did-you-use-prior-to-kitsu\">Which tools did you use prior to Kitsu? \u003C/h3>\u003Cp>Prior to migrating to Kitsu, we’ve pretty much used the majority of off-the-shelf solutions out there, from Excel and Google sheets to Tactic to Shotgun/grid to Cerebro, each with some measure of success and failure.\u003C/p>\u003Ch3 id=\"how-did-you-hear-about-our-solution\">How did you hear about our solution? \u003C/h3>\u003Cp>We had worked on several shows with their own desired project tracking systems; Shotgun/grid, Cerebro et al depending on the principal VFX supervisor’s preferences where we primarily used Tactic and developed our own internal tracking system on and off over several years.\u003C/p>\u003Cp>We discovered Kitsu purely by chance; initially, we were just perusing pipeline and production management technologies (as one does!) and we discovered the system which seemed to be robust. \u003C/p>\u003Ch3 id=\"how-did-you-get-started-with-kitsu\">How did you get started with Kitsu? \u003C/h3>\u003Cp>After trying out the Docker container, we discovered that it was a simple yet powerful system that didn’t require a degree in Computer Science (*cough* Tactic *cough*) to even get the thing running. We gradually filtered it into the studio, initially using it to review and slowly pushing it, and the system it was installed on, as hard as we could to see if it would break. And guess what? It didn’t.\u003C/p>\u003Cp>Just like the Blender Foundation, once we came to know about Kitsu, the decision to migrate was a bit of a no-brainer - we just happened to come across it one day and decided to check it out.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/Screenshot-2022-05-04-at-4.53.16-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1046\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/05/Screenshot-2022-05-04-at-4.53.16-PM.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/05/Screenshot-2022-05-04-at-4.53.16-PM.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/05/Screenshot-2022-05-04-at-4.53.16-PM.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2022/05/Screenshot-2022-05-04-at-4.53.16-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"did-you-have-any-preconceptions-before-using-it\">Did you have any preconceptions before using it? \u003C/h3>\u003Cp>Not so much, just the usual “how far can we go until it breaks?” thoughts and if the user experience was going to be detrimental to productivity. There are still some areas that I feel are slightly counter-intuitive but that’s more about the perception of a system as opposed to the system itself - eg having something modal vs something modeless, having an image pop up over the existing screen, and not punching out to another page (etc). Everything should be at a glance and accessible without needing to hunt; earlier on there were some issues but am glad to say they have been mostly refined. \u003C/p>\u003Ch3 id=\"what-has-changed-in-the-studio-since-then-in-your-way-of-working\">What has changed in the studio since then, in your way of working? \u003C/h3>\u003Cp>Previously we were using multiple tools and didn’t have a centralized review and logging system that neatly talked to each other. Annotations on videos, for example, were a more long-winded process utilizing several applications to open, capture, print, edit text and submit to the system we had in place which, granted, when you got used to it it was ok but not ideal. It was also platform-specific so if you were running another OS as one does, it didn’t fully work. Kitsu has pretty much unified everything and is forcing neater communication not only between artists but from production, management, and clients.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/Screenshot-2022-05-04-at-4.57.35-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1012\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/05/Screenshot-2022-05-04-at-4.57.35-PM.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/05/Screenshot-2022-05-04-at-4.57.35-PM.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/05/Screenshot-2022-05-04-at-4.57.35-PM.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2022/05/Screenshot-2022-05-04-at-4.57.35-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"for-how-long-have-you-been-using-kitsu\">For how long have you been using Kitsu? \u003C/h3>\u003Cp>We have been using it for around a year now and while we evaluated the system during the initial lockdown, it was primarily utilized between the first and second Covid waves. \u003C/p>\u003Ch3 id=\"which-features-have-impacted-your-workflow-the-most\">Which features have impacted your workflow the most? \u003C/h3>\u003Cp>The simple yet effective annotation tools have been invaluable above all. We already had scheduling and artist assignments with our own internal systems (which we’re gradually now migrating across to Kitsu) and the inclusion of the Rooms system in the Playlist section was great but came a little late for us to fully utilize it (after the second lockdown ended). Playlist allowed us to cross-compare versions easily and communicate back, even using it in our primary sessions when the team was all back in the studio. It would be nice to have an HDR version for the review sessions and basic color and playback control that one tends to do in said sessions...\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/Screenshot-2022-05-04-at-5.26.26-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1250\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/05/Screenshot-2022-05-04-at-5.26.26-PM.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/05/Screenshot-2022-05-04-at-5.26.26-PM.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/05/Screenshot-2022-05-04-at-5.26.26-PM.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2022/05/Screenshot-2022-05-04-at-5.26.26-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/Screenshot-2022-05-04-at-5.16.44-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1046\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/05/Screenshot-2022-05-04-at-5.16.44-PM.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/05/Screenshot-2022-05-04-at-5.16.44-PM.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/05/Screenshot-2022-05-04-at-5.16.44-PM.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2022/05/Screenshot-2022-05-04-at-5.16.44-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"what-are-the-benefits-brought-by-kitsu\">What are the benefits brought by Kitsu? \u003C/h3>\u003Cp>As we were already knee-deep within the project, we didn’t fully utilize some aspects of the system; our time management and attendance system are built into the login and door entry to the studio which talks directly to HR et al, so at that point, we primarily utilized the system for shot assignment, task breakdown and, above all, review sessions. Once we entered the second lockdown phase within the country (everything stopped during the first due to global security concerns from the client), the ability to sit with artists on shots became nigh-impossible, so the ability to remove reviews and, with the latter updates, be able to run a live review session in a room with multiple artists became invaluable.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/Screenshot-2022-05-04-at-4.41.54-PM.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1046\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/05/Screenshot-2022-05-04-at-4.41.54-PM.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/05/Screenshot-2022-05-04-at-4.41.54-PM.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/05/Screenshot-2022-05-04-at-4.41.54-PM.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2022/05/Screenshot-2022-05-04-at-4.41.54-PM.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"can-you-give-us-some-metrics-about-the-time-you-saved-with-kitsu\">Can you give us some metrics about the time you saved with  Kitsu? \u003C/h3>\u003Cp>Not specifically, but the review sessions we used to run and dailies have now reduced down to a fraction of time as a lot of it is now held online, even after the primary and secondary lockdowns. We still treat it as if everyone is working from home and every single piece of communication must go through the system; yes it’s easier to just jump out of your seat and speak to the individual, but then there isn’t a track of communication and conveying this and getting primary information is key in creative decisions\u003C/p>\u003Ch3 id=\"kitsu-in-two-words\">Kitsu in two words?\u003C/h3>\u003Cp>Review Room!!!! :D\u003C/p>\u003Cp>\u003C/p>\u003Cp>\u003Cem>Thank you Pete for this customer story! It's great that you were able to share insights about your studio and your experience with Kitsu. At CGWire we are super proud to have helped you with your project. We wish you the best in the following.\u003C/em>\u003C/p>",{"uuid":474,"comment_id":475,"feature_image":476,"featured":23,"visibility":24,"created_at":477,"updated_at":478,"custom_excerpt":479,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":480,"primary_tag":481,"url":482,"excerpt":479,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":483,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"90ddab16-16ed-45d1-b905-c22f8dad0f76","627bdee760746a003d8b4ef3","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/image0.jpeg","2022-05-11T18:05:59.000+02:00","2026-03-24T05:15:14.000+01:00","Pete Draper, Makuta VFX Co-Founder, following their work on the RRR movie (one of the biggest blockbusters in India), accepted to share with us his experience of Kitsu. He told us how he took advantage of Kitsu to ship the production on time despite tight deadlines and unexpected covid lockdowns.",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"https://blog.cg-wire.com/customer-story-makuta-vfx-studio/","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/05/image0-1.jpeg","/posts/customer-story-makuta-vfx-studio","2022-05-24T12:18:59.000+02:00",{"title":469},"customer-story-makuta-vfx-studio","posts/customer-story-makuta-vfx-studio",[490],{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"0cXPQaYOTwbuTHfrusxuor0LOM34wwXLTD8HmLq6vBE",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},{"id":495,"title":496,"authors":497,"body":12,"description":12,"extension":17,"html":499,"meta":500,"navigation":36,"path":510,"published_at":511,"seo":512,"slug":513,"stem":514,"tags":515,"__hash__":517,"uuid":501,"comment_id":502,"feature_image":503,"featured":23,"visibility":24,"created_at":504,"updated_at":505,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"show_title_and_feature_image":36,"primary_author":518,"primary_tag":519,"url":508,"excerpt":509,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/pages:customer-story-miyu-studio.json","Customer Story: Miyu Studio",[498],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Ch2 id=\"a-few-words-about-miyu\">A few words about Miyu\u003C/h2>\u003Cp>Founded in 2009 by Emmanuel-Alain Raynal, Miyu Productions is a TV production company specializing in animation. They create short and feature films alongside TV series. Since its inception, the company carries a strict editorial direction for all its projects. \u003C/p>\u003Ch2 id=\"miyu-and-kitsu\">Miyu and Kitsu\u003C/h2>\u003Cp>In this customer story, Carole, Production Manager at Miyu, will tell us how she implemented Kitsu in her studio.\u003C/p>\u003Ch3 id=\"carole-can-you-tell-us-more-about-you\">Carole, can you tell us more about you?\u003C/h3>\u003Cp>I have always been passionate about animation, I have worked in this field for 6 years. I love the diversity of the projects available. I had the opportunity to work on pre-school puppet production (Ollie and Moon), auteur feature films (Saules Aveugles, Femme Endormie), and US productions (Glitch techs). \u003C/p>\u003Cp>I came back recently to Miyu as Production Manager. What I enjoy the most in this job is the fact you give life to the project and the initial vision of the Authors and Directors. \u003Cbr>We make so artistic choices. our film can be done only because we have a solid team. My role is to support them and give cohesion to their work. We have to do beautiful pictures while dealing with economical constraints. To achieve that, I make sure all the talents can express themselves and do their best to ensure a great movie.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/carole_miyu_2.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"800\" height=\"775\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/03/carole_miyu_2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/carole_miyu_2.png 800w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Ch3 id=\"which-tools-did-you-use-prior-to-kitsu\">Which tools did you use prior to Kitsu?\u003C/h3>\u003Cp>We used the standard tools used in the industry, from the traditional and powerful Google Sheet to the tedious Shotgrid. SG is a gold mine for studios that can tweak it. It's good for them but on our side, we didn't have the resources for that. That's why we looked for an alternative.\u003C/p>\u003Ch3 id=\"how-did-you-hear-about-our-solution\">How did you hear about our solution?\u003C/h3>\u003Cp>Kitsu was already implemented at Miyu when I arrived. I had to take it with my new job : ). At that time, Miyu was still testing it on small productions. And, I had never heard about it before. So I discovered it directly in production.\u003C/p>\u003Ch3 id=\"how-did-you-get-started-with-kitsu\">How did you get started with Kitsu?\u003C/h3>\u003Cp>When Miyu had its first feature film, the question of the tracking tool came. Other tools looked great but they required extra work to be fully functional. And, we needed a solution quickly. We were looking for something easy to start with, that would suit all the team members. The Google Sheets look like it would require infinite customization to achieve what we wanted. Especially after experimenting with SG (on another production) where it helped us in many aspects.  \u003C/p>\u003Cp>Then, Tanguy, the Production Director, suggested using Kitsu for \u003Cem>Blind Willow, Sleeping Woman. \u003C/em>So, Gwen from CGWire came to the studio to show the whole team how Kitsu was working. It was very convincing: our decision was made!\u003C/p>\u003Ch3 id=\"did-you-have-any-preconceptions-before-using-it\">\u003Cstrong>Did you have any preconceptions before using it? \u003C/strong>\u003C/h3>\u003Cp>We made some tests, prior to using it for our first feature. At first, we found it a little bit hard to adapt to the software philosophy. But once, we were used to it, everything became smoother. We were surprised too to see how fast the artistic teams started with it. Even better, the CGWire team was really listening to our feedback. The software has evolved in a way that suits us. \u003C/p>\u003Ch3 id=\"what-has-changed-in-the-studio-since-then-in-your-way-of-working\">\u003Cstrong>What has changed in the studio since then, in your way of working\u003C/strong>?\u003C/h3>\u003Cp>It gives a common ground to each production. In a way, it mutualizes the tooling. Even if the pipelines change between productions, the basis is the same. So the main logic stays identical, which makes things much easier when switching from one project to another.  \u003C/p>\u003Ch3 id=\"for-how-long-have-you-been-using-kitsu\">For how long have you been using Kitsu?\u003C/h3>\u003Cp>Three years for Miyu, two years for me. Using it means adopting it. Once you start with it, you don't think about using something else!\u003C/p>\u003Ch3 id=\"which-features-have-impacted-your-workflow-the-most\">Which features have impacted your workflow the most?\u003C/h3>\u003Cp>I think the review work is much easier with Kitsu thanks to the playlist system. The tool is good, especially because you can compare the building steps and the versions. It saves tons of time! You can build sequence reviews too, which allows making more accurate reviews without having to look for the right version for hours. It puts an end to the long night where I was looking for the right file versions in order to prepare the end-to-end needed for the weekly reviews. \u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/image-2.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1611\" height=\"874\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/03/image-2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2022/03/image-2.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2022/03/image-2.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/image-2.png 1611w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Playlist used on Blind Willow, Sleeping Woman (from the Murakami novel)\u003C/figcaption>\u003C/figure>\u003Ch3 id=\"what-are-the-benefits-brought-by-kitsu\">What are the benefits brought by Kitsu?\u003C/h3>\u003Cp>There are three main aspects to me:\u003C/p>\u003Cp>When everyone updates its status regularly and sends their previews properly, we are able to gather all the data required for our reports. We can export them in a .csv file and turn them in the way we want. We don't need anymore to continuously ask for information from the artists. \u003C/p>\u003Cp>Having on the same page all the building steps of a shot is really helpful. More widely, it's great that the production team and the artists can see how the production is progressing quickly without digging into five different places.\u003C/p>\u003Cp>Its ease of use is its main strength. A few days are enough to understand the features require to run a production. Everyone starts quickly, especially artists who really enjoy it. We didn't notice this enthusiasm with the previous tools we used.\u003C/p>\u003Ch3 id=\"can-you-give-us-some-metrics-about-the-time-you-saved-with-kitsu\">Can you give us some metrics about the time you saved with Kitsu?\u003C/h3>\u003Cp>You cannot quantify it. It simply makes everything smoother. It's just like having the right tool for the job.\u003C/p>\u003Ch3 id=\"kitsu-in-two-words\">\u003Cstrong>Kitsu in two words?\u003C/strong>\u003C/h3>\u003Cp>Easy and handy!\u003C/p>\u003Cp>\u003Cem>Thank you Carole for this customer story! It's great that you were able to share insights about your studio and your experience with Kitsu. At CGWire we are super proud to have helped you with your projects. We wish you the best in the following.\u003C/em> \u003C/p>\u003Cp>\u003Cem>If you want other stories, you can read the ones from \u003Ca href=\"https://blog.cg-wire.com/customer-story-autour-de-minuit/\">Céline at Fost\u003C/a> and from \u003Ca href=\"https://blog.cg-wire.com/customer-story-autour-de-minuit/\">Fiona at Autour de Minuit\u003C/a>.\u003C/em>\u003Cbr>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/studio-paris-2-1.jpg\" class=\"kg-image\" alt loading=\"lazy\" width=\"1000\" height=\"500\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2022/03/studio-paris-2-1.jpg 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/studio-paris-2-1.jpg 1000w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Miyu studio in action\u003C/figcaption>\u003C/figure>",{"uuid":501,"comment_id":502,"feature_image":503,"featured":23,"visibility":24,"created_at":504,"updated_at":505,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"show_title_and_feature_image":36,"primary_author":506,"primary_tag":507,"url":508,"excerpt":509,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"e9fb3060-80d1-45c6-a67c-c604863c4c4b","622722d745dc74003df7f4cd","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/03/studio-paris.jpg","2022-03-08T10:33:11.000+01:00","2026-03-24T05:15:45.000+01:00",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"https://blog.cg-wire.com/customer-story-miyu-studio/","A few words about Miyu\nFounded in 2009 by Emmanuel-Alain Raynal, Miyu Productions is a TV production\ncompany specializing in animation. They create short and feature films alongside\nTV series. Since its inception, the company carries a strict editorial direction\nfor all its projects. \n\nMiyu and Kitsu\nIn this customer story, Carole, Production Manager at Miyu, will tell us how she\nimplemented Kitsu in her studio.\n\nCarole, can you tell us more about you?\nI have always been passionate about animati","/pages/customer-story-miyu-studio","2022-03-27T18:32:16.000+02:00",{"title":496},"customer-story-miyu-studio","pages/customer-story-miyu-studio",[516],{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"wLdIQ6ASQa2BlA60hhEFMyeyiRu-EHrwAilCDOjg5S8",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},{"id":521,"title":522,"authors":523,"body":12,"description":12,"extension":17,"html":525,"meta":526,"navigation":36,"path":536,"published_at":537,"seo":538,"slug":539,"stem":540,"tags":541,"__hash__":543,"uuid":527,"comment_id":528,"feature_image":529,"featured":23,"visibility":24,"created_at":530,"updated_at":531,"custom_excerpt":532,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"show_title_and_feature_image":36,"primary_author":544,"primary_tag":545,"url":535,"excerpt":532,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/pages:customer-story-fost-studio.json","Customer story: Fost Studio",[524],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Ch2 id=\"a-few-words-about-fost-studio\">A few words about Fost Studio\u003C/h2>\u003Cp>Founded in 2018, Fost Studio is a Paris-based animation studio providing high-quality services for feature film, TV, and web productions.\u003C/p>\u003Cp>They have a capacity of over a hundred artists specializing in 2D animation and in pre-production for CG. Quality is their main focus and they provide only high-quality pictures. They have already accomplished beautiful series like Ernest &amp; Célestine, Sam Sam, or Stinky Dogs. They have worked too on great feature films like The Summit of Gods or Wolfwalkers.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"2000\" height=\"1500\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2021/12/image.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2021/12/image.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2021/12/image.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w2400/2021/12/image.png 2400w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003C/p>\u003Ch2 id=\"fost-studio-and-kitsu\">Fost Studio and Kitsu\u003C/h2>\u003Cp>Céline, Head of Studio, is going to explain how her studio has taken advantage of Kitsu. They have used it mainly in the context of TV series production, where the need for focus and productivity is very important. \u003Cbr>\u003Cbr>We are glad to share with you her story. Because, prior to using Kitsu, Céline has always provided us with great information about production management. It really helped us to design our solution.\u003C/p>\u003Ch3 id=\"hello-c%C3%A9line-can-you-introduce-yourself\">Hello Céline, can you introduce yourself?\u003C/h3>\u003Cp>Hello! I have recently joined the Fost Studio team as Head of Studio. I \u003Ca href=\"https://www.linkedin.com/in/celinedurieux/?ref=blog.cg-wire.com\">have worked in production for 9 years\u003C/a>. Initially, I worked mainly on 3D productions. Then, I joined Folivari as Head of Production on Pachamama feature film. Recently, I worked on the Ernest et Celestine TV series season 2 and Samsam season 3. \u003C/p>\u003Cp>From now on, as Head of Studio, my job is to ensure that we deliver films that meet our client expectations while providing a pleasant and benevolent work environment for our teams. This point is crucial: we want our teams to be glad to get up in the morning to work on our projects.\u003C/p>\u003Cp>Additionally, I support our production teams, especially during the tough period we all face. Last but not least, I do technological watch and recommend them the best communication and management tools like Kitsu.\u003C/p>\u003Ch3 id=\"which-tools-did-you-use-prior-to-kitsu\">Which tools did you use prior to Kitsu?\u003C/h3>\u003Cp>We were using the good old Google Sheets. On some projects, when our clients require it, we used Shotgun (it's still the case today for some productions).\u003C/p>\u003Ch3 id=\"how-did-you-hear-about-our-solution\">How did you hear about our solution?\u003C/h3>\u003Cp>At the beginning of the CGWire project, Frank was looking for production managers to understand their needs and challenges. He contacted me in that sense. We talked several times and I was convinced by the vision of Kitsu. I have followed its progress and provided feedback from time to time. When our studio grew, the question of our tooling was raised. Naturally, we turned to Kitsu.\u003C/p>\u003Ch3 id=\"how-did-you-get-started-with-kitsu\">How did you get started with Kitsu?\u003C/h3>\u003Cp>The time required to adapt to Kitsu was incredibly short! One of the strengths of the solution is its simplicity and the fact it's intuitive.\u003C/p>\u003Cp>We started with a single project on which we were tracking mainly the pre-production. It was useful to manage the assets and the 2D backgrounds. Today, we use it for the production aspects too, like production backgrounds, animation, FX, and compositing. We tested Kitsu for one year, then we moved all our projects to it. The transition was easy for all the teams.\u003C/p>\u003Ch3 id=\"did-you-have-any-preconceptions-before-using-it\">\u003Cstrong>Did you have any preconceptions before using it? \u003C/strong>\u003C/h3>\u003Cp>We knew that the software was still young and that improvements were on the way. We wanted to test its stability and see how it behaves on significant TV series. Spoiler alert: Everything ran smoothly! ;) \u003C/p>\u003Cp>There are more features on the way for Kitsu but in its current state Kitsu already helped us a lot. The CGWire team was great at listening to our needs and our context. They made Kitsu evolve in the right direction.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-5.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1907\" height=\"937\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2021/12/image-5.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2021/12/image-5.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2021/12/image-5.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-5.png 1907w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Casting page for Ernest et Célestine season 2\u003C/figcaption>\u003C/figure>\u003Ch3 id=\"what-has-changed-in-the-studio-since-then-in-your-way-of-working\">\u003Cstrong>What has changed in the studio since then, in your way of working\u003C/strong>?\u003C/h3>\u003Cp>The fact that we were able to centralize all the data at the same place with a clear and unified UI. It's so simpler when you work on several projects to find information at any moment. It's the same with the team, once they onboard on Kitsu, it's very easy for them to switch between productions.\u003C/p>\u003Cp>With the increase of remote workers in our team, Kitsu facilitated the transition. Thanks to its many capabilities, we were able to redesign our workflow and our production tracking for this context.\u003C/p>\u003Ch3 id=\"for-how-long-have-you-been-using-kitsu\">For how long have you been using Kitsu?\u003C/h3>\u003Cp>Since June 2020, so from a year and a half.\u003C/p>\u003Ch3 id=\"which-features-have-impacted-your-workflow-the-most\">Which features have impacted your workflow the most?\u003C/h3>\u003Cp>We would have hard times coming back to Excel for managing our breakdown. The tool from Kitsu is efficient and fast. It was a life-changer for our director assistants!\u003Cbr>Additionally, the fact we are able to connect the assets and the shots allows the whole design team to be more efficient.\u003C/p>\u003Cp>The playlist system has been a great time saver for our directors and supervisors. It allows checking the progress of the project in a glimpse. They are able to compare easily versions, to check several steps at the same time. It's a precious utility, it has definitely increased our productivity.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-3.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"743\" height=\"813\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2021/12/image-3.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-3.png 743w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>Production report visible in Kitsu\u003C/figcaption>\u003C/figure>\u003Ch3 id=\"what-are-the-benefits-brought-by-kitsu\">What are the benefits brought by Kitsu?\u003C/h3>\u003Cp>I'm convinced that it would not have been possible to follow so closely the quotas that were imposed on us by our budget without Kitsu. We would have more latency on everything. The problems would have emerged lately during the manufacturing. Which obviously would have slowed us down.\u003C/p>\u003Cp>Another thing I appreciate is that our asset inventory is much clearer. We know exactly what was done in our projects, we know the history of everything. It's going to be very useful for upcoming projects. When we started the Ernest et Célestine season 2, it was a challenge to know what was there and what we could reuse from season 1. For the third season (if there is one!), it will be much easier thanks to Kitsu!\u003C/p>\u003Cp>What is great too, is the import/export system from/to CSV files. We were able to migrate an already running project quickly into Kitsu. For instance, it’s what we did on Samsam season 3: we had to migrate on Kitsu nearly 20 episodes with their breakdown. And, when you have to transmit specific reports to a partner or calculate complex quotas, it makes everything easier.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-4.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1919\" height=\"919\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2021/12/image-4.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2021/12/image-4.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2021/12/image-4.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-4.png 1919w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>End-to-end playlist with comparison and comment mode enabled\u003C/figcaption>\u003C/figure>\u003Ch3 id=\"can-you-give-us-some-metrics-about-the-time-you-saved-with-kitsu\">Can you give us some metrics about the time you saved with  Kitsu?\u003C/h3>\u003Cp>With Kitsu, people think first about the time saved but what matters more to me is the serenity you get by having everything in order. It gave you more space in your brain to focus on other elements of your production. But, I can give you a few spots where the gains were the most obvious:\u003C/p>\u003Cul>\u003Cli>3 weeks saved to analyze the technical and economic feasibility of each episode of Ernest and Celestine season 2. \u003C/li>\u003Cli>2h per episode for the breakdown\u003C/li>\u003Cli>On a 39x3 TV show, 22 days saved for the end to end edit\u003C/li>\u003Cli>1h saved per episode per supervisors to send their feedback\u003C/li>\u003C/ul>\u003Ch3 id=\"kitsu-in-two-words\">\u003Cstrong>Kitsu in two words?\u003C/strong>\u003C/h3>\u003Cp>Simple and efficient!\u003Cbr>\u003C/p>\u003Cp>\u003Cem>Thank you Céline for this customer story! It's great that you were able to share insights about your studio and your experience of Kitsu. At CGWire we are super proud to have helped you with your projects. We wish you the best for the following.\u003C/em> \u003Cbr>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-6.png\" class=\"kg-image\" alt loading=\"lazy\" width=\"1903\" height=\"938\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2021/12/image-6.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2021/12/image-6.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1600/2021/12/image-6.png 1600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2021/12/image-6.png 1903w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>The shot list of Ernest and Celestine season 2 with a task opened\u003C/figcaption>\u003C/figure>",{"uuid":527,"comment_id":528,"feature_image":529,"featured":23,"visibility":24,"created_at":530,"updated_at":531,"custom_excerpt":532,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"show_title_and_feature_image":36,"primary_author":533,"primary_tag":534,"url":535,"excerpt":532,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"2aec6a78-9bc5-4695-a565-1f356e377781","61c3a627e02af7003b161873","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2022/01/image-7.png","2021-12-22T23:26:47.000+01:00","2026-03-24T05:15:55.000+01:00","Learn how Fost Studio has set up Kitsu for their teams. Through their use of your solution, you will be able to understand better the benefits provided.",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"https://blog.cg-wire.com/customer-story-fost-studio/","/pages/customer-story-fost-studio","2022-01-17T14:23:35.000+01:00",{"title":522},"customer-story-fost-studio","pages/customer-story-fost-studio",[542],{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},"UxNX-VF2lVn5a_98rAl5yC7JA8CYIAGAp1otMEKmno8",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":429,"name":69,"slug":75,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":72},[547,576,603,630,657],{"id":548,"title":549,"authors":550,"body":12,"description":12,"extension":17,"html":552,"meta":553,"navigation":36,"path":564,"published_at":565,"seo":566,"slug":567,"stem":568,"tags":569,"__hash__":573,"uuid":554,"comment_id":555,"feature_image":556,"featured":23,"visibility":24,"created_at":557,"updated_at":558,"custom_excerpt":559,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":574,"primary_tag":575,"url":562,"excerpt":559,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":563},"ghost/posts:physics-and-mechanics-principles-in-animation.json","Must-know Physics And Mechanics Principles Used In Animation (2026)",[551],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>Animation is a reflection of the real world: it has to be just realistic enough to be believable, but also engaging and entertaining. Spider-Man’s movements are inspired by real-life parkour and breakdancing to make his web-slinging feel grounded and dynamic.&nbsp;\u003C/p>\u003Cp>To achieve this, animators use basic physics and mechanics principles they can bend for a more stylized look. In this article, we go through a few examples of physics and mechanics principles to better put words on animation techniques to create more engaging stories. \u003C/p>\u003Ch2 id=\"1-body-mechanics\">\u003Cstrong>1. Body Mechanics\u003C/strong>\u003C/h2>\u003Cp>Bringing your characters to life requires understanding how real bodies move.\u003C/p>\u003Cp>Body mechanics are the foundations of animating realistic actions like walking, running, and climbing stairs. For example, idle animations show characters standing and breathing subtly. You can choose any pose, neutral or action-oriented, and design it to loop seamlessly for a continuous effect. Other cycles and loops where the first and last keyframes are identical create the illusion of continuous movement.\u003C/p>\u003Cp>Other body parts like hair, clothes, or even inanimate objects might require dynamic simulations using physics principles. For example, to simulate flowing hair or billowing fabric, enhance the believability of secondary movements (a cape fluttering in the wind), or breathe life into props (fall, bounce, collide, etc.).\u003C/p>\u003Cp>For speech animation, a phoneme represents a specific mouth shape associated with a particular vowel or consonant sound. By mastering phonemes, you can create realistic lip movements that perfectly match your character's dialogue.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXfmh7szja65dXpTNw1I3NqJjqWlqkWOEre2kR_PUATu_zw5G9V0w3h3Kt9nHKAgBPz16APcum-OeBwcr13Bz7Q-0fBwjViTZazr2JFNiNAJgu1mHXzJx14Ptjeqf9dVYa9_7u-L6_hPktMHZ2remH2LsFKm?key=wGN05F489POzdh7HFSn1cg\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1440\" height=\"638\">\u003C/figure>\u003Cp>\u003Cem>Source: Blender Artists\u003C/em>\u003C/p>\u003Ch2 id=\"2-timing-and-spacing\">\u003Cstrong>2. Timing and Spacing\u003C/strong>\u003C/h2>\u003Cp>Animation is not merely the art of drawing cool poses: timing and spacing are equally important to create believable movement, whether it's a powerful jump or a slow walk.\u003C/p>\u003Cp>Think of timing as the number of frames dedicated to each action. It controls the speed of your animation. Fewer frames create a faster motion, while more frames slow things down. Imagine a bouncing ball: the higher the bounce, the more frames you'll need to show its peak and descent smoothly.\u003C/p>\u003Cp>Frame rate (FPS) refers to the number of images displayed per second. It's the foundation on which timing is built.\u003C/p>\u003Cp>Spacing refers to the distance an object moves between frames. It works hand-in-hand with timing to create the illusion of weight and speed. Wider spacing between frames suggests faster movement, while smaller spacing creates a slower, more deliberate action.\u003C/p>\u003Cp>You can also combine timing and spacing with motion blur to simulate the blurring of objects during rapid movement. Imagine a fast-moving car – our eyes perceive a blur, not a series of crystal clear frames.\u003C/p>\u003Ch2 id=\"3-weight-and-mass\">\u003Cstrong>3. Weight and Mass\u003C/strong>\u003C/h2>\u003Cp>By understanding the difference between weight and mass, and how 3D software translates these concepts into animation tools, you can make informed decisions about how your objects move. While weight and mass are often used interchangeably, they hold distinct meanings.\u003C/p>\u003Cp>Mass is the amount of matter an object contains. It's a constant value regardless of gravity. Imagine a massive boulder on Earth versus the moon – it has the same mass, but its weight differs due to varying gravitational forces.\u003C/p>\u003Cp>Weight is the force exerted on an object due to gravity. A heavier object experiences a greater gravitational pull, making it require more force to move and stop.\u003C/p>\u003Cp>3D animation software doesn't directly store weight or mass data for objects. However, it offers tools to mimic their effects on movement:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Animation Curves\u003C/strong> - By adjusting animation curves, you control how an object accelerates, reaches peak velocity, and decelerates. Slower curves for heavier objects create a sluggish, delayed response, while sharper curves for lighter objects depict quick changes in direction.\u003C/li>\u003Cli>\u003Cstrong>Force Fields\u003C/strong> - Some software allows applying forces like gravity or wind to objects. These forces influence the object's movement, mimicking how weight and external forces affect real-world objects.\u003C/li>\u003Cli>\u003Cstrong>Physics Simulations\u003C/strong> - Advanced software offers physics simulations that take into account factors like mass, gravity, and friction. These simulations can create highly realistic movements, but require careful setup and can be computationally expensive.\u003C/li>\u003C/ul>\u003Cp>Pay close attention to how objects of different weights behave. While grounding your animation in a sense of physical reality is important, you'll often benefit from slight exaggerations.\u003C/p>\u003Ch2 id=\"4-inertia-momentum-and-force\">\u003Cstrong>4. Inertia, Momentum, and Force\u003C/strong>\u003C/h2>\u003Cp>Inertia, momentum, and force form the foundation of how objects move in the real world.\u003C/p>\u003Cp>Imagine a bowling ball rolling down a lane. It keeps moving even after it leaves the bowler's hand. This is inertia in action. Inertia is an object's tendency to resist changes in its state of motion. An object at rest stays at rest, and an object in motion stays in motion (at a constant speed and in a straight line) unless acted upon by an unbalanced force. Inertia helps us depict weight and gradual stops. A character running won't come to a halt instantly. They'll skid a bit, their body continuing to move forward even as their feet come to a stop.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXfUzHbz1NDC8yZNwvtoFPfEzr5rGEcOP9vXKTUtLyR873-Nrgpr_iqAEyTQDGiPt6xiRDadHhVZ_V2-qSPVa_7KwxoAWWkHgDvFOE9SXNAcKIJm9jC43ZjobIvZrI2wa-aykFiXSAG6xizii_4ZMjpH_qan?key=wGN05F489POzdh7HFSn1cg\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"768\" height=\"774\">\u003C/figure>\u003Cp>\u003Cem>Source: Dreamstime.com\u003C/em>\u003C/p>\u003Cp>Momentum is the mass of an object times its velocity. Simply put, it's a measure of how much \"oomph\" a moving object carries. A heavier object or one moving faster will have greater momentum. A character throwing a punch transfers momentum from their body to their fist, resulting in a powerful impact. Likewise, a car with high momentum will take longer to stop than a bicycle.\u003C/p>\u003Cp>Force is anything that causes an object to accelerate. It's the push or pull that disrupts an object's inertia and changes its state of motion. For example, friction between a shoe and the ground is a force that slows down a running character. A strong force applied to a character will result in a faster or more dramatic change in movement, while a weak force might lead to a subtle sway or wobble.\u003C/p>\u003Cp>For every action, there's an equal and opposite reaction. This is Newton's Third Law of Motion. When a character throws a punch, their arm exerts a force forward (action). In reaction, the character's body experiences an opposite force pushing them back slightly. A character swinging a sword should experience a slight recoil as the blade connects with an object.\u003C/p>\u003Ch2 id=\"5-center-of-gravity\">\u003Cstrong>5. Center of Gravity\u003C/strong>\u003C/h2>\u003Cp>The force that keeps our characters grounded (and makes them fall when they lose balance) is gravity. The Center of Gravity (CoG) is that special point where all the object's weight is perfectly balanced. As animators, we constantly consider the CoG to ensure our characters move realistically and maintain proper balance.\u003C/p>\u003Cp>The position of the CoG significantly impacts how your animated character interacts with gravity.\u003C/p>\u003Cp>When the CoG falls directly within the base of support (think of the area where your character's feet touch the ground), they'll stand firmly balanced. We call this stable equilibrium. This is the typical pose for a character at rest.\u003C/p>\u003Cp>If the CoG shifts outside the base of support, your character becomes unbalanced and starts to tip. This can be used for dynamic actions like leaning into a turn or falling over. By understanding how the CoG moves with different poses, you can create natural-looking weight shifts and falls.\u003C/p>\u003Ch2 id=\"6-squash-and-stretch\">\u003Cstrong>6. Squash and Stretch\u003C/strong>\u003C/h2>\u003Cp>Squash and stretch involves exaggerating the way objects deform during movement, creating a sense of weight, flexibility, and humor.\u003C/p>\u003Cp>When a bouncy ball hits the ground, it squashes downwards momentarily before stretching back up. This squash and stretch is what we amplify in animation. We might squash a character down as they jump, then stretch them out in mid-air, all while maintaining their overall volume. This exaggeration is what breathes life into the movement.\u003C/p>\u003Ch2 id=\"7-green-screen-chroma-key\">\u003Cstrong>7. Green Screen / Chroma Key\u003C/strong>\u003C/h2>\u003Cp>Let's say you animate a character swimming through a coral reef. Instead of building a miniature reef set, a green screen allows you to film your character in front of a green backdrop. During editing, this green background is replaced with the vibrant underwater scene you envisioned.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXdp_3vZIuY5XbYM97M1JQDVswcx3G7pivCPDnLpfqkd1hC1bDVWyiUcYDQbI8q-xAreAvQBVU6DRpG9CJo__fIxWNZQqy_1gOeG99wJG10POKAHgRwGWZ7H4gZphhQFi94CS7TbQS4XYZDRGGRsnn33Wq_v?key=wGN05F489POzdh7HFSn1cg\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"664\" height=\"840\">\u003C/figure>\u003Cp>\u003Cem>Image by Wikipedia\u003C/em>\u003C/p>\u003Cp>But why green? The magic lies in color differentiation. Green typically doesn't clash with the color range used for characters or objects. This allows digital creation software to easily isolate the filmed element (your character) from the green background: you can just load the animation sequence, adjust the chroma key to identify the green background color, and replace the green background with something else.\u003C/p>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>Understanding physics and mechanics principles is essential for creating believable and engaging animation. They provide the foundation for realistic movement, weight distribution, and interaction with the environment. By mastering these concepts, animators can breathe life into their characters and tell compelling stories.\u003C/p>\u003Cp>But animation isn't just about following cold, hard physics principles: it's an art form that thrives on creativity and expression. Animators often employ artistic license by subtly (or not so subtly) exaggerating movements or squashing and stretching objects to enhance character traits, evoke emotions, or inject humor. This artistic twist, grounded in a solid understanding of physics, is what separates a robotic imitation from a truly captivating animated performance.\u003C/p>\u003Cp>\u003Cem>Make sure to come say hi in\u003C/em>\u003Ca href=\"https://discord.com/invite/VbCxtKN?ref=blog.cg-wire.com\">\u003Cem> \u003Cu>our Discord community of 1000+ \u003C/u>\u003C/em>\u003C/a>\u003Cem>\u003Cu>animation professionals\u003C/u> and share your tips!\u003C/em>\u003C/p>",{"uuid":554,"comment_id":555,"feature_image":556,"featured":23,"visibility":24,"created_at":557,"updated_at":558,"custom_excerpt":559,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":560,"primary_tag":561,"url":562,"excerpt":559,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":563},"32582b9d-7bdb-40b6-9dcb-46b0b8ff8ee3","6671fb82ab09a1000107da2e","https://images.unsplash.com/photo-1718536669027-4ebd2b932ece?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8YWxsfDR8fHx8fHwyfHwxNzE4NzQ2MDE1fA&ixlib=rb-4.0.3&q=80&w=2000","2024-06-18T23:26:26.000+02:00","2026-02-20T06:04:47.000+01:00","Animators use basic physics and mechanics principles they can bend for a more stylized look. In this article, we go through a few examples of physics and mechanics principles to better put words on animation techniques to create more engaging stories.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/physics-and-mechanics-principles-in-animation/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@parisbilal?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Paris Bilal\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/physics-and-mechanics-principles-in-animation","2024-06-19T10:39:57.000+02:00",{"title":549},"physics-and-mechanics-principles-in-animation","posts/physics-and-mechanics-principles-in-animation",[570,571],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"64875aac7093d20001dbafe6","JE0ojmjUgAN5SqJP-QTeYU07Ps0vkU1taeR_dQxnOZw",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":577,"title":578,"authors":579,"body":12,"description":12,"extension":17,"html":581,"meta":582,"navigation":36,"path":593,"published_at":594,"seo":595,"slug":596,"stem":597,"tags":598,"__hash__":600,"uuid":583,"comment_id":584,"feature_image":585,"featured":23,"visibility":24,"created_at":586,"updated_at":587,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":601,"primary_tag":602,"url":590,"excerpt":591,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":592},"ghost/posts:concept-in-animation-definition-process-and-challenges.json","Concept in Animation (2026): Definition, Process, and Challenges",[580],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>All animation projects start with an idea. The animation production process then takes these ideas and integrates them into a cohesive story. Bridging the gap between ideas and storytelling is no easy task, however: that’s where concept artists come into the picture to transform ideas and scripts into engaging visuals.\u003C/p>\u003Cp>But what goes on in the process, exactly? That’s what we set out to figure out in this article.\u003C/p>\u003Ch2 id=\"what%E2%80%99s-a-concept-artist\">What’s A Concept Artist\u003C/h2>\u003Cp>A concept artist \u003Cstrong>creates designs and illustrations to bring visual direction\u003C/strong> to animated characters and environments.\u003C/p>\u003Cp>Take the series Avatar: The Last Airbender, for example. The concept artist would create detailed sketches, paintings, and digital illustrations to convey the look and feel of the series: what do the main characters look like? How is each nation represented? What about the fauna and flora? And so on. You can see on the right what Appa the sky bison looked like at the concept stage and later in production on the left:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://lh6.googleusercontent.com/MC4c-q1S2jHEsjpcKSoU2P0sns4iIYffR5e6oXmZFSBhxsGJ81qn9lT3wNq0IWCOD_cUt2QWy6FCULcC2cT3QDQ8p_XUEOYZRPDc2SfBqXw3CMaUTHsxc9Wwjqule2lswIVnj30TXSzHXmbEVfncEh4\" class=\"kg-image\" alt loading=\"lazy\" width=\"624\" height=\"312\">\u003C/figure>\u003Ch2 id=\"why-is-it-important-in-animation\">Why Is It Important In Animation\u003C/h2>\u003Cp>During pre-production, \u003Cstrong>concept art showcases the project's potential\u003C/strong>, visually communicating its creative direction to investors and other stakeholders to increase their confidence in the project, leading to better financial support and a smoother production process.\u003C/p>\u003Cp>\u003Cstrong>A concept artist establishes the visual direction of an animation project\u003C/strong> by translating ideas into visual concepts that set the aesthetic of the project. It helps the production team \u003Cstrong>visualize and plan the entire project\u003C/strong> more effectively, allowing for early identification of potential design issues, inconsistencies, or challenges, which can be addressed and resolved before entering the costly production phase. Through multiple iterations and feedback loops, the concept artist can fine-tune designs and make necessary adjustments before committing resources to production. This \u003Cstrong>helps avoid costly changes or rework later on\u003C/strong>. For example, if a character's design is not well thought out, it may result in difficulties during rigging or animation, leading to delays and increased expenses.\u003C/p>\u003Cp>Later, \u003Cstrong>detailed concept art serves as a reference throughout the entire asset creation pipeline\u003C/strong>: it provides clear visual guidelines for modelers and animators, reducing the guesswork and potential mistakes during pre-production and production.\u003C/p>\u003Ch2 id=\"who-is-involved\">Who Is Involved\u003C/h2>\u003Cp>While concept artists are responsible for translating ideas into visuals, they aren’t acting alone.\u003C/p>\u003Cp>\u003Cstrong>The art director\u003C/strong> oversees the process to ensure the artwork aligns with the project's overall vision. \u003Cstrong>The production designers\u003C/strong> help define the overall aesthetic by making decisions on color palettes, lighting, and composition.\u003C/p>\u003Cp>At the end of pre-production, \u003Cstrong>storyboard artists\u003C/strong> work alongside concept artists to visualize the story and its progression. They create sequential panels that depict key moments, camera angles, and shot compositions. These storyboards help the production team and director visualize and plan the narrative flow, pacing, and overall structure of the project for the production phase.\u003C/p>\u003Ch2 id=\"the-concept-artist%E2%80%99s-process\">The Concept Artist’s Process\u003C/h2>\u003Ch3 id=\"research\">Research\u003C/h3>\u003Cp>First, the concept artist needs to understand the project's needs and objectives to gather research and design inspiration.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Project brief\u003C/strong> - The project brief serves as a roadmap for the concept artist, ensuring their designs are in line with the project's vision and requirements. It contains outline goals, requirements, and other key information on the overall vision.\u003C/li>\u003Cli>\u003Cstrong>Script\u003C/strong> - After getting the overview from the project brief, concept artists can extract key elements from the script―story, characters, environments, mood, and visual style.\u003C/li>\u003Cli>\u003Cstrong>Conduct research\u003C/strong> - The research phase consists in gathering inspiration related to the project’s themes, settings, and artistic references. This is done by exploring various sources from books, movies, artwork, and real-world references.\u003C/li>\u003C/ul>\u003Cp>The research phase is the occasion to develop a visual library to inform the concept art designs.\u003C/p>\u003Ch3 id=\"thumbnail-sketches\">Thumbnail Sketches\u003C/h3>\u003Cp>The ideation process begins by creating thumbnail sketches that facilitate rapid exploration and experimentation of ideas through quick, small-scale drawings:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Explore different compositions, poses, and variations\u003C/strong> of characters, environments, or props.\u003C/li>\u003Cli>Use small-scale drawings \u003Cstrong>to quickly gather feedback\u003C/strong>.\u003C/li>\u003Cli>\u003Cstrong>Capture the essence\u003C/strong> and basic elements of the designs.\u003C/li>\u003C/ul>\u003Cp>Because imagination is limitless, thumbnail sketches help concept artists quickly narrow down and validate concepts before further developing them. This is especially important when there are tens of characters and environments to animate in an episode, each with their own distinct design.\u003C/p>\u003Ch3 id=\"rough-sketches\">Rough Sketches\u003C/h3>\u003Cp>Rough sketches refine initial ideas by \u003Cstrong>capturing the main design elements, proportions, and details\u003C/strong> of characters, environments, and other animated objects, as well as solidifying initial concepts by \u003Cstrong>adding visual coherence\u003C/strong>.\u003C/p>\u003Cp>They are important to get right as they provide a strong foundation for the rest of the conception phase, but you don’t want to spend too much time working on details―it’s not the production phase after all.\u003C/p>\u003Ch3 id=\"detailed-concept-art\">Detailed Concept Art\u003C/h3>\u003Cp>Detailed concept art including \u003Cstrong>refined linework, shading, and color, showcasing characters' appearances, expressions, outfits, and other important details can be requested to guide the production phase\u003C/strong> and avoid guesswork.\u003C/p>\u003Cp>Detailed concept art should \u003Cstrong>not be confused with storyboarding\u003C/strong>, another key part of the pre-production phase, that focuses on character movement and scene flow. As such, detailed concept art is key \u003Cstrong>to depicting the mood, lighting, and key features of environments\u003C/strong>, for example. But for characters, storyboarding is also essential to convey expressions and poses.\u003C/p>\u003Ch3 id=\"collaboration-with-the-production-team\">Collaboration with the Production Team\u003C/h3>\u003Cp>After approval, concept artists can sometimes collaborate with storyboard artists, modelers, and animators to help translate visual designs into animation. Things like:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Provide additional support and clarification\u003C/strong> on design elements and intentions.\u003C/li>\u003Cli>Work closely with the production team to \u003Cstrong>address any technical or creative challenges\u003C/strong> that may arise during the implementation phase.\u003C/li>\u003Cli>\u003Cstrong>Maintain effective communication and coordination\u003C/strong> to keep the art style consistent throughout the production process.\u003C/li>\u003C/ul>\u003Cp>Concept development is part of pre-production, but it doesn’t mean the requirements cannot evolve or that the visual designs are clear enough to model. Good communication with concept artists is key to keep the project on the rails!\u003C/p>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>Concept artists make the first step to bring life to characters, environments, and narratives, shaping the captivating experiences that define an animation project. Through a meticulous process of research, sketching, and refining, concept artists provide a clear visual roadmap for the production team.\u003C/p>\u003Cp>Collaboration is a big part of a concept artist’s work. You need to work with a variety of experts, exchange feedback, and apply resulting changes. A tool like Kitsu saves considerable time by streamlining task and asset management.\u003C/p>\u003Cp>\u003Cem>If you are a concept artist, an animation student, or someone who simply enjoys learning about the animation industry and its workflow, we invite you to \u003Ca href=\"https://discord.com/invite/VbCxtKN?ref=blog.cg-wire.com\">join our Discord community\u003C/a>. Here, you can connect with fellow artists, share your work, and learn from others in the industry.\u003C/em>\u003C/p>",{"uuid":583,"comment_id":584,"feature_image":585,"featured":23,"visibility":24,"created_at":586,"updated_at":587,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":588,"primary_tag":589,"url":590,"excerpt":591,"reading_time":299,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":592},"ad381ff7-9669-4711-8340-bc10fb153af7","64b51cb940bf3f0001b4a109","https://images.unsplash.com/photo-1456086272160-b28b0645b729?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHBhaW50aW5nfGVufDB8fHx8MTY4OTU5OTE1OHww&ixlib=rb-4.0.3&q=80&w=2000","2023-07-17T12:49:29.000+02:00","2026-03-26T10:31:51.000+01:00",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"https://blog.cg-wire.com/concept-in-animation-definition-process-and-challenges/","All animation projects start with an idea. The animation production process then takes these ideas and integrates them into a cohesive story. Bridging the gap between ideas and storytelling is no easy task, however: that’s where concept artists come into the picture to transform ideas and scripts into engaging visuals.\n\nBut what goes on in the process, exactly? That’s what we set out to figure out in this article.\n\n\nWhat’s A Concept Artist\n\nA concept artist creates designs and illustrations to b","Photo by \u003Ca href=\"https://unsplash.com/ko/@russn_fckr?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit\">russn_fckr\u003C/a> / \u003Ca href=\"https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit\">Unsplash\u003C/a>","/posts/concept-in-animation-definition-process-and-challenges","2023-07-24T15:07:16.000+02:00",{"title":578},"concept-in-animation-definition-process-and-challenges","posts/concept-in-animation-definition-process-and-challenges",[599],{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"bDIBJ4V9Z4mq4D4Wz-wycyCH0RTs0iFHL4jt1ZQQjVA",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},{"id":604,"title":605,"authors":606,"body":12,"description":12,"extension":17,"html":608,"meta":609,"navigation":36,"path":620,"published_at":621,"seo":622,"slug":623,"stem":624,"tags":625,"__hash__":627,"uuid":610,"comment_id":611,"feature_image":612,"featured":23,"visibility":24,"created_at":613,"updated_at":614,"custom_excerpt":615,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":628,"primary_tag":629,"url":618,"excerpt":615,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":619},"ghost/posts:environment-animation.json","Environment in Animation (2026): Definition, Process and Challenges",[607],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>To create immersive stories, animation studios need good characters but also good world-building. And because good wordbuilding requires great attention to details, it takes considerable time to get right whether you’re aiming for realism or fantasy. This is why \u003Cstrong>it’s often an entire team’s job to create animated environments\u003C/strong>. \u003C/p>\u003Cp>In this article, we explore the role of an environment artist: how it fits in the animation pipeline, why it’s important, and what’s behind its creative process.\u003C/p>\u003Ch2 id=\"what%E2%80%99s-an-environment-artist\">What’s An Environment Artist\u003C/h2>\u003Cp>\u003Cstrong>An environment artist designs the digital props and backgrounds that make up the environment of a scene\u003C/strong> where characters interact. They are 3D modelers specialized in environments.\u003C/p>\u003Cp>In an animation set in a fantasy world, for example, the environment artists would be responsible for creating castles, magical forests, caves, etc. in the 3D environment.\u003C/p>\u003Ch2 id=\"why-is-it-important-in-animation\">Why Is It Important In Animation\u003C/h2>\u003Cp>Environments \u003Cstrong>support the narrative and characters\u003C/strong>: they act as mirrors that highlight personalities, journeys, and conflicts.\u003C/p>\u003Cp>Without them, the animated world would seem bland and non-immersive. It’s \u003Cstrong>the little details in the environment that make the story more believable\u003C/strong>, whether it’s an exotic plant or beautiful architecture.\u003C/p>\u003Cp>The ambiance the environment creates sets \u003Cstrong>the tone of the project and its visual identity\u003C/strong>.\u003C/p>\u003Ch2 id=\"who-is-involved\">Who Is Involved\u003C/h2>\u003Cp>Because of the huge amount of work, an environment artist doesn’t work alone.\u003C/p>\u003Cp>\u003Cstrong>Concept artists\u003C/strong> are responsible for creating initial designs for the environments. They work closely with\u003Cstrong> the art director\u003C/strong> and artists to establish the artistic direction, mood, and overall look of the environments before they are modeled in 3D.\u003C/p>\u003Cp>Then, \u003Cstrong>the modeling team\u003C/strong>, including the environment artists, takes the concept art and translates it into 3D models using specialized software. This includes everything from buildings and natural elements like trees and rocks to smaller details like furniture or props. \u003Cstrong>The texture artist\u003C/strong> adds color, texture, and surface details to the 3D models created by the modeler, while \u003Cstrong>the lighting artist\u003C/strong> places light sources, adjusts their intensity, and chooses the color and direction of light to create the desired atmosphere. Finally, \u003Cstrong>the effects artist\u003C/strong> creates visual effects to bring the environments to life―weather elements (rain, snow, fog), atmospheric effects (sun rays, volumetric lighting), particle effects (fire, smoke, dust), etc.\u003C/p>\u003Cp>The art director provides overall direction for the environment art team, working closely with everyone to maintain the artistic vision and style, provide feedback, and make final decisions.\u003C/p>\u003Ch2 id=\"the-environment-artist%E2%80%99s-process\">The Environment Artist’s Process\u003C/h2>\u003Ch3 id=\"concept-design\">Concept Design\u003C/h3>\u003Cp>Concept design lays the foundation for the visual direction of the environments.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Initial brief\u003C/strong> - The environment artists collaborate with the art director and stakeholders to understand the project's vision, style, and narrative requirements.\u003C/li>\u003Cli>\u003Cstrong>Research \u003C/strong>- Gather references and inspiration to document the design process. These references define the look and feel of the environments.\u003C/li>\u003Cli>\u003Cstrong>Concept art\u003C/strong> - The environment team works closely with concept artists to develop initial sketches, mood boards, and other pieces of concept art.\u003C/li>\u003C/ul>\u003Cp>Because creating environments is a highly collaborative process that spans the entire animation pipeline, we’ve worked with countless animation studios that use \u003Ca href=\"https://www.cg-wire.com/kitsu?ref=blog.cg-wire.com\">our software Kitsu\u003C/a> right from the concept development phase to easily share assets, receive feedback, and iterate on designs in one place to make sure everyone is aligned.\u003C/p>\u003Ch3 id=\"layout-breakdown\">Layout &amp; breakdown\u003C/h3>\u003Cp>The environment artist starts the modeling work by establishing the structure and composition of the environments with key elements.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Blockouts\u003C/strong> - Rough 3D representations of the environments to lay the foundation for the overall layout using basic geometric shapes.\u003C/li>\u003Cli>\u003Cstrong>Planning the placement of major elements\u003C/strong> - Like buildings, terrain, and key features within the environment.\u003C/li>\u003Cli>\u003Cstrong>Breakdown\u003C/strong> - A breakdown is a detailed list of assets to model that will guide the subsequent stages.\u003C/li>\u003C/ul>\u003Cp>Kitsu also provides features \u003Ca href=\"https://www.cg-wire.com/casting-management?ref=blog.cg-wire.com\">to manage breakdowns and casting information\u003C/a> for your environment assets. You can create breakdown tables that show the casted assets organized by types to populate sets, link props to characters, or customize the workflow according to your needs to make the scene-building process more efficient.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://lh4.googleusercontent.com/2lZvs2WPFoT-fyEJHsQBBb4WgXZL7vQ9grAzXPG5eOVNEfyAgw697JcGNXAOPiWn7dqDvyGCgMa7vhCCzsaui1imH8kcxre1i8ZNN0bfiieSa5tEALyrsRzVxremMeqxDSsG6q3yzMutV2GwXR9MBFA\" class=\"kg-image\" alt loading=\"lazy\" width=\"624\" height=\"351\">\u003C/figure>\u003Ch3 id=\"modeling\">Modeling\u003C/h3>\u003Cp>\u003Cstrong>Modeling brings the environments to life with detailed 3D models.\u003C/strong> Digital content creation tools like Blender are used to build the geometry and structures that populate the environment. Then, different techniques are used to sculpt or generate each architectural elements, natural features, props, and other objects required. You can learn more about the process and techniques involved in \u003Ca href=\"https://blog.cg-wire.com/3d-modeling-animation/\">our dedicated article on 3D modeling\u003C/a>.\u003C/p>\u003Cp>Because of the huge workload modeling represents, environment artists rely on Kitsu's \u003Ca href=\"https://www.cg-wire.com/production-tracker?ref=blog.cg-wire.com\">task management feature\u003C/a> to organize and prioritize their work effectively. You can view assigned tasks, deadlines, and project milestones, ensuring you stay on track with your deliverables. The web platform enables you to track your progress, update task statuses, and receive notifications for any changes or updates related to your assigned tasks.\u003C/p>\u003Cp>Kitsu also allows teams to easily organize environment assets to make them easier to access and track over time with version control: you can store and categorize 3D models, textures, and changes.\u003C/p>\u003Ch3 id=\"texturing-lighting-and-shading\">Texturing, lighting, and shading\u003C/h3>\u003Cp>After the 3D models are completed, texturing artists add visual appeal and realism to them by sourcing high-resolution textures matching the materials. In parallel, lightning and shading artists work on placing light sources and having the 3D models behave accordingly.\u003C/p>\u003Cp>For an in-depth guide on texturing and shading processes, techniques, and best practices, \u003Ca href=\"https://blog.cg-wire.com/texturing-shading-animation/\">check out our article on the topic\u003C/a>.\u003C/p>\u003Ch3 id=\"special-effects\">Special effects\u003C/h3>\u003Cp>Special effects (VFX) add an extra layer of realism to the environment. Whether it’s weather effects (rain, snow, fog, sun rays, etc.), particles (fire, smoke, dust), or other physics elements like wind or flowing water, there is no such thing as a static environment in real life.\u003C/p>\u003Ch3 id=\"delivery\">Delivery\u003C/h3>\u003Cp>Delivery is the final step where the environment artist prepares the environments to be integrated into the animation project:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Optimization\u003C/strong> - Technical considerations like efficient use of memory, texture compression, and LOD (Level of Detail) systems. 3D models are useless if they cannot be rendered without going over budget, so each asset needs to be optimized for its target destination.\u003C/li>\u003Cli>\u003Cstrong>Package the assets and organize files\u003C/strong> - Ensure they are easily accessible and well-structured for integration.\u003C/li>\u003Cli>\u003Cstrong>Provide necessary documentation, guidelines, or instructions\u003C/strong> - To facilitate the integration of the environments into the animation pipeline.\u003C/li>\u003Cli>\u003Cstrong>Final quality check\u003C/strong> - To make sure the environments meet the desired quality standards.\u003C/li>\u003C/ul>\u003Cp>The asset packages are then delivered to \u003Ca href=\"https://blog.cg-wire.com/compositing-in-animation-definition-process-challenges/\">the compositing team\u003C/a> for rendering. If anything goes wrong during post-prod, the environment artist stays around to rework models as needed.\u003C/p>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>Through a multi-step process encompassing the whole animation pipeline from pre-production to post-prod, environment artists play a central role in setting the atmosphere and realism of the scenes.\u003C/p>\u003Cp>Collaboration is a big part of an environmental artist’s work. You need to work with a variety of experts, exchange feedback, and apply resulting changes. A tool like Kitsu saves considerable time by streamlining tasks and asset management. \u003C/p>\u003Cp>\u003Cem>If you are an environment artist, an animation student, or someone who simply enjoys learning about the animation industry, we invite you to \u003Ca href=\"https://discord.com/invite/VbCxtKN?ref=blog.cg-wire.com\">join our Discord community\u003C/a>. Here, you can connect with fellow artists, share your work, and learn from others in the industry.\u003C/em>\u003C/p>",{"uuid":610,"comment_id":611,"feature_image":612,"featured":23,"visibility":24,"created_at":613,"updated_at":614,"custom_excerpt":615,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":616,"primary_tag":617,"url":618,"excerpt":615,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":619},"dd39a540-dcc5-4713-b08f-3e3926e0d7ac","64b516f540bf3f0001b4a0cd","https://images.unsplash.com/photo-1506744038136-46273834b3fb?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGxhbmRzY2FwZXxlbnwwfHx8fDE2ODk1ODk1MTR8MA&ixlib=rb-4.0.3&q=80&w=2000","2023-07-17T12:24:53.000+02:00","2026-03-26T10:33:03.000+01:00","In this article, we explore the role of an environment artist: how it fits in the animation pipeline, why it’s important, and what’s behind its creative process.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"https://blog.cg-wire.com/environment-animation/","Photo by \u003Ca href=\"https://unsplash.com/@baileyzindel?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit\">Bailey Zindel\u003C/a> / \u003Ca href=\"https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit\">Unsplash\u003C/a>","/posts/environment-animation","2023-07-17T12:38:32.000+02:00",{"title":605},"environment-animation","posts/environment-animation",[626],{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"HVDgLTpe6714NLZw2XbF8MrEyk9M-DA6o5s7_9lj0KM",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},{"id":631,"title":632,"authors":633,"body":12,"description":12,"extension":17,"html":635,"meta":636,"navigation":36,"path":647,"published_at":648,"seo":649,"slug":650,"stem":651,"tags":652,"__hash__":654,"uuid":637,"comment_id":638,"feature_image":639,"featured":23,"visibility":24,"created_at":640,"updated_at":641,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":655,"primary_tag":656,"url":644,"excerpt":645,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":646},"ghost/posts:rigging-in-animation.json","Rigging in Animation (2026): Definition, Process & Challenges",[634],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>Rigging gives 3D models the ability to move. With rigs, you can make realistic animation.\u003C/p>\u003Cp>At CGWire, \u003Ca href=\"https://www.cg-wire.com/?ref=blog.cg-wire.com\">we help animation studios from all around the world manage their 3D animation assets\u003C/a> so we know how important the rigging process is. But do you know exactly what goes on behind the scenes and how it works? We wrote this article to explain that, and maybe give you an idea on how you can build your own animations.\u003C/p>\u003Cp>In the following sections, we cover everything related to rigging: how it fits in the animation pipeline, and what steps and roles it entails. We include common best practices and tips to make it more actionable for seasoned or aspiring animators, as well as snapshots on how to use \u003Ca href=\"https://www.cg-wire.com/kitsu?ref=blog.cg-wire.com\">our production tracker Kitsu\u003C/a> to make your rigging process more efficient and collaborative. Let’s get started!\u003C/p>\u003Ch2 id=\"what%E2%80%99s-rigging\">What’s Rigging\u003C/h2>\u003Cp>Rigging is the process of creating \u003Cstrong>a digital skeleton that allows animators to control the movement and deformation of characters, creatures, and other 3D objects\u003C/strong>. This digital skeleton is a hierarchical system of interconnected joints, known as a \u003Cstrong>rig\u003C/strong>. Each joint has its own position, rotation, and scale values, which determine the orientation and movement of the connected parts. It is a technical craft that requires precision, creativity, and an astute understanding of anatomy and physics.\u003C/p>\u003Cp>In addition to the skeleton, \u003Cstrong>a rig includes controllers\u003C/strong> or controls that make it easy for animators to manipulate a 3D model using on-screen handles, sliders, buttons, or even custom interfaces instead of moving each joint manually.\u003C/p>\u003Cp>For example, imagine a character lifting an arm, bending a leg, or even making intricate facial expressions. A rig could be an arm you can then animate as needed.\u003C/p>\u003Cp>The deliverables of rigging are \u003Cstrong>rigged 3D objects ready to animate\u003C/strong>.\u003C/p>\u003Ch2 id=\"why-rigging\">Why Rigging\u003C/h2>\u003Cp>Rigging is \u003Cstrong>the bridge between the initial modeling phase and the subsequent animation process\u003C/strong>, bringing characters and objects to life by allowing animators to manipulate 3D movements and expressions with precision. Rigging makes characters bend, twist, and stretch consistent with real-world physics to add realism.\u003C/p>\u003Cp>By manipulating a character's facial expressions, body language, and gestures, \u003Cstrong>animators can display complex emotions\u003C/strong> to bring more depth and personality to the animated characters, ultimately resulting in a more engaged audience.\u003C/p>\u003Cp>From a purely technical perspective, rigging saves time and effort by eliminating the need to manually set up controls for every movement, \u003Cstrong>enabling artists to focus on the creative aspects of their work\u003C/strong>.\u003C/p>\u003Ch2 id=\"who-does-rigging\">Who Does Rigging\u003C/h2>\u003Cp>Rigging involves the collaboration of several key roles. \u003Cstrong>The rigger is the primary expert responsible for creating the rig\u003C/strong>. They have a deep understanding of anatomy, physics, and animation principles. Riggers build the skeletal structure, define joint hierarchies, set up controls, and establish the parameters and constraints that allow animators to manipulate the rig effectively.\u003C/p>\u003Cp>Before rigging, \u003Cstrong>the modeler creates the 3D assets\u003C/strong>, including characters, creatures, and objects. They work closely with the rigger to ensure that the models are suitable for rigging, providing the necessary topology and geometry for smooth deformations and animation control.\u003C/p>\u003Cp>After rigging, \u003Cstrong>animators breathe life into the rigged characters\u003C/strong>. They use the rig to pose, animate, and create performances. Animators collaborate with riggers to provide feedback on the rig's features, making requests for additional controls or adjustments as needed.\u003C/p>\u003Cp>\u003Cstrong>A technical director\u003C/strong> may work with riggers to develop custom tools, scripts, or plugins to enhance the rigging workflow, streamline processes, or solve technical challenges.\u003C/p>\u003Ch2 id=\"the-rigging-process\">The Rigging Process\u003C/h2>\u003Ch3 id=\"before-modeling-planning\">Before: modeling &amp; planning\u003C/h3>\u003Cp>Rigging takes place after \u003Ca href=\"https://blog.cg-wire.com/3d-modeling-animation/\">the initial 3D modeling phase\u003C/a>: the models are ready, and the riggers can access character design information including appearance, proportions, and overall movement aesthetic.\u003C/p>\u003Cp>The planning phase involves analyzing the 3D models and discussing the intended range of movements, expressions, and any specific requirements with the rigging team:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Functional analysis\u003C/strong> - The intended actions, poses, and expressions of the 3D object, including specific challenges or constraints that may arise during rigging, such as complex movements or deformations.\u003C/li>\u003Cli>\u003Cstrong>Rig complexity\u003C/strong> - Based on the functional analysis, the rigging team determines the level of complexity required for a given rig including the number of joints, controllers, deformers, and specialized features needed.\u003C/li>\u003C/ul>\u003Cp>Different objects and body parts require different rigging techniques that need to be planned for. For example, \u003Ca href=\"https://blog.cg-wire.com/grooming-animation/\">hair for character grooming\u003C/a> requires specialized techniques to animate like simulations using physics engines.\u003C/p>\u003Ch3 id=\"joint-placement\">Joint placement\u003C/h3>\u003Cp>Before the rigging process can begin, \u003Cstrong>joint placement determines the position and hierarchy of joints within the model\u003C/strong> to guide the natural movement and articulation of a character's structure.\u003C/p>\u003Cp>Joint placement directly impacts how the character will move and deform during animation and requires a deep understanding of anatomy and kinematics to ensure that the joints are positioned in a way that mimics real-world articulation.\u003C/p>\u003Cp>To achieve lifelike movement, riggers strategically place joints in areas where natural bending and rotation occur like elbows, knees, and spine. The correct hierarchical arrangement of the joints is also crucial as it determines the relationship between different parts of the character's body.\u003C/p>\u003Cp>During the joint placement phase, riggers consider factors such as the character's skeletal structure, intended range of motion, and the overall aesthetics of the model.\u003C/p>\u003Ch3 id=\"proxy-geometry\">Proxy geometry\u003C/h3>\u003Cp>Proxy geometry is \u003Cstrong>a simplified version of the character's model used during rigging\u003C/strong>. It helps \u003Cstrong>improve performance and speed\u003C/strong> during the rigging process by reducing the complexity of the model: complex models with high-resolution geometry can be computationally demanding and slow down the rigging workflow. By substituting them with simplified proxy geometries with reduced polygon count, riggers can work more smoothly and efficiently.\u003C/p>\u003Cp>Proxy geometry also allows riggers \u003Cstrong>to focus specifically on rigging-related tasks\u003C/strong> without being distracted by the intricate details of the final model. Since rigging involves setting up controls, joints, and deformers, having simplified geometry allows riggers to quickly manipulate and test the rig's functionality without the need for complex geometry calculations.\u003C/p>\u003Ch3 id=\"rig-creation\">Rig creation\u003C/h3>\u003Cp>The rigger builds the rig by \u003Cstrong>creating the skeletal structure \u003C/strong>and\u003Cstrong> defining constraints and connections between the joints\u003C/strong> to enable realistic movements.\u003C/p>\u003Cp>To make rigging more efficient, \u003Cstrong>riggers use a modular approach\u003C/strong> where reusable components and templates are created. This way they can quickly rig similar characters or objects, saving time and maintaining consistency across the project with a standardized workflow and a common library of assets. A clean and logical hierarchical structure is also essential for a well-organized rig to ensure that the rig is easy to understand and manipulate.\u003C/p>\u003Cp>Using \u003Cstrong>constraints like Inverse Kinematics and Forward Kinematics\u003C/strong> greatly simplifies animation tasks and improves workflow. Inverse Kinematics (IK) allow animators to manipulate the end effector (e.g., a hand or foot) of a character, with the rest of the limb automatically adjusting accordingly. On the other hand, Forward Kinematics (FK) provides direct control over individual joints, allowing for more precise posing and animation. However, it's important to use constraints wisely and avoid overusing them as finding the right balance between constraints and manual control is key to achieving a flexible and efficient rig.\u003C/p>\u003Ch3 id=\"skinning\">Skinning\u003C/h3>\u003Cp>Skinning involves \u003Cstrong>assigning weights to the character's mesh\u003C/strong>, determining how it deforms when the rig is manipulated so that the character's skin moves realistically.\u003C/p>\u003Cp>One common technique to optimize the skinning process is \u003Cstrong>painting skin weights\u003C/strong>, where riggers manually assign weights to specific areas of the mesh to control how they are influenced by the underlying rig. \u003Cstrong>Influence falloffs\u003C/strong> are another useful technique where riggers can define how the influence of a joint or control diminishes over distance, resulting in smoother transitions between different areas of the character's mesh by avoiding abrupt deformations.\u003C/p>\u003Cp>Riggers also leverage \u003Cstrong>skinning tools and scripts to automate assigning weights\u003C/strong>, managing influences, and adjusting deformations, saving precious time while improving consistency. Efficiency is a key consideration in skinning: riggers aim to achieve accurate deformation while keeping the skinning process as fast as possible by optimizing the weight assignments, minimizing the number of joints influencing each vertex, and employing techniques to reduce computational overhead.\u003C/p>\u003Ch3 id=\"control-setup\">Control setup\u003C/h3>\u003Cp>\u003Cstrong>Controls allow animators to manipulate rigs effectively.\u003C/strong> They can take various forms like on-screen widgets, handles, or custom UI elements.\u003C/p>\u003Cp>\u003Cstrong>Primary controls provide animators with the main features needed to pose the character's body and limbs\u003C/strong>. These controls are strategically placed and organized in a logical manner, allowing for intuitive manipulation of the rig. Descriptive names and clear labeling of the controls contribute to the rig's accessibility and efficiency, enabling animators to quickly identify and use the desired controls.\u003C/p>\u003Cp>\u003Cstrong>Secondary controls are also created to fine-tune specific areas of the character\u003C/strong> for complex deformations, facial expressions, or intricate finger movements to enhance the level of control animators have over the character's performance for more complex animations.\u003C/p>\u003Cp>Creating user-friendly control systems is essential to ensure a smooth and efficient animation workflow, so riggers aim to design intuitive and easy-to-understand controls, even for animators who are not directly involved in the rigging process to help them focus on the creative aspects of animation rather than struggling with complex rigging setups.\u003C/p>\u003Ch3 id=\"final-delivery\">Final delivery\u003C/h3>\u003Cp>Once the rigging process reaches its final stage and is deemed complete, \u003Cstrong>the rigged 3D model is delivered to the animators for the production phase\u003C/strong>. This includes providing the animators with the necessary files and assets: skeletal structures, controls, deformers, and any additional components specific to the rig. Along with the character model, the animation team may receive accompanying tools and scripts developed to automate certain animation tasks or provide additional features tailored to the specific rig.\u003C/p>\u003Cp>It’s essential for the rigging team to collaborate closely with the animators, addressing any questions or concerns that may arise during the handover: \u003Cstrong>clear documentation and instructions regarding the rigs\u003C/strong> are typically provided to assist the animators.\u003C/p>\u003Cp>The final delivery of the rig marks a significant milestone in the production pipeline, as it signifies the readiness of the character for animation. It is worth noting that the rigging team continues to provide support and updates to the rig throughout the production phase as required, including bug fixes and new features to fulfill new requirements.\u003C/p>\u003Ch3 id=\"iterative-loop\">Iterative loop\u003C/h3>\u003Cp>Throughout the rigging process, communication and collaboration between riggers, modelers, animators, and other stakeholders play a crucial role in achieving a well-functioning rig that meets the creative and technical requirements of the project: \u003Cstrong>having the right methodologies and tools to support this collaborative aspect is important\u003C/strong> to increase productivity.\u003C/p>\u003Cp>Because of this, \u003Ca href=\"https://www.cg-wire.com/kitsu?ref=blog.cg-wire.com\">Kitsu is an invaluable tool for rigging\u003C/a>. \u003Cstrong>Sharing 3D models with colleagues or clients\u003C/strong> becomes a seamless process: just upload your work and gather constructive feedback from the user interface:\u003C/p>\u003Cp>By providing a centralized platform, Kitsu enables \u003Cstrong>open communication and coordination among team members\u003C/strong> involved in the animation pipeline. Designers can seamlessly connect with modelers, riggers, and animators to ensure a smooth transition from the design phase to the production stages with delivery tracking.\u003C/p>\u003Cp>Lastly, \u003Cstrong>Kitsu offers version control\u003C/strong>, providing a comprehensive history of the rigging process. Designers can easily revisit previous iterations, track changes, and maintain a clear record of the design evolution. By having all the design assets in one place, designers can efficiently manage their projects, making it easier to access and update rigging models as needed.\u003C/p>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>Rigging breathes life into characters and objects, enabling animators to create captivating and realistic movements. It’s a highly technical job that requires a fine understanding of physics, anatomy, and 3D modeling tools, but also creative qualities to achieve the artistic vision of a production. The rigging process can be broken down into 7 main steps, but it’s also a highly-collaborative work requiring several iterations to get right. Without it, animations can seem sloppy, and unappealing, and make the animators’ job harder and costlier for the animation studio.\u003C/p>\u003Cp>CGWire's Kitsu platform provides the perfect solution for managing rigging assets throughout the animation pipeline. With Kitsu, teams can seamlessly collaborate, track rig versions, and efficiently manage rigging deliverables. Its intuitive interface and powerful features streamline the rigging process, enabling artists to focus on their creative vision and deliver high-quality animations.\u003C/p>\u003Cp>\u003Ca href=\"https://account.cg-wire.com/signup/?ref=blog.cg-wire.com\" rel=\"noreferrer\">\u003Cem>Subscribe to Kitsu today\u003C/em>\u003C/a>\u003Cem>, it’s free to try and easy to use with your favorite digital content creation tool, whether it’s Blender, Unreal Engine, or Harmony.\u003C/em>\u003C/p>",{"uuid":637,"comment_id":638,"feature_image":639,"featured":23,"visibility":24,"created_at":640,"updated_at":641,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":642,"primary_tag":643,"url":644,"excerpt":645,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":646},"cf5940eb-dbba-4ac3-800d-26677417a044","649af0f95a58ac00010fcc3f","https://images.unsplash.com/photo-1620712943543-bcc4688e7485?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMxfHxyb2JvdHxlbnwwfHx8fDE2ODc4NzYzNjJ8MA&ixlib=rb-4.0.3&q=80&w=2000","2023-06-27T16:23:53.000+02:00","2026-03-26T09:24:07.000+01:00",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"https://blog.cg-wire.com/rigging-in-animation/","Rigging gives 3D models the ability to move. With rigs, you can make realistic animation.\n\nAt CGWire, we help animation studios from all around the world manage their 3D animation assets so we know how important the rigging process is. But do you know exactly what goes on behind the scenes and how it works? We wrote this article to explain that, and maybe give you an idea on how you can build your own animations.\n\nIn the following sections, we cover everything related to rigging: how it fits in ","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@santesson89?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Andrea De Santis\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/rigging-in-animation","2023-06-27T16:33:31.000+02:00",{"title":632},"rigging-in-animation","posts/rigging-in-animation",[653],{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"vKTvLNoFznShW-s0Ef_UW61u1f1m29dhissf1e74938",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},{"id":658,"title":659,"authors":660,"body":12,"description":12,"extension":17,"html":662,"meta":663,"navigation":36,"path":674,"published_at":675,"seo":676,"slug":677,"stem":678,"tags":679,"__hash__":681,"uuid":664,"comment_id":665,"feature_image":666,"featured":23,"visibility":24,"created_at":667,"updated_at":668,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":682,"primary_tag":683,"url":671,"excerpt":672,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":673},"ghost/posts:sound-design-in-animation-definition-process-challenges.json","Sound Design in Animation (2026): Definition, Process & Challenges",[661],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>Animation relies on visuals, words, and sound. Without music, sound effects, and dialogues, stories would remain incomplete. Characters would lack souls. From the subtle harmonies that evoke emotion to the thunderous applauses that give you goosebumps, \u003Cstrong>sound design is an important part of production\u003C/strong>.\u003C/p>\u003Cp>In this article, we take a look behind the scenes to explore the fascinating world of sound design in animation―the\u003Cstrong> techniques, tools, and processes used by sound designers to bring animations to life\u003C/strong>. \u003C/p>\u003Ch2 id=\"what%E2%80%99s-sound-design\">What’s Sound Design\u003C/h2>\u003Cp>Sound design refers to \u003Cstrong>the creation and integration of audio elements\u003C/strong> to enhance the visual storytelling experience―including music, dialogue, and sound effects.\u003C/p>\u003Cp>For example, sound design involves recording distinct sound effects for a character's movements, composing ambient sounds to establish a specific atmosphere, or designing unique soundscapes for fantastical worlds.\u003C/p>\u003Cp>The deliverables of the sound design process include \u003Cstrong>a final mix of the audio synchronized with the visuals and optimized for different playback environments\u003C/strong>.\u003C/p>\u003Ch2 id=\"why-sound-design\">Why Sound Design\u003C/h2>\u003Cp>Sound design plays a pivotal role in \u003Cstrong>enhancing the viewer's immersion and emotional engagement with the story\u003C/strong> by establishing the auditory environment of a scene. It brings life to characters and environments, making them feel more tangible and believable: from the rustling of leaves to the bustling city streets, carefully crafted audio elements transport the audience into the animated world itself!\u003C/p>\u003Cp>Well-crafted sound design is key \u003Cstrong>to captivate the audience and keep them engaged in the animation\u003C/strong>. A multi-sensory experience deepens the viewer's connection to the narrative and evokes emotions. Whether it's the thrill of an action sequence, the tenderness of a heartfelt moment, or the suspense of a thrilling chase, sound design amplifies the intended emotional response.\u003C/p>\u003Cp>\u003Cstrong>Animated characters also greatly benefit from it\u003C/strong>: unique sound effects, vocal traits, and stylized dialogue reinforce personalities, accentuate humor, or create memorable quirks. The sound design choices can emphasize the traits and nuances of each character, making them more relatable.\u003C/p>\u003Cp>Through sound cues, the viewer can identify off-screen actions, understand spatial relationships, and follow the progression of events: \u003Cstrong>sound design conveys information\u003C/strong>.\u003C/p>\u003Ch2 id=\"who-does-sound-design\">Who Does Sound Design\u003C/h2>\u003Cp>Sound design is the fruit of the collaboration between various professionals who contribute their expertise to create a cohesive and immersive audio experience.\u003C/p>\u003Cp>The \u003Cstrong>sound designer\u003C/strong> is responsible for conceptualizing and creating the overall sonic vision of the animation. They work closely with the directors and creative team to understand the story narrative and develop a sound design plan that enhances the story and characters.\u003C/p>\u003Cp>The \u003Cstrong>composer\u003C/strong> works in tandem with the sound designer to create the original score for the animation, while \u003Cstrong>foley artists\u003C/strong> record live sounds to add realism using various props in sync with the visuals and capture the subtle details of character movements, object interactions, and environmental sounds. \u003Cstrong>Voice actors\u003C/strong> provide the voices and performances for animated characters with powerful intonations and deliveries to convey a wide range of emotions.\u003C/p>\u003Cp>The sound effects and dialogue \u003Cstrong>editors\u003C/strong> are responsible for cleaning, editing, and enhancing the recordings. They ensure that the audio is clear, intelligible, and properly synchronized with the animation.\u003C/p>\u003Cp>Finally, the \u003Cstrong>mixer\u003C/strong> brings together all the different audio elements—dialogue, music, and sound effects—and balances them to create the final mix. They adjust levels, spatial positioning, and overall sound quality to ensure a cohesive and immersive audio experience.\u003C/p>\u003Cp>\u003Cstrong>Directors and producers\u003C/strong> collaborate with the sound team throughout the process, providing guidance and feedback.\u003C/p>\u003Ch2 id=\"the-sound-design-process-in-6-steps\">The Sound Design Process In 6 Steps\u003C/h2>\u003Ch3 id=\"research\">Research\u003C/h3>\u003Cp>The research phase is where the sound design team meets with the director to gain a deep understanding of the animation's vision, tone, and story. This phase is key to lay solid foundations for the later parts of the process.\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Analyze visual materials and scripts\u003C/strong> - The sound design team examines \u003Ca href=\"https://blog.cg-wire.com/storyboard-animation/\" rel=\"noreferrer\">storyboards, animatics\u003C/a>, concept art, and \u003Ca href=\"https://blog.cg-wire.com/character-design-animation/\" rel=\"noreferrer\">character designs\u003C/a> to understand the animation's visual style, pacing, and key moments that require specific sound treatments. By delving into the script and character descriptions, the sound design team gains a deeper understanding of the characters' personalities, motivations, and relationships to integrate sound elements that reflect the characters' traits.\u003C/li>\u003Cli>\u003Cstrong>Establish audio aesthetics\u003C/strong> - The overall sound palette, atmosphere, and genre influences that align with the storytelling and visual style. For example, Cowboy Bebop wouldn’t be the same without its jazzy soundtrack, and some animation studios have their own audio identity.\u003C/li>\u003Cli>\u003Cstrong>List sound references\u003C/strong> - The team can draw inspiration from films, documentaries, music, and real-life recordings. This helps gather ideas, explore creative possibilities, and develop a shared vocabulary.\u003C/li>\u003C/ol>\u003Cp>All of these elements end up\u003Cstrong> defining the sound requirements of the project\u003C/strong>, including technical considerations like licenses, audio formats, etc.\u003C/p>\u003Ch3 id=\"foley-recording\">Foley recording\u003C/h3>\u003Cp>Foley recording involves creating and recording sound effects synchronized with scenes. It adds depth and realism to the animation, allowing viewers to feel more connected to the on-screen world. It is a labor-intensive process that requires expertise, attention to detail, and creative problem-solving to capture the perfect sound effects.\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Scene analysis\u003C/strong> - The sound design team carefully analyzes each scene to identify the specific sound effects that need to be recorded: footsteps, clothing movements, object interactions, and any other sounds that are essential for enhancing the realism and immersion of the animation.\u003C/li>\u003Cli>\u003Cstrong>Foley artist planning\u003C/strong> - The Foley artists study the scene requirements, gather necessary props and materials, and plan their approach to recreate the desired sounds.\u003C/li>\u003Cli>\u003Cstrong>Foley stage setup\u003C/strong> - A dedicated recording space is acoustically treated and equipped with various surfaces and props to create different sound textures.\u003C/li>\u003Cli>\u003Cstrong>Recording\u003C/strong> - The Foley artist performs actions and movements in sync with the animation, using props and materials to recreate the desired sounds. This may involve walking, running, handling objects, opening doors, or even mimicking creature movements, depending on the requirements of the scene. The sound design team records multiple takes of each action to ensure they have a variety of options during the editing phase. They carefully capture the cleanest and most authentic sounds possible. After recording, they edit and manipulate the recorded sounds as needed to fit seamlessly into the animation.\u003C/li>\u003C/ol>\u003Cp>Depending on the budget constraints, Foley artists can also leverage sound effects sourced from open-source audio libraries instead of recording everything themselves. In both cases, it’s crucial to \u003Cstrong>build and maintain a comprehensive sound library\u003C/strong> for the animation production to efficiently manage and integrate hundreds of audio assets.\u003C/p>\u003Ch3 id=\"music-composition\">Music composition\u003C/h3>\u003Cp>If original music is required, the composer creates a score that complements the animation.\u003C/p>\u003Cp>Based on the research phase, \u003Cstrong>the composer begins the process of crafting the musical score\u003C/strong>. They create melodies, harmonies, and arrangements that align with the desired emotions, character motivations, and story progression. The composition may involve various instruments, styles, and genres depending on the animation's requirements.\u003C/p>\u003Cp>Then, \u003Cstrong>the composer or a team of musicians record the music\u003C/strong> with high-quality audio equipment. This may involve live instrument recordings, MIDI-based orchestrations, or a combination of both.\u003C/p>\u003Cp>Because of the tremendous resources required to create an original soundtrack, it isn’t unusual for animation studios to rely on \u003Cstrong>purchasing music licenses\u003C/strong>.\u003C/p>\u003Ch3 id=\"voice-acting\">Voice acting\u003C/h3>\u003Cp>Voice acting is \u003Cstrong>the process of recording character dialogues or verbal expressions\u003C/strong>. Just like a regular actor, a voice actor must \u003Cstrong>excel at expressing a wide range of emotions\u003C/strong> from joy and excitement to sadness and anger. Voice actors also \u003Cstrong>bring life to dialogues and voice-overs\u003C/strong>, making it sound natural and believable. They understand the nuances of timing, rhythm, and intonation, creating dynamic performances that enhance the delivery.\u003C/p>\u003Cp>In Japan, because of the skills and talent required, the best voice actors have a superstar status, and you can find 130 schools specialized in voice acting! \u003Cstrong>Voice acting can really make or break a production\u003C/strong>, so attention is required during the casting phase.\u003C/p>\u003Ch3 id=\"mixing-editing\">Mixing &amp; editing\u003C/h3>\u003Cp>The various audio elements are combined, balanced, and refined to create a cohesive and immersive auditory experience for the animation.\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Audio cleanup\u003C/strong> - Unwanted noise, clicks, pops, or any other imperfections that may have been captured during the recording process are removed.\u003C/li>\u003Cli>\u003Cstrong>Dialogue editing\u003C/strong> - The sound designers carefully edit the recorded dialogue tracks to remove background noises or inconsistencies, adjust volume levels, and ensure that the dialogue is clear and intelligible.\u003C/li>\u003Cli>\u003Cstrong>Sound effects integration\u003C/strong> - The sound effects are synchronized with the on-screen action.\u003C/li>\u003Cli>\u003Cstrong>Music mixing\u003C/strong> - The sound design team adjusts the levels, panning, and frequency ranges to carefully mix the music with the other sound elements and create a balanced and cohesive audio experience.\u003C/li>\u003C/ol>\u003Cp>At this stage, the audio is ready for delivery!\u003C/p>\u003Ch3 id=\"final-mix\">Final mix\u003C/h3>\u003Cp>The final mix combines all the edited audio tracks, including dialogue, music, and sound effects:\u003C/p>\u003Col>\u003Cli>\u003Cstrong>Balancing levels\u003C/strong> - The sound design team carefully adjusts the volume levels of each audio element to allow for intelligible dialogue while maintaining the impact of sound effects and music.\u003C/li>\u003Cli>\u003Cstrong>Dynamic range control\u003C/strong> - The dynamic range refers to the difference between the quietest and loudest parts of the audio. In the final mix, the sound design team applies techniques like compression and limiting to control the dynamic range, ensuring that the audio remains consistent and avoids abrupt volume changes that could distract or overwhelm the viewer.\u003C/li>\u003Cli>\u003Cstrong>Spatial design\u003C/strong> - If the animation calls for a spatial audio experience, such as surround sound or 3D audio, the sound design team spatially positions the sound elements within the audio field using techniques like panning, spatial effects, and binaural processing to create a sense of movement.\u003C/li>\u003Cli>\u003Cstrong>Equalization\u003C/strong> - Equalization (EQ) is used to adjust the frequency response of different sound elements. During the final mix, the sound design team applies EQ to ensure that each sound element occupies its intended frequency range and doesn't conflict with other elements. This helps to create clarity, separation, and overall tonal balance in the audio track.\u003C/li>\u003Cli>\u003Cstrong>Quality assurance\u003C/strong> - The sound design team monitors the audio using high-quality speakers or headphones to make sure the audio translates well across different playback systems and environments from mobile phones to movie speakers.\u003C/li>\u003C/ol>\u003Cp>The final audio package containing the required audio files are then sent to the animation editor for integration in the episode or film.\u003C/p>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>Sound design is a key part of animation production. From its role in establishing mood and atmosphere to music and voice acting, sound designers bring visuals to a whole new level. As animation enthusiasts, it is crucial to appreciate the immense efforts that go into sound design. \u003C/p>\u003Cp>Throughout the sound design stages, collaboration, feedback, and revisions occur between the sound design team, directors, and producers to refine all the audio elements. It's a major step to make your production perfect.\u003C/p>\u003Cp>\u003Cem>Kitsu, developed by CGWire, is a comprehensive production tracker designed specifically for animation studios. It provides a robust platform for managing assets, facilitating collaboration, and streamlining the entire production pipeline, including sound design. \u003Cbr>Don't miss the opportunity to elevate your animation projects with the power of Kitsu. \u003C/em>\u003Ca href=\"https://account.cg-wire.com/signup/?ref=blog.cg-wire.com\" rel=\"noreferrer\">\u003Cem>Sign up today for free\u003C/em>\u003C/a>\u003Cem> and experience the impact it can have on your sound design and overall production efficiency.\u003C/em>\u003C/p>",{"uuid":664,"comment_id":665,"feature_image":666,"featured":23,"visibility":24,"created_at":667,"updated_at":668,"custom_excerpt":12,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":669,"primary_tag":670,"url":671,"excerpt":672,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":673},"3dfa0c6b-39ef-48fc-a24e-284127f1d5e4","64875a9f7093d20001dbafe2","https://images.unsplash.com/photo-1593697821178-c4c24e92d4ba?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE2fHxzb3VuZCUyMHJlY29yZGluZ3xlbnwwfHx8fDE2ODY1OTIzODR8MA&ixlib=rb-4.0.3&q=80&w=2000","2023-06-12T19:49:19.000+02:00","2026-03-26T09:40:04.000+01:00",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"https://blog.cg-wire.com/sound-design-in-animation-definition-process-challenges/","Animation relies on visuals, words, and sound. Without music, sound effects, and dialogues, stories would remain incomplete. Characters would lack souls. From the subtle harmonies that evoke emotion to the thunderous applauses that give you goosebumps, sound design is an important part of production.\n\nIn this article, we take a look behind the scenes to explore the fascinating world of sound design in animation―the techniques, tools, and processes used by sound designers to bring animations to l","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@soundtrap?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Soundtrap\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/sound-design-in-animation-definition-process-challenges","2023-06-20T12:01:59.000+02:00",{"title":659},"sound-design-in-animation-definition-process-challenges","posts/sound-design-in-animation-definition-process-challenges",[680],{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},"pe65HgHYGdJ_kD3YGFUzYZNQHDSATQykbxvo5VKM8W4",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":572,"name":83,"slug":86,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":82},[685,711,737,763,789],{"id":686,"title":687,"authors":688,"body":12,"description":12,"extension":17,"html":690,"meta":691,"navigation":36,"path":702,"published_at":696,"seo":703,"slug":704,"stem":705,"tags":706,"__hash__":708,"uuid":692,"comment_id":693,"feature_image":694,"featured":23,"visibility":24,"created_at":695,"updated_at":696,"custom_excerpt":697,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":709,"primary_tag":710,"url":700,"excerpt":697,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":701},"ghost/posts:blender-python-event-automation.json","Automating Blender with Python Event Handlers",[689],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">⚙️\u003C/div>\u003Cdiv class=\"kg-callout-text\">Blender events let you automate workflows without adding extra steps for artists.\u003C/div>\u003C/div>\u003Cp>A render finishes at 2am, no one is watching, and the output sits in a temporary folder until someone remembers to move it. An artist exports a file with the wrong name. A camera gets left at the wrong focal length before a client delivery.\u003C/p>\u003Cp>All these issues add up. Fortunately, there is a simple solution for all of them: Blender's Python API gives you direct access to the events that drive the application. You can write code that listens for those events and acts on them automatically, without any artist involvement. By the end of this article, you will have two working examples you can adapt in your own pipeline.\u003C/p>\u003Chr>\u003Ch2 id=\"3-ways-to-listen-to-events-in-blender\">3 Ways To Listen to Events in Blender\u003C/h2>\u003Cp>Blender exposes three main mechanisms for responding to events through its Python API:\u003C/p>\u003Cul>\u003Cli>\u003Ccode>app.handlers\u003C/code> are passive listeners that fire when Blender performs a specific action: a render completes, a file loads, a frame changes. Your code registers a function and Blender calls it when the moment arrives. The artist does not need to do anything, so this is often the right tool for automating background pipeline tasks.\u003C/li>\u003Cli>Modal operators are active listeners. They take over Blender's event loop for a given window and intercept everything the artist does in real time, mouse clicks, key presses, cursor movement, until the operator finishes or is cancelled. This is the right tool when you want to build interactive tools that respond to what an artist is physically doing inside the viewport.\u003C/li>\u003Cli>The third way to listen to events, \u003Ccode>msgbus\u003C/code>, lets you subscribe to changes on specific data properties, like the active object or a scene setting. It is useful but narrower in scope. This article does not cover it.\u003C/li>\u003C/ul>\u003Cp>The two examples this article builds cover the most common studio automation needs: the first removes a background task from your artists entirely with a handler, the other replaces a slow, manual workflow with a single click with a modal operator.\u003C/p>\u003Chr>\u003Ch2 id=\"1-auto-export-on-render-complete\">1. Auto-Export on Render Complete\u003C/h2>\u003Cp>There are many useful handlers available, among them:\u003C/p>\u003Cul>\u003Cli>\u003Ccode>render_init\u003C/code> - fires when a render job starts\u003C/li>\u003Cli>\u003Ccode>render_pre\u003C/code> - fires before each frame renders\u003C/li>\u003Cli>\u003Ccode>render_post\u003C/code> - fires after each frame renders\u003C/li>\u003Cli>\u003Ccode>load_pre\u003C/code> / \u003Ccode>load_post\u003C/code> - before/after a \u003Ccode>.blend\u003C/code> file is loaded\u003C/li>\u003Cli>\u003Ccode>save_pre\u003C/code> / \u003Ccode>save_post\u003C/code> - before/after a \u003Ccode>.blend\u003C/code> file is saved\u003C/li>\u003C/ul>\u003Cp>Open Blender and switch to the Scripting workspace from the top tab bar. You will see the Python console on the left and the Text Editor on the right. Write your code in the Text Editor and run it with Alt+P.\u003C/p>\u003Cp>You can also \u003Ca href=\"https://blog.cg-wire.com/blender-addon-ui-scripting-guide/\">use an addon to keep the script persistent\u003C/a>.\u003C/p>\u003Cp>Instead of building a full render pipeline tool, we'll start with something small to understand the main pattern: a minimal handler that fires the moment a render finishes and writes a timestamped confirmation to a file. It's a useful starting point for verifying that your handler is working correctly before building out more complex post-render logic:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import bpy\nfrom datetime import datetime\n\n@bpy.app.handlers.persistent\ndef on_render_complete(scene, depsgraph):\n    timestamp = datetime.now().strftime(\"%Y%m%d_%H%M%S\")\n    open(\"test.txt\", \"w\").write(f\"Completed: {timestamp}\\n\")\n\nbpy.app.handlers.render_complete.append(on_render_complete)\n\u003C/code>\u003C/pre>\u003Cp>The \u003Ccode>@bpy.app.handlers.persistent\u003C/code> decorator keeps the handler registered across file loads, so it survives scene changes during a session.\u003C/p>\u003Cp>On render complete, \u003Ccode>datetime.now()\u003C/code> captures the finish time and formats it as a compact timestamp string. That string is written directly to a hardcoded path, overwriting the file on each render.\u003C/p>\u003Cp>Lastly, \u003Ccode>bpy.app.handlers.render_complete.append\u003C/code> registers the function so Blender calls it automatically when a render finishes.\u003C/p>\u003Cp>To test this without waiting for a full render, use Render Single Frame and then check that \u003Ccode>test.txt\u003C/code> exists at the target path and contains the expected timestamp.\u003C/p>\u003Cp>You can then extend the handler to copy output files, record scene metadata, or trigger downstream workflows.\u003C/p>\u003Cp>The pattern is always the same as in the example: define a function, optionally decorate it with \u003Ccode>@bpy.app.handlers.persistent\u003C/code>, then append it to the relevant list.\u003C/p>\u003Chr>\u003Ch2 id=\"2-modal-operators\">2. Modal Operators\u003C/h2>\u003Cp>\u003Ccode>app.handlers\u003C/code> cannot help you when the task involves responding to what an artist is actively doing in the viewport. You need a modal operator instead.\u003C/p>\u003Cp>The use case here is a one-click camera framer: an artist clicks an object and the active camera repositions and reframes to a studio-standard composition. No manual camera adjustment and no guessing at focal length, so no inconsistency between artists.\u003C/p>\u003Cp>A modal operator is a class with two key methods:\u003C/p>\u003Cul>\u003Cli>\u003Ccode>invoke()\u003C/code> starts the operator and registers it with the window manager.\u003C/li>\u003Cli>\u003Ccode>modal()\u003C/code> receives every event that occurs after that and decides what to do with it. The operator stays active and keeps receiving events until it returns \u003Ccode>FINISHED\u003C/code> or \u003Ccode>CANCELLED\u003C/code>.\u003C/li>\u003C/ul>\u003Cpre>\u003Ccode class=\"language-python\">import bpy\n\nclass AutoFrameOperator(bpy.types.Operator):\n    bl_idname = \"studio.auto_frame\"\n    bl_label = \"Auto Frame Selected\"\n\n    def invoke(self, context, event):\n        context.window_manager.modal_handler_add(self)\n        return {'RUNNING_MODAL'}\n\n    def modal(self, context, event):\n        if event.type == 'LEFTMOUSE' and event.value == 'PRESS':\n            target = context.active_object\n            if target:\n                self.frame_camera_to(context, target)\n            return {'FINISHED'}\n\n        if event.type in {'RIGHTMOUSE', 'ESC'}:\n            return {'CANCELLED'}\n\n        return {'RUNNING_MODAL'}\n\n    def frame_camera_to(self, context, target):\n        camera = context.scene.camera\n        if not camera:\n            return\n        focal_length = 85\n        camera.data.lens = focal_length\n        \n        print(f\"Framed camera on: {target.name}\")\n\ndef register():\n    bpy.utils.register_class(AutoFrameOperator)\n\ndef unregister():\n    bpy.utils.unregister_class(AutoFrameOperator)\n\u003C/code>\u003C/pre>\u003Cp>We define a Blender operator called \u003Ccode>AutoFrameOperator\u003C/code>, a reusable action that Blender exposes under the ID \u003Ccode>studio.auto_frame\u003C/code>. When triggered, \u003Ccode>invoke\u003C/code> registers it as a modal handler, meaning it stays active and listens for user input rather than executing immediately.\u003C/p>\u003Cp>The \u003Ccode>modal\u003C/code> method is the event loop that runs on every interaction. A left click grabs the currently active object and passes it to \u003Ccode>frame_camera_to\u003C/code>, then exits. Right-click or Escape cancels cleanly, and anything else keeps the operator waiting.\u003C/p>\u003Cp>The \u003Ccode>RUNNING_MODAL\u003C/code> return value is what keeps the operator alive and listening. Any event that does not match a condition you handle should return \u003Ccode>RUNNING_MODAL\u003C/code> so the operator stays active. Returning \u003Ccode>PASS_THROUGH\u003C/code> instead tells Blender to process the event normally in addition to passing it to your operator, which is useful when you want the artist to still be able to navigate the viewport while the operator is running.\u003C/p>\u003Cp>\u003Ccode>frame_camera_to\u003C/code> is the core logic. It retrieves the scene's active camera and sets its focal length to 85mm, though the actual math to reposition the camera and properly frame the target object isn't implemented as it's out of the scope of this article.\u003C/p>\u003Cp>\u003Ccode>register\u003C/code> and \u003Ccode>unregister\u003C/code> are standard Blender add-on boilerplate that make the operator available when the script loads and remove it cleanly when it unloads.\u003C/p>\u003Cp>To invoke the operator after installing the script as an addon, we open the search menu with F3 and type \"Auto Frame Selected\". To bind it to a shortcut, we can simply add the following snippet inside the \u003Ccode>register()\u003C/code> function:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">wm = bpy.context.window_manager\nkc = wm.keyconfigs.addon\nif kc:\n    km = kc.keymaps.new(name='3D View', space_type='VIEW_3D')\n    kmi = km.keymap_items.new(\"studio.auto_frame\", type='F', value='PRESS', ctrl=True)\n\u003C/code>\u003C/pre>\u003Cp>It's important to namespace your shortcuts carefully. \u003Ccode>Ctrl+F\u003C/code> in the 3D viewport has no default binding in Blender, but check against your studio's existing configuration before deploying. A shortcut conflict that silently overrides a default Blender action is hard to debug and will frustrate your artists.\u003C/p>\u003Cp>One more rule to follow: keep the \u003Ccode>modal()\u003C/code> method lean. Heavy computation inside \u003Ccode>modal()\u003C/code> runs on every single event, which means every mouse movement. If your framing logic is expensive, offload it to a separate method and only call it when the relevant event fires, as shown above with \u003Ccode>frame_camera_to\u003C/code>.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>You now have two examples of tools that address real studio problems without adding steps to your artists' workflow.\u003C/p>\u003Cp>The render handler can remove a manual, error-prone handoff from your pipeline entirely. And the modal operator gives artists a consistent, one-click way to frame a camera to your studio standard.\u003C/p>\u003Cp>The same patterns extend further. A \u003Ccode>load_post\u003C/code> handler could enforce naming conventions the moment a file opens. A \u003Ccode>depsgraph_update_post\u003C/code> handler might flag objects that violate your scene budget. A render complete handler can fire an HTTP request to a webhook and post a Slack notification to your production channel when a shot is done.\u003C/p>\u003Cp>The event system is already there: you just have to start listening!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":692,"comment_id":693,"feature_image":694,"featured":23,"visibility":24,"created_at":695,"updated_at":696,"custom_excerpt":697,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":698,"primary_tag":699,"url":700,"excerpt":697,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":701},"3d817b37-7ce7-4d96-b479-e6915371fade","69d4d1fdc037da0001fce81f","https://images.unsplash.com/photo-1686157251060-3ea1f90857aa?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDExfHwzZCUyMGFuaW1hdGlvbiUyMGF1dG9tYXRpb258ZW58MHx8fHwxNzc1NTU1Mzc0fDA&ixlib=rb-4.1.0&q=80&w=2000","2026-04-07T11:44:29.000+02:00","2026-04-07T11:54:18.000+02:00","Learn how to use Blender’s Python API to listen to events and automate workflows. This guide covers handlers and modal operators with practical examples for production pipelines.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/blender-python-event-automation/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@hiestudio?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">HI! ESTUDIO\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/blender-python-event-automation",{"title":687},"blender-python-event-automation","posts/blender-python-event-automation",[707],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"9JCrUEGsAvw10rXO5Icp6lhnx5Mume3AbiZ5__SpE9U",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":712,"title":713,"authors":714,"body":12,"description":12,"extension":17,"html":716,"meta":717,"navigation":36,"path":728,"published_at":722,"seo":729,"slug":730,"stem":731,"tags":732,"__hash__":734,"uuid":718,"comment_id":719,"feature_image":720,"featured":23,"visibility":24,"created_at":721,"updated_at":722,"custom_excerpt":723,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":735,"primary_tag":736,"url":726,"excerpt":723,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":727},"ghost/posts:kitsu-telegram-bot-integration.json","Integrating Messaging Platforms with Kitsu Production Data",[715],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">💬\u003C/div>\u003Cdiv class=\"kg-callout-text\">Turn production events into instant chat notifications and commands with a Kitsu messaging bot.\u003C/div>\u003C/div>\u003Cp>Chat interfaces dominate the modern workplace: production teams coordinate in threads, approvals happen in emails, and LLM-powered assistants are becoming part of daily operations.\u003C/p>\u003Cp>The real problem is proper integration. A message that says \"Shot ready for review\" should let a supervisor approve that shot and update the status in Kitsu under the correct user in an ideal world, but this would require a small backend service, a secure API connection to Kitsu, and a reliable mapping between chat users and Kitsu users. The good news is, you can already do so with Kitsu!\u003C/p>\u003Cp>A simple starting point is a Telegram bot with one command like /hello. The bot links the chat user to their Kitsu account once, then replies through the API and displays them in chat. Whenever an event happens in Kitsu, the bot notified you. That small integration proves the concept, and that's exactly what we're going to build in this article.\u003C/p>\u003Chr>\u003Ch2 id=\"why-custom-messaging-integrations\">Why Custom Messaging Integrations\u003C/h2>\u003Cp>Custom messaging integrations centralize communication around a single source of truth. Instead of supervisors forwarding emails about a task status change, the update can be pushed automatically to the relevant team channel. For example, when a lighting task switches to \"retake\" in Kitsu, the lighting Telegram group instantly receives a structured message with the shot name, assignee, and deadline. The production tracker becomes proactive.\u003C/p>\u003Cp>User experience improves when raw database events are reshaped into readable summaries. Artists should not need to dig through activity logs to understand what changed. A daily digest sent to a Telegram channel can summarize approvals, new assignments, and upcoming deadlines in plain language. That digest can be generated directly from the Kitsu API and delivered automatically every evening to turn production data into something people actually consume.\u003C/p>\u003Cp>Automation is where this approach truly pays off, however. Messaging platforms can act as lightweight command interfaces. A coordinator typing \"/late_shots\" in Telegram can trigger a query against Kitsu and receive an instant report of overdue tasks. A lead typing \"/assign SH010 alice\" can trigger a backend call that updates the assignment in Kitsu. Chat becomes an operational surface for the production database.\u003C/p>\u003Cp>But as we said, let's start simple with a Telegram bot that interacts with Kitsu.\u003C/p>\u003Chr>\u003Ch2 id=\"1-create-a-new-telegram-bot\">1. Create a New Telegram Bot\u003C/h2>\u003Cp>Start by creating a dedicated bot in Telegram. Separation keeps credentials clean and avoids future security headaches when the integration is handed over to production IT.\u003C/p>\u003Cp>Open Telegram and search for BotFather, which is the official bot for managing other bots.\u003C/p>\u003Cp>Initiate a chat and send \u003Ccode>/newbot\u003C/code>. The flow is straightforward: provide a human-readable name like “Kitsu Notifications” and then a unique username such as \u003Ccode>kitsu_pipeline_bot\u003C/code>. The username must end with “bot,” and it has to be globally unique, so expect to try a few variations in a studio environment.\u003C/p>\u003Cp>BotFather returns an API token. Treat this token as a production secret, not as a convenience string to paste into Slack or commit to Git. Store it in your environment configuration system. If this token leaks, anyone can send messages as your production bot, which quickly turns from amusing to catastrophic when producers start receiving spam.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-10.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"976\" height=\"925\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-10.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-10.png 976w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Before wiring this into Kitsu’s event system, let's validate the token manually.\u003C/p>\u003Cp>Search for your newly created bot by its username inside Telegram and start a conversation with it. Send a simple \"/start\" so Telegram registers your chat.\u003C/p>\u003Cp>To retrieve your client (chat) ID, call the \u003Ccode>getUpdates\u003C/code> endpoint with curl using the token. For example:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">curl https://api.telegram.org/bot&lt;TOKEN&gt;/getUpdates\n\u003C/code>\u003C/pre>\u003Cp>The response will contain a JSON payload with a \u003Ccode>chat\u003C/code> object and an \u003Ccode>id\u003C/code> field. That numeric ID is what your integration will target. In a real pipeline scenario, this might be the chat ID of a supervisors group rather than an individual user.\u003C/p>\u003Cp>Now test outbound messaging directly. Use curl to send a message to yourself:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">curl -X POST https://api.telegram.org/bot&lt;TOKEN&gt;/sendMessage -d chat_id=&lt;CHAT_ID&gt; -d text=\"Kitsu integration test\"\n\u003C/code>\u003C/pre>\u003Cp>If the message appears in Telegram, the token and chat ID are valid. This manual verification step saves hours of debugging later when you plug the same call into a Kitsu event hook and something silently fails.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-11.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"976\" height=\"925\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-11.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-11.png 976w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>With the bot validated, the next step is to connect it to Kitsu’s event system so that, for example, when a new asset is created, a message is pushed automatically to the supervisors’ Telegram group.\u003C/p>\u003Cp>The exact same \u003Ccode>sendMessage\u003C/code> endpoint you tested with curl becomes part of a small service or serverless function triggered by Kitsu.\u003C/p>\u003Chr>\u003Ch2 id=\"2-set-a-kitsu-event-listener\">2. Set a Kitsu Event Listener\u003C/h2>\u003Cp>Next, we need to subscribe to real-time events from Kitsu. The objective is simple: react the moment production data changes.\u003C/p>\u003Cp>We can use Kitsu's \u003Ccode>zou\u003C/code> Python SDK to open a websocket connection and listen for task update events.\u003C/p>\u003Cp>For example, connect to the Kitsu event stream and filter for asset creation events:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import gazu \n\ngazu.set_host(\"http://localhost:80/api\")\ngazu.set_event_host(\"http://localhost:80/api\")\ngazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\n\ndef my_callback(data):\n    print(\"Asset created %s\" % data[\"asset_id\"])\n\nevent_client = gazu.events.init()\ngazu.events.add_listener(event_client, \"asset:new\", my_callback)\ngazu.events.run_client(event_client)\n\u003C/code>\u003C/pre>\u003Cp>We use the \u003Ccode>gazu\u003C/code> library to connect to a locally hosted Kitsu API server at \u003Ccode>http://localhost:80/api\u003C/code>, authenticate with the provided admin credentials, and then listen for real-time events.\u003C/p>\u003Cp>The snippet defines a callback function \u003Ccode>my_callback\u003C/code> that prints the ID of a newly created asset whenever it is triggered.\u003C/p>\u003Cp>After initializing an event client with \u003Ccode>gazu.events.init()\u003C/code>, the script registers the callback to listen for the \u003Ccode>\"asset:new\"\u003C/code> event (which fires whenever a new asset is created in the system).\u003C/p>\u003Cp>\u003Ccode>gazu.events.run_client(event_client)\u003C/code> starts the event loop that keeps the script running so that each time a new asset is added to Kitsu, the callback executes and prints its \u003Ccode>asset_id\u003C/code>.\u003C/p>\u003Chr>\u003Ch2 id=\"3-use-the-telegram-api-to-send-a-message\">3. Use the Telegram API to Send a Message\u003C/h2>\u003Cp>With events flowing in, push messages out using Telegram’s \u003Ccode>sendMessage\u003C/code> endpoint like we did earlier for testing. The API is just an HTTP POST that includes the bot token, chat ID, and text payload.\u003C/p>\u003Cp>Encapsulate that in a small utility function:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import requests\nimport os\n\nTELEGRAM_BOT_TOKEN = os.getenv('TELEGRAM_BOT_TOKEN')\nTELEGRAM_CHAT_ID = os.getenv('TELEGRAM_CHAT_ID')\n\ndef send_telegram_message(text):\n    url = f\"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage\"\n    payload = {\n        \"chat_id\": TELEGRAM_CHAT_ID,\n        \"text\": text,\n        \"parse_mode\": \"Markdown\"\n    }\n\n    response = requests.post(url, json=payload, timeout=5)\n\n    if not response.ok:\n        raise RuntimeError(\n            f\"Telegram API error {response.status_code}: {response.text}\"\n        )\n\u003C/code>\u003C/pre>\u003Cp>Note that we defined secret environment variables to prevent persisting them in a Git repository.\u003C/p>\u003Cp>Then call it from the event callback:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">from your_telegram_module import send_telegram_message\n\ndef my_callback(data):\n    send_telegram_message(\"Asset created %s\" % data[\"asset_id\"])\n\u003C/code>\u003C/pre>\u003Cp>To test our event listener:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">TELEGRAM_BOT_TOKEN=&lt;TELEGRAM_BOT_TOKEN&gt; TELEGRAM_CHAT_ID=&lt;CHAT_ID&gt; python server.py\n\u003C/code>\u003C/pre>\u003Chr>\u003Ch2 id=\"4-receiving-messages-with-a-custom-kitsu-api-endpoint\">4. Receiving Messages with a Custom Kitsu API Endpoint\u003C/h2>\u003Cp>Notifications are useful, but bidirectional communication is where the integration becomes truly useful.\u003C/p>\u003Cp>To do so, we need to extend the Kitsu backend with a custom plugin that registers a new route like \u003Ccode>/plugins/telegram/webhook\u003C/code>. Please refer to our official guide on Developing Kitsu Plugins for in-depth steps.\u003C/p>\u003Cp>The manifesto will look like this:\u003C/p>\u003Cpre>\u003Ccode class=\"language-toml\">id = \"telegram\"\nname = \"Telegram Bot\"\ndescription = \"Telegram Bot\"\nversion = \"0.1.0\"\nmaintainer = \"Frank Rousseau &lt;frank@cg-wire.com&gt;\"\nwebsite = \"kitsu.cloud\"\nlicense = \"AGPL-3.0-only\"\nmaintainer_name = \"Frank Rousseau\"\nmaintainer_email = \"frank@cg-wire.com\"\nfrontend_project_enabled = true\nfrontend_studio_enabled = true\nicon = \"telegram\"\n\u003C/code>\u003C/pre>\u003Cp>And our custom route will parse incoming commands and map them to explicit backend actions:\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">from flask_restful import Resource\n\nclass WebhookResource(Resource):\n    def post(self):\n        args = self.get_args([\n            (\"message\", {}, True),\n            (\"chat\", {}, True),\n        ])\n        \n        message = args['message']\n        chat_id = args['chat'].get(\"id\")\n        text = message.get(\"text\", \"\")\n    \n        if text == \"/hello\":    \n            send_telegram_message(\"it works\")\n    \n        return jsonify({\"status\": \"ok\"})\n\u003C/code>\u003C/pre>\u003Cp>For the sake of simplicity we define a single command \u003Ccode>/hello\u003C/code>, but you can create many more and use Kitsu services to query production data.\u003C/p>\u003Cp>Deterministic commands are easier to test, log, and secure. You can go a step further and call a LLM to map a natural language request into a command.\u003C/p>\u003Cp>We just need to register the route in the main entrypoint \u003Ccode>__init__.py\u003C/code>:\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">from . import resources\n\n\nroutes = [(f\"/telegram/webhook\", resources.WebhookResource)]\n\u003C/code>\u003C/pre>\u003Cp>After packaging and installing your plugin on your Kitsu server instance, it's time to tell your Telegram bot how to reach it.\u003C/p>\u003Cp>If you use a local development environment, you can expose the server via tunnel. With ngrok for example, if your server runs on port 5000:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">ngrok http 5000\n\u003C/code>\u003C/pre>\u003Cp>You then need to configure your Telegram bot webhook to point to that URL:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">curl -X POST \"https://api.telegram.org/bot&lt;YOUR_BOT_TOKEN&gt;/setWebhook\" \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"url\": \"https://&lt;random&gt;.ngrok-free.app/plugin/telegram/webhook\"}'\n\u003C/code>\u003C/pre>\u003Cp>Now send \u003Ccode>/hello\u003C/code> to your bot in your Telegram chat and see the result:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-12.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"525\" height=\"560\">\u003C/figure>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>A custom messaging integration with Kitsu always follows a similar pattern: create a bot on a messaging platform, subscribe to Kitsu events, send structured notifications, and expose backend routes to handle incoming messages.\u003C/p>\u003Cp>But that's not all: consider extending your Kitsu plugin with views!\u003C/p>\u003Cp>For example, to display bot activity or recent interactions directly in the dashboard. Supervisors working inside Kitsu will be able to see which alerts were sent and which commands were triggered. The possibilities are limitless!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":718,"comment_id":719,"feature_image":720,"featured":23,"visibility":24,"created_at":721,"updated_at":722,"custom_excerpt":723,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":724,"primary_tag":725,"url":726,"excerpt":723,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":727},"16ecaf7a-bc5a-4d86-b08b-bf62ac7701e4","69ae62c591be760001bf7d81","https://images.unsplash.com/photo-1577563908411-5077b6dc7624?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fG1lc3NhZ2V8ZW58MHx8fHwxNzczMDM5MzU5fDA&ixlib=rb-4.1.0&q=80&w=2000","2026-03-09T07:03:49.000+01:00","2026-03-09T08:00:23.000+01:00","Learn how to integrate Kitsu with Telegram by building a bot that listens to production events and sends notifications. This guide explains how to connect Kitsu events, trigger messages, and create simple chat commands for production workflows.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/kitsu-telegram-bot-integration/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@lunarts?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Volodymyr Hryshchenko\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/kitsu-telegram-bot-integration",{"title":713},"kitsu-telegram-bot-integration","posts/kitsu-telegram-bot-integration",[733],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"CSt4jGbywZgG5gwq1J_TVNugmU5Ed34skMslwCBWcmM",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":738,"title":739,"authors":740,"body":12,"description":12,"extension":17,"html":742,"meta":743,"navigation":36,"path":754,"published_at":748,"seo":755,"slug":756,"stem":757,"tags":758,"__hash__":760,"uuid":744,"comment_id":745,"feature_image":746,"featured":23,"visibility":24,"created_at":747,"updated_at":748,"custom_excerpt":749,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":761,"primary_tag":762,"url":752,"excerpt":749,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":753},"ghost/posts:retopology-animation-blender-guide.json","Why Retopology Matters for Animation Pipelines",[741],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🧩\u003C/div>\u003Cdiv class=\"kg-callout-text\">&nbsp;Retopology turns messy 3D meshes into animation-ready assets.\u003C/div>\u003C/div>\u003Cp>AI tools can now generate 3D models in minutes, but they usually produce messy topology, meaning the way polygons are arranged across the surface is uneven and poorly structured. It might look fine on the surface, but it'll break the moment you start trying to animate it.\u003C/p>\u003Cp>If you're doing any kind of animation or rendering, assume \u003Cstrong>you will need retopology\u003C/strong>.\u003C/p>\u003Cp>If you don't know where to start, we've got you covered. In this article, we'll go through the process step-by-step and explain different tools you can use to make it easier.\u003C/p>\u003Chr>\u003Ch2 id=\"whats-retopology\">What's Retopology\u003C/h2>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Retopology is the process of rebuilding the surface topology of a 3D model to create a cleaner arrangement of polygons over an existing sculpt\u003C/strong>\u003C/b> so it deforms correctly in animation.\u003C/div>\u003C/div>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#whats-retopology\">\u003C/a>\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-5.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"560\" height=\"220\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Source: Blender Manual\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>For example, we don't usually animate the dense sculpt that comes out of ZBrush directly. Instead, we build a lighter, structured mesh on top of it.\u003C/p>\u003Cp>A mesh is a 3D object made of vertices (points), edges (lines between points), and faces (surfaces).\u003C/p>\u003Cp>Before we even think about rigging, we inspect the mesh in wireframe mode and identify dense clusters, stretched polygons, and chaotic edge flow (the direction edges follow across the surface).\u003C/p>\u003Cp>For a character, for example, we could rebuild the shoulder using evenly spaced quads (four-sided polygons) instead of triangles so that the arm could rotate without pinching. This is retopology.\u003C/p>\u003Chr>\u003Ch2 id=\"why-retopology-is-key\">Why Retopology Is Key\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#why-retopology-is-key\">\u003C/a>\u003C/p>\u003Cp>Retopology rebuilds a model's surface with clean geometry, and you need it if you want \u003Cstrong>assets that are maintainable and reusable\u003C/strong> across productions. Animators don't ship dense sculpt topology downstream. Instead, they rebuild it with clean edge loops so that the next animator or rigger can understand and modify it quickly.\u003C/p>\u003Cp>\u003Cstrong>Good retopology also makes animation easier because deformation becomes predictable.\u003C/strong> Deformation is how a mesh changes shape when a joint rotates, and support it with evenly spaced quads around elbows, knees, and mouths. If you place five to seven radial edge loops around a joint, you give the skin enough geometry to bend without collapsing.\u003C/p>\u003Cp>Lastly, \u003Cstrong>controlling polygon density reduces rendering cost.\u003C/strong> A polygon is a single face of geometry, and more polygons means more data to process, so we usually concentrate on details where silhouettes change and keep flat areas lightweight to cut costs.\u003C/p>\u003Cp>\u003Cstrong>Retopology always comes in handy at some point\u003C/strong>, whether it's to fix a 3D model or create different levels of detail (LOD), so roll up your sleeves and let's dive in.\u003C/p>\u003Chr>\u003Ch2 id=\"1-back-up-your-3d-model\">1. Back Up Your 3D Model\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#1-back-up-your-3d-model\">\u003C/a>\u003C/p>\u003Cp>First, \u003Cstrong>it's important you back up your model before you touch retopology\u003C/strong>, every single time.\u003C/p>\u003Cp>Automated retopology tools rebuild topology from scratch, which means they overwrite or delete the original mesh data. It happens artists run an auto-retopo pass at the end of a long day, only to realize the new edge flow breaks deformation around the shoulders and the original sculpt is gone.\u003C/p>\u003Cp>Don't rely on undo. Save a clean duplicate of the file and archive the current mesh in your scene before running anything destructive.\u003C/p>\u003Cp>In production, also create a new version in Kitsu to keep changes traceable and recoverable. That way, if the new topology fails in rigging tests, you can roll back in minutes instead of asking IT for a file restore.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-6.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"809\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-6.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-6.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-6.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Treat backups as part of the retopology process itself! A two-minute version bump and duplicate save can protect days of sculpting and keep the pipeline moving when supervisors ask to compare \"before\" and \"after\" meshes.\u003C/p>\u003Chr>\u003Ch2 id=\"2-general-process\">2. General Process\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#2-general-process\">\u003C/a>\u003C/p>\u003Cp>The general workflow is simple: clean the sculpt, voxel remesh for stability, quad remesh for structure, then manually refine deformation areas like shoulders and hips.\u003C/p>\u003Cp>Always test with quick skin weights and extreme poses early.\u003C/p>\u003Chr>\u003Ch2 id=\"3-automated-retopology-with-remeshing\">3. Automated Retopology With Remeshing\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#3-automated-retopology-with-remeshing\">\u003C/a>\u003C/p>\u003Cp>If a creature comes in with 8 million polygons and chaotic triangles, \u003Cstrong>we don't start hand-retopo immediately\u003C/strong>. Instead, we run an automated remesh pass to establish structure first.\u003C/p>\u003Cp>To do so, Blender proposes two remeshing algorithms: Voxel and quad.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-7.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1280\" height=\"720\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-7.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-7.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-7.png 1280w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Source: Sofia Pahaoja on Medium\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>\u003Cstrong>Voxel remeshing\u003C/strong> (VDB Remesh) works by converting the mesh into a 3D grid of tiny cubes (voxels), rebuilding the surface based on volume rather than original edge flow.\u003C/p>\u003Cp>The produced evenly distributed geometry is why it's great for fixing holes, non-manifold geometry (a structure that cannot be unfolded into a 2D plane with consistent surface normals), and intersecting parts. You use voxel when you need a fresh base mesh and don't care much about preserving existing topology, so the result can be messy.\u003C/p>\u003Cp>On the other hand, you can use \u003Cstrong>quad remeshing\u003C/strong> when you want animation-friendly edge loops. Quad remeshing analyzes surface curvature and generates quads which deform predictably under skinning. QuadriFlow follows the shape of your model.\u003C/p>\u003Cp>Naturally, you can combine the two. On a facial rig for example, you could ran quad remesh after voxel cleanup, then adjust guides to force loops around the eyes and mouth.\u003C/p>\u003Cp>It's important to keep in mind that \u003Cstrong>automated retopology is most often than not a starting point, not a final deliverable.\u003C/strong>\u003C/p>\u003Chr>\u003Ch2 id=\"4-manual-retopology-with-poly-build\">4. Manual Retopology With Poly Build\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#4-manual-retopology-with-poly-build\">\u003C/a>\u003C/p>\u003Cp>\u003Cstrong>Manual retopology with the Poly Build tool\u003C/strong> is what you reach for when deformation quality is key, especially on hero characters that will carry close-ups.\u003C/p>\u003Cp>In Blender, the Poly Build tool lets you draw new polygons directly on the surface of a dense mesh, snapping every vertex to the sculpt.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-8.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1078\" height=\"516\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-8.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-8.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-8.png 1078w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Source: Blender Nation\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>To keep the example of the facial rig, an artist could rebuild the mouth area by placing quads (four-sided polygons) around the lips first to make sure edge loops follow the smile lines. It would give the rigger predictable loops for blendshapes and avoid collapsing geometry during extreme phonemes.\u003C/p>\u003Cp>\u003Cstrong>You can also use other modifiers like the Subdivision Surface Modifier or the Multiresolution Modifier\u003C/strong> to perform specific jobs.\u003C/p>\u003Cp>In this step, experience matters a lot. Most animators learn by studying the topology of high-quality models and re-applying the same principles to their own models. It's tacit knowledge, so practice is key!\u003C/p>\u003Chr>\u003Ch2 id=\"5-measuring-retopology-performance\">5. Measuring Retopology Performance\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#5-measuring-retopology-performance\">\u003C/a>\u003C/p>\u003Cp>Retopology is all about aesthetics, but \u003Cstrong>it's good practice to measure retopology performance with numbers\u003C/strong> by counting meshes in your scene. This way you can assess the amount of work a retopology requires and track your progress.\u003C/p>\u003Cp>In Blender, open the Outliner and check how many mesh objects are present, then enable Statistics in the viewport overlays to see vertex and face counts in real time.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-9.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"317\" height=\"159\">\u003C/figure>\u003Cp>A character model can look light, but the stats could show 120k faces across separate clothing meshes and simply merging static accessories and removing hidden interior faces could drop the count substantially before starting more complex retopology operations.\u003C/p>\u003Cp>It's also important to consider separate mesh counts depending on LOD strategies.\u003C/p>\u003Cp>LOD, or Level of Detail, means creating multiple versions of the same asset at different resolutions so the engine swaps them based on camera distance.\u003C/p>\u003Cp>Reducing mesh count is also about optimizing LOD is about performance at runtime, so we can retopologize key deformation areas like shoulders and hips so the lower LOD still bends correctly during animation without spending too much time on details. Context is important.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/retopology/index.md?ref=blog.cg-wire.com#conclusion\">\u003C/a>\u003C/p>\u003Cp>AI-generated 3D models have made it incredibly fast to go from idea to mesh. But speed without structure comes at a cost. Clean topology is what transforms a raw, messy asset into something production-ready.\u003C/p>\u003Cp>In this guide, we covered what retopology is, why it matters for maintainability, animation, and rendering performance, and how to approach it step by step inside Blender.\u003C/p>\u003Cp>You've seen why backing up your original mesh is critical. From there, we explored automated retopology using remeshing tools like Voxel and Quad methods for fast results, as well as manual retopology with modifiers when precision matters most. Finally, we looked at how to measure performance by analyzing mesh counts and understanding the trade-offs between LODs and topology.\u003C/p>\u003Cp>Retopology isn't just a cleanup step. And while we demonstrated the process in Blender, the same principles apply across all major DCC tools: whether you're working in Blender, Maya, Houdini, or any other 3D software, the fundamentals remain the same.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":744,"comment_id":745,"feature_image":746,"featured":23,"visibility":24,"created_at":747,"updated_at":748,"custom_excerpt":749,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":750,"primary_tag":751,"url":752,"excerpt":749,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":753},"05e17976-e873-4ea1-b896-fef84f99fcd7","69ae62ca91be760001bf7d8d","https://images.unsplash.com/photo-1590285359328-dce54ee24c1c?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQwfHxhbmltYXRpb24lMjBtb2RlbHxlbnwwfHx8fDE3NzMwMzgxMDN8MA&ixlib=rb-4.1.0&q=80&w=2000","2026-03-09T07:03:54.000+01:00","2026-03-09T07:41:49.000+01:00","Learn what retopology is and why it’s essential for animation. This guide walks through the retopology workflow in Blender, from automated remeshing to manual topology cleanup for production-ready 3D models.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/retopology-animation-blender-guide/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@jhc?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">James Coleman\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/retopology-animation-blender-guide",{"title":739},"retopology-animation-blender-guide","posts/retopology-animation-blender-guide",[759],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"1nVpTXkQokkNvujUo-ojOWyHqGGI1Qw-Q6oHLAzOgBg",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":764,"title":765,"authors":766,"body":12,"description":12,"extension":17,"html":768,"meta":769,"navigation":36,"path":780,"published_at":774,"seo":781,"slug":782,"stem":783,"tags":784,"__hash__":786,"uuid":770,"comment_id":771,"feature_image":772,"featured":23,"visibility":24,"created_at":773,"updated_at":774,"custom_excerpt":775,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":787,"primary_tag":788,"url":778,"excerpt":775,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":779},"ghost/posts:kitsu-webhooks-pipeline-automation.json","Using Kitsu Webhooks to Trigger Pipeline Actions",[767],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">⚡\u003C/div>\u003Cdiv class=\"kg-callout-text\">Turn production events into instant pipeline actions with Kitsu webhooks.\u003C/div>\u003C/div>\u003Cp>As a studio grows, the cracks in a manual pipeline get louder: an artist publishes an asset, a supervisor approves a shot, a task flips to \u003Cem>Done\u003C/em>, but somewhere down the line, another tool is still waiting to be told. Those delays add up.\u003C/p>\u003Cp>Kitsu's Event API changes the game by broadcasting what's happening in production the moment it happens. No polling, no guesswork. Just real-time signals you can act upon.\u003C/p>\u003Cp>With webhooks, you can trigger automated actions the instant production data changes, like \u003Ca href=\"https://blog.cg-wire.com/blender-programmatic-rendering/\">launching renders\u003C/a>, syncing tracking tools, notifying teams, or updating downstream systems without human hand-offs.\u003C/p>\u003Cp>In this article, we'll break down how to set them up and put them to work, with a practical, studio-tested example you can drop into a real pipeline.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/kitsu-webhooks%20?ref=blog.cg-wire.com\">https://github.com/cgwire/blog-tutorials/tree/main/kitsu-webhooks%20\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"why-webhooks\">Why Webhooks\u003C/h2>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-9c7a79f2-b129-45df-bea5-52e3d0e07988.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"900\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/data-src-image-9c7a79f2-b129-45df-bea5-52e3d0e07988.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/data-src-image-9c7a79f2-b129-45df-bea5-52e3d0e07988.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-9c7a79f2-b129-45df-bea5-52e3d0e07988.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Polling the API every few minutes is like asking production for updates by shouting across the floor: it's slow, noisy, and easy to miss at the exact moment something matters.\u003C/p>\u003Cp>Webhooks flip that model: instead of checking whether Kitsu changed, Kitsu tells your pipeline immediately when it does.\u003C/p>\u003Cp>This brings several production benefits in practice: a modeler creates a new prop in Kitsu, and within seconds, your asset build system spins up the correct directory structure on the server, registers the asset in your DCC tools, and makes it visible to layout. No artist has to copy a name or click a button.\u003C/p>\u003Cp>Later in the schedule, a lighting task moves to Done. That single status change can trigger your render management system to submit the shot automatically, using the latest approved files and the correct render settings for the show. By the time anyone notices the task is finished, frames are already rendering.\u003C/p>\u003Cp>When an artist publishes a file, the webhook can push that version straight into your review stack. The media is transcoded, uploaded, and attached to the correct shot before the supervisor opens their inbox. Reviews happen sooner, notes come back faster, and work keeps flowing instead of waiting for someone to remember the next step.\u003C/p>\u003Cp>This is what webhooks buy you: production data turning directly into action. Fewer hand-offs, tighter feedback loops, and a pipeline that reacts at the same speed your artists work.\u003C/p>\u003Chr>\u003Ch2 id=\"available-events\">Available events\u003C/h2>\u003Cp>Kitsu emits events for all production actions covered by \u003Ca href=\"https://gazu.cg-wire.com/data?ref=blog.cg-wire.com\">available data models\u003C/a>:\u003C/p>\u003Cul>\u003Cli>Asset creation and updates\u003C/li>\u003Cli>Shot creation and updates\u003C/li>\u003Cli>Task status changes\u003C/li>\u003Cli>Preview file creation and publication\u003C/li>\u003Cli>People management\u003C/li>\u003Cli>Organization changes\u003C/li>\u003Cli>Shot and sequence updates\u003C/li>\u003C/ul>\u003Cp>Each event carries structured data (IDs, timestamps, user information) so you can precisely identify what changed and react accordingly: a real-time production log you can subscribe to!\u003C/p>\u003Chr>\u003Ch2 id=\"1-create-an-event-listener\">1. Create an event listener\u003C/h2>\u003Cp>The first step is to register an event listener using the Kitsu Python client (\u003Ccode>gazu\u003C/code>). This listener acts like a webhook endpoint: it waits for events and calls your callback function when they occur.\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">import gazu\n\ngazu.set_host(\"http://localhost/api\")\ngazu.set_event_host(\"http://localhost/api\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\ndef my_callback(data):\n    print(\"Asset created %s\" % data[\"asset_id\"])\n\nevent_client = gazu.events.init()\ngazu.events.add_listener(event_client, \"asset:new\", my_callback)\ngazu.events.run_client(event_client)\n\u003C/code>\u003C/pre>\u003Cp>First, we import Gazu, the official Python client for Kitsu, and configure it to talk to a Kitsu server running locally. Both \u003Ccode>set_host\u003C/code> and \u003Ccode>set_event_host\u003C/code> point to the same API URL: the first is used for standard REST calls, while the second is specifically for the event (websocket) endpoint. In production, it's recommended to set up the two in different threads because listening to events is blocking. But for the sake of simplicity, we do it all in one endpoint in this tutorial.\u003C/p>\u003Cp>Next, we authenticate as a user. Calling \u003Ccode>gazu.log_in\u003C/code> logs in with the provided credentials and establishes a session so the client is authorized to receive events from Kitsu.\u003C/p>\u003Cp>The \u003Ccode>my_callback\u003C/code> function defines how your pipeline reacts when an event is received. It takes the event payload as input and, in this case, simply prints the ID of the newly created asset. In a mid-size animation studio, this callback could, for example, trigger a script that creates a standardized directory structure on the file server whenever a new asset is added in Kitsu. Artists no longer need to set this up manually, and naming conventions stay consistent.\u003C/p>\u003Cp>After that, the script initializes an event client with \u003Ccode>gazu.events.init()\u003C/code>. This client maintains a persistent connection to Kitsu's event system.\u003C/p>\u003Cp>The call to \u003Ccode>gazu.events.add_listener\u003C/code> registers the callback function for a specific event type: \u003Ccode>\"asset:new\"\u003C/code>. This tells Gazu, \"Whenever Kitsu emits an event indicating that a new asset was created, call \u003Ccode>my_callback\u003C/code> with the event data.\"\u003C/p>\u003Cp>Finally, \u003Ccode>gazu.events.run_client(event_client)\u003C/code> starts the event loop. From this point on, the script blocks and listens continuously via a WebSocket connection. As soon as someone creates an asset in Kitsu, Kitsu emits an \u003Ccode>asset:new\u003C/code> event, Gazu receives it, and \u003Ccode>my_callback\u003C/code> is executed immediately.\u003C/p>\u003Chr>\u003Ch2 id=\"2-send-test-events\">2. Send test events\u003C/h2>\u003Cp>To validate your setup, you need to generate real events. The easiest way is to perform standard API actions that you already use in production. For example, by creating an asset programmatically:\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">import gazu\n\ngazu.set_host(\"http://localhost/api\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\nprojects = gazu.project.all_projects()\nproject = projects[0]\n\nasset_types = gazu.asset.all_asset_types()\nasset_type = asset_types[0]\n\nasset = gazu.asset.new_asset(\n    project,\n    asset_type,\n    \"My new asset\",\n    \"My asset description\"\n)\n\u003C/code>\u003C/pre>\u003Cp>After authentication, we retrieve the list of all projects visible to the logged-in user by calling \u003Ccode>gazu.project.all_projects()\u003C/code>. From that list, we select the first project. In a real production tool, you'd usually look up a specific project by name or ID, but this keeps the example simple.\u003C/p>\u003Cp>The same pattern is used for asset types. The script queries all available asset types, then picks the first one. Asset types define what kind of asset is being created (character, prop, environment, and so on), and Kitsu requires one to be specified when creating a new asset.\u003C/p>\u003Cp>With a project and an asset type in hand, we create a new asset by calling \u003Ccode>gazu.asset.new_asset\u003C/code>. The function takes the target project, the asset type, a name, and a description. When this call succeeds, Kitsu immediately creates the asset in its database and returns the newly created asset object.\u003C/p>\u003Cp>At this point, the asset exists in Kitsu exactly as if it had been created through the web interface. This action also emits an \u003Ccode>asset:new\u003C/code> event, allowing the rest of your pipeline to react automatically.\u003C/p>\u003Cp>Before rolling this out studio-wide, a pipeline TD can create assets in a staging project to confirm that the event triggers downstream automation without touching real production data.\u003C/p>\u003Chr>\u003Ch2 id=\"3-react-to-events-with-callbacks\">3. React to events with callbacks\u003C/h2>\u003Cp>Callbacks are the point where Kitsu events turn into concrete pipeline actions. When a callback is executed, it receives a payload describing exactly what changed: an asset was created, a task moved to a new status, or a file was published. That payload becomes your entry point for driving automation.\u003C/p>\u003Cp>A common first step inside a callback is to use the IDs in the event data to pull full context from Kitsu. For example, when you receive a task update event, you can fetch the complete task, the linked shot, and the associated project to understand where in the show this change happened and what rules should apply.\u003C/p>\u003Cp>From there, callbacks typically perform side effects that would otherwise require manual intervention. An asset creation event could, for example, result in a standardized folder tree being created on disk. A file publish event can push media into your review system, attach metadata, and make it visible to supervisors immediately.\u003C/p>\u003Cp>The key idea is that callbacks let production state drive behavior. Instead of people reacting to updates, your pipeline does, consistently and instantly, using the same rules every time.\u003C/p>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/kitsu-webhooks%20?ref=blog.cg-wire.com\" rel=\"noreferrer\">Fork our example Github repository\u003C/a> to try it out for yourself.\u003C/p>\u003Chr>\u003Ch2 id=\"4-search-events\">4. Search events\u003C/h2>\u003Cp>Live events are only half the story. Kitsu also keeps a record of past events, which gives you a reliable paper trail of what actually happened in production. When something goes wrong or when you need to prove that something worked, this event history is an essential debugging tool.\u003C/p>\u003Cp>Through the API, you can query recent events and filter them by time range or event type. Pulling the last hundred events is often enough to get immediate context after a failure. Narrowing the query to a specific date range lets you inspect what happened during a particular shift or overnight run. Filtering to file-related events is especially useful when tracking publishes and media ingestion issues.\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">events = gazu.client.get(\"data/events/last?page_size=100\")\nevents = gazu.client.get(\"data/events/last?page_size=100&amp;before=2019-02-01\")\nevents = gazu.client.get(\"data/events/last?page_size=100&amp;before=2019-02-01&amp;after=2019-01-01\")\nevents = gazu.client.get(\"data/events/last?page_size=100&amp;only_files=true\")\n\u003C/code>\u003C/pre>\u003Cp>In practice, this is how you reconstruct a broken automation. Imagine a publishing script fails sometime during the night, and the morning team finds missing media in the review system. Instead of asking artists when they published or digging through logs across multiple machines, you can query Kitsu for all file events from the previous day. That gives you an exact sequence of publishes, timestamps, users, and linked entities.\u003C/p>\u003Cp>You can also keep track of specific events in your pipeline for productivity reports. For example, you could compile the activity log of your animation team to know who did what.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>Kitsu API events give you a clean, reliable way to build reactive pipelines. By listening to production changes instead of polling for them, you reduce latency, eliminate manual steps, and make your studio more resilient as it scales.\u003C/p>\u003Cp>Of course, webhooks only go as far as your knowledge of Kitsu scripting, so make sure to have a look at more technical tutorials from our blog to get a better idea of what you can build!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":770,"comment_id":771,"feature_image":772,"featured":23,"visibility":24,"created_at":773,"updated_at":774,"custom_excerpt":775,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":776,"primary_tag":777,"url":778,"excerpt":775,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":779},"0ba0384a-27a2-4189-ac13-8aca0933041c","6980b67a4304f600017051ef","https://images.unsplash.com/photo-1644088379091-d574269d422f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGNvbm5lY3Rpb25zfGVufDB8fHx8MTc3MDA0NTM2OXww&ixlib=rb-4.1.0&q=80&w=2000","2026-02-02T15:36:42.000+01:00","2026-02-23T10:00:39.000+01:00","Learn how to use the Kitsu Event API and webhooks to build reactive animation pipelines. Trigger automation instantly on asset creation, task updates, and publishes without polling or manual hand-offs.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/kitsu-webhooks-pipeline-automation/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@choys_?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Conny Schneider\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/kitsu-webhooks-pipeline-automation",{"title":765},"kitsu-webhooks-pipeline-automation","posts/kitsu-webhooks-pipeline-automation",[785],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"_WyfIj_ToGV8wcQxWVnE_qvsU0aULS6YDQRThnH1vO0",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},{"id":790,"title":791,"authors":792,"body":12,"description":12,"extension":17,"html":794,"meta":795,"navigation":36,"path":807,"published_at":808,"seo":809,"slug":810,"stem":811,"tags":812,"__hash__":814,"uuid":796,"comment_id":797,"feature_image":798,"featured":23,"visibility":24,"created_at":799,"updated_at":800,"custom_excerpt":801,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":815,"primary_tag":816,"url":804,"excerpt":801,"reading_time":805,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":806},"ghost/posts:flamenco-without-nas-kitsu.json","NAS-Free Flamenco Rendering with Kitsu Integration (2026)",[793],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🧠\u003C/div>\u003Cdiv class=\"kg-callout-text\">Run Flamenco without shared storage by letting Kitsu drive render context and files.\u003C/div>\u003C/div>\u003Cp>You want to use Flamenco, but you don't want to buy a NAS.\u003C/p>\u003Cp>If you're a solo artist or a micro animation studio, that's a completely rational decision: shared storage can be expensive, adds maintenance overhead, and solves problems you may not actually have until you try to run a render farm.\u003C/p>\u003Cp>\u003Ca href=\"https://blog.cg-wire.com/self-hosted-blender-render-farm\">Flamenco assumes a traditional studio setup\u003C/a>: shared files, shared paths, instant access. Without a NAS, that assumption is hard to circumvent. Flamenco has no concept of production context, so it doesn't know which shot you want rendered, which version is approved, or where the job files live. And without that knowledge, it can't safely operate in a NAS-less environment.\u003C/p>\u003Cp>That's where Kitsu comes in.\u003C/p>\u003Cp>Kitsu already knows what Flamenco doesn't: tasks, shots, versions, approvals. By treating Kitsu as asynchronous network storage, you can move data to a Flamenco manager when it's needed, render, and avoid hard shared storage entirely.\u003C/p>\u003Cp>Flamenco doesn't support this workflow out of the box. To make it work, you need to build a custom Flamenco job type that pulls context and files from Kitsu, stages them locally, and controls when and how renders run. This article shows you how to build exactly that.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/flamenco-kitsu-render-farm?ref=blog.cg-wire.com\">https://github.com/cgwire/blog-tutorials/tree/main/flamenco-kitsu-render-farm\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"high-level-architecture\">High-level architecture\u003C/h2>\u003Cp>Our setup is built around a simple idea: Flamenco does the rendering, Kitsu provides the truth.\u003C/p>\u003Cpre>\u003Ccode>Kitsu\n  ↑↓ (REST API)\nCustom Flamenco Job Type\n  ├── Pre-task Python (fetch task data &amp; files)\n  ├── Blender render tasks (Flamenco-managed)\n  └── Post-task Python (upload renders back to Kitsu)\nFlamenco Manager\n  ↓\nFlamenco Worker(s)\n\u003C/code>\u003C/pre>\u003Cp>Flamenco runs exactly as intended, with a Manager scheduling work and Workers executing Blender tasks. What changes is how jobs are defined. Instead of pointing Flamenco at a shared folder and hoping every machine sees the same files, we introduce a custom Flamenco job type that understands production data and knows how to talk to Kitsu.\u003C/p>\u003Cp>Kitsu sits outside the farm and exposes everything through its REST API: shots, tasks, versions, and file locations. When a render job is started—either manually or through automation—the custom job type queries Kitsu to figure out exactly what should be rendered. For example, it might ask: \"Give me the latest approved lighting version for shot 020.\" Kitsu answers, and that answer becomes the render job.\u003C/p>\u003Cp>On the Flamenco side, the Manager doesn't poll Kitsu or track production state. It simply runs the job definition it's given. The custom job type uses a small Python pre-task to fetch metadata and files from Kitsu, stage them locally in a job folder, and then hand them off to standard Blender render tasks that Flamenco already knows how to manage efficiently.\u003C/p>\u003Cp>When rendering is done, a post-task Python step pushes the results back to Kitsu to upload rendered frames, create a new version, or update task status. At no point do workers need shared storage or permanent access to the same filesystem. Each worker pulls what it needs, renders locally, and pushes results back asynchronously.\u003C/p>\u003Chr>\u003Ch2 id=\"1-creating-a-new-job-type\">1. Creating a new job type\u003C/h2>\u003Cp>A Flamenco job type defines how a job turns into actual work. It's the translation layer between \"I want to render this\" and the concrete tasks that Flamenco schedules across the farm. Conceptually, a job type declares what information it needs and how to compile that information into tasks.\u003C/p>\u003Cp>At its simplest, a job type describes a label and a set of settings, then provides a function that receives those settings and builds the job. In code, it looks something like this:\u003C/p>\u003Cpre>\u003Ccode class=\"language-js\">const JOB_TYPE = {\n  label: \"Kitsu Render\",\n  settings: [\n    // { key: \"message\", type: \"string\", required: true },\n    // { key: \"sleep_duration_seconds\", type: \"int32\", default: 1 },\n  ],\n};\n\nfunction compileJob(job) {\n  const settings = job.settings;\n}\n\u003C/code>\u003C/pre>\u003Cp>This code defines the skeleton of a custom Flamenco job type. The \u003Ccode>JOB_TYPE\u003C/code> object declares how the job appears in Flamenco: its human-readable label and the settings it expects when a job is created.\u003C/p>\u003Cp>Those settings act as typed inputs, with validation handled by Flamenco: in this example, a required string and an optional integer with a default value.\u003C/p>\u003Cp>The \u003Ccode>compileJob\u003C/code> function is where the job is turned into executable tasks; it receives the submitted job, reads the resolved settings, and would normally use them to generate render, pre-task, and post-task steps. As written, the function doesn't do any work yet, but it establishes the entry point where production logic will live.\u003C/p>\u003Cp>In a real production setup, instead of a generic message, you pass in a Kitsu task ID, a shot name, the desired output location, or even the Blender version that should be used.\u003C/p>\u003Cp>Where this logic lives matters. Custom Flamenco job types run on the \u003Cstrong>Flamenco Manager\u003C/strong>, not on the workers. On disk, they sit alongside the manager program, for example:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">$ flamenco\n└── flamenco-manager\n└── scripts/\n    └── kitsu-render.js\n\u003C/code>\u003C/pre>\u003Cp>In practice, studios treat these job type scripts as part of their pipeline codebase. They live in version control, evolve over time, and get deployed together with Flamenco updates. That way, you can change how jobs are built and how Kitsu is queried without redeploying or reconfiguring every worker machine on the farm.\u003C/p>\u003Cp>For worker scripts called by custom job types as commands, we put them next to our flamenco-worker program:\u003C/p>\u003Cpre>\u003Ccode class=\"language-bash\">$ flamenco\n└── flamenco-worker\n└── kitsu-render.py\n\u003C/code>\u003C/pre>\u003Chr>\u003Ch2 id=\"2-adding-tasks\">2. Adding tasks\u003C/h2>\u003Cp>Inside \u003Ccode>compileJob\u003C/code>, you explicitly define the tasks that make up the job. This is where a high-level \"render this shot\" request turns into concrete, schedulable work that Flamenco can hand off to workers.\u003C/p>\u003Cp>The example below shows the simplest possible task. An \u003Ccode>echo\u003C/code> task is created using Flamenco's task authoring API, given a category, and then assigned a single command. That command passes the resolved job setting into the task, which will simply print the message when it runs. Finally, the task is added to the job so the Manager can schedule it.\u003C/p>\u003Cpre>\u003Ccode class=\"language-js\">const echoTask = author.Task(\"echo\", \"misc\");\nechoTask.addCommand(\n  author.Command(\"echo\", {\n    message: settings.message,\n  }),\n);\njob.addTask(echoTask);\n\u003C/code>\u003C/pre>\u003Cp>While this task doesn't do anything useful by itself, the pattern is the important part. The same mechanism is used to run Python scripts, launch Blender in background mode for rendering, or perform validation checks before a task is marked complete. Each task is designed to be atomic and restartable, which means if a worker crashes or a render fails at 3 a.m., Flamenco can retry just that task without derailing the entire job. That reliability is what makes this approach scale when you're running hundreds of shots overnight.\u003C/p>\u003Cp>Now, let's get into the meaty part of the tutorial and code a task to download assets from Kitsu, render with Blender, and re-upload the result to Kitsu.\u003C/p>\u003Chr>\u003Ch2 id=\"3-subcommand-1-downloading-assets-from-kitsu\">3. Subcommand 1: Downloading assets from Kitsu\u003C/h2>\u003Cp>The first real task in our Kitsu-driven job is to pull the exact data we need from Kitsu and set up a clean local workspace on the worker. Before Blender ever starts, the worker needs to know which task it's rendering and where the job files live.\u003C/p>\u003Cp>Instead of writing the logic in Javascript, we use the much simpler gazu Python SDK to create a \u003Ccode>kitsu-render\u003C/code> script, then call it in Javascript. If you don't have Python installed in your worker environment, consider \u003Ca href=\"https://blog.cg-wire.com/kitsu-cli-single-binary/\">creating a binary executable from the Python script\u003C/a>.\u003C/p>\u003Cpre>\u003Ccode class=\"language-js\">function compileJob(job) {\n  const settings = job.settings;\n\n  const task = author.Task(\"kitsu-render\", \"misc\");\n\n  task.addCommand(\n    author.Command(\"exec\", { exe: \"python3\", args: [\"kitsu-render.py\"] }),\n  );\n\n  job.addTask(task);\n}\n\u003C/code>\u003C/pre>\u003Cp>The Python script authenticates against the Kitsu API, looks for TODO rendering tasks, and downloads the associated preview file containing a .blend project to render.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">import os\nimport gazu\n\ngazu.set_host(\"http://localhost/api\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\nprojects = gazu.project.all_projects()\nproject = projects[0]\n\ntasks = gazu.task.all_tasks_for_project(project)\n\nrendering = gazu.task.get_task_type_by_name(\"Rendering\")\ntodo = gazu.task.get_task_status_by_name(\"todo\")\n\nrender_tasks = [\n    t\n    for t in tasks\n    if t[\"task_type_id\"] == rendering[\"id\"] and t[\"task_status_id\"] == todo[\"id\"]\n]\n\nfor task in render_tasks:\n    files = gazu.files.get_all_preview_files_for_task(task)\n    if not files:\n        continue\n\n    latest = files[-1]\n    if latest[\"extension\"] == \"blend\":\n        task_to_render = task\n        latest_blend = latest\n        break\n\nif task_to_render is None:\n    raise RuntimeError(\"No render task with a .blend preview found\")\n\ntarget_path = os.path.join(\n    \"/tmp\", latest_blend[\"original_name\"] + \".\" + latest_blend[\"extension\"]\n)\n\ngazu.files.download_preview_file(latest_blend, target_path)\n\u003C/code>\u003C/pre>\u003Cp>This step is what makes a NAS-less workflow viable. Each worker pulls only the files it needs for the specific task it's running, instead of mounting or syncing an entire production tree. If the download fails, Flamenco can retry the task automatically without human intervention.\u003C/p>\u003Chr>\u003Ch2 id=\"4-subcommand-2-blender-render\">4. Subcommand 2: Blender render\u003C/h2>\u003Cp>Once the blend file to render is staged locally on the worker, we can \u003Ca href=\"https://blog.cg-wire.com/blender-programmatic-rendering/\">render it programmatically\u003C/a> with the \u003Ccode>bpy\u003C/code> library:\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">bpy.ops.wm.open_mainfile(filepath=target_path)\n\noutput_path = os.path.join(\n    \"/tmp\", latest_blend[\"name\"] + \".mp4\"\n)\n\nbpy.context.scene.render.image_settings.file_format = \"FFMPEG\"\nbpy.context.scene.render.ffmpeg.format = \"MPEG4\"\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 = output_path\n\nbpy.ops.render.render(animation=True)\n\u003C/code>\u003C/pre>\u003Cp>A more advanced pipeline would leverage Flamenco's native 'blender-render' command to automatically split the frame range into smaller units of work and distribute them across available workers. If a machine drops out or a frame fails, only those frames are retried, so there's no need to restart the entire shot or build custom queue logic to handle parallelism.\u003C/p>\u003Cp>But to keep our example simple, we just render the whole video in one worker.\u003C/p>\u003Chr>\u003Ch2 id=\"5-subcommand-3-uploading-results-back-to-kitsu\">5. Subcommand 3: Uploading results back to Kitsu\u003C/h2>\u003Cp>The final step in the job is \u003Ca href=\"https://blog.cg-wire.com/blender-kitsu-low-res-preview/\">a post-render subcommand that pushes the render results back to Kitsu\u003C/a>. At this point, the worker has finished its frame range locally, and the farm's responsibility shifts from computation to publishing. This is where rendered output becomes visible to the rest of the production.\u003C/p>\u003Cp>The example below shows a minimal Python instruction that uploads the resulting video file to Kitsu as an attachment on the original task.\u003C/p>\u003Cpre>\u003Ccode class=\"language-python\">result = gazu.task.publish_preview(\n    task_to_render,\n    todo,\n    comment=\"rendered\",\n    preview_file_path=output_path,\n)\n\u003C/code>\u003C/pre>\u003Cp>In a real production pipeline, this step usually does more than just upload files. We can create a new version in Kitsu, update the task status to something like Done, and trigger review or notification workflows so supervisors know new output is ready. Because this logic is just Python running inside a Flamenco task, it's easy to evolve as production needs change without touching the render farm itself.\u003C/p>\u003Chr>\u003Ch2 id=\"6-triggering-the-workflow\">6. Triggering the workflow\u003C/h2>\u003Cp>Once the custom job type is in place, the workflow is triggered by submitting a job request to the Flamenco Manager. During development, this is often done manually by calling the Manager's REST API directly. It's a fast way to validate that job compilation works, settings are wired correctly, and tasks behave as expected before any automation is layered on top.\u003C/p>\u003Cp>The example below submits a job of type \u003Ccode>kitsu-render\u003C/code> to the Manager. Along with basic metadata for tracking and attribution, the request includes a priority value and an empty \u003Ccode>settings\u003C/code> object, which would normally carry production-specific inputs like a Kitsu production ID. When the job is accepted, the Manager invokes the custom job type, compiles tasks, and schedules them across available workers.\u003C/p>\u003Cpre>\u003Ccode class=\"language-sh\">curl -X 'POST' \\\n  'http://172.17.0.1:8080/api/v3/jobs' \\\n  -H 'accept: application/json' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n  \"metadata\": {\n    \"project\": \"kitsu\",\n    \"user.email\": \"basunako@gmail.com\",\n    \"user.name\": \"kitsu\"\n  },\n  \"name\": \"Kitsu Render\",\n  \"priority\": 50,\n  \"settings\": {},\n  \"submitter_platform\": \"linux\",\n  \"type\": \"kitsu-render\"\n}'\n\u003C/code>\u003C/pre>\u003Cp>We can see the manager received the job request and assigned it to a worker:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-8815284e-9d0e-49a0-bdd8-ff4ada8a8961.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"900\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/data-src-image-8815284e-9d0e-49a0-bdd8-ff4ada8a8961.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/data-src-image-8815284e-9d0e-49a0-bdd8-ff4ada8a8961.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-8815284e-9d0e-49a0-bdd8-ff4ada8a8961.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>This manual trigger is primarily a development tool. It lets you iterate on job logic, test edge cases, and rerun jobs without involving artists or production tools.\u003C/p>\u003Cp>In production, studios always automate this step. A small service (often a cron job or lightweight webhook listener) periodically queries Kitsu for tasks that are ready to render, like shots that were just approved or published. When it finds one, it submits a corresponding job to the Flamenco Manager using the same API call.\u003C/p>\u003Cp>With this in place, Flamenco becomes a production-aware render backend instead of waiting for humans to push buttons, reacting automatically to changes in Kitsu and keeping the farm in sync with the state of the production.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>What you've built in this article is a fundamentally different way to think about rendering in small studios.\u003C/p>\u003Cp>By using a custom Flamenco job type to pull context and data from Kitsu, stage work locally, render through Flamenco's native scheduler, and push results back asynchronously, you've removed the need for shared storage without sacrificing reliability or scale.\u003C/p>\u003Cp>Each piece has a clear responsibility: Kitsu defines what is true in production, Flamenco decides how work runs, and your custom job type is the glue that keeps them in sync. That separation is what makes the system resilient, debuggable, and adaptable as your pipeline grows.\u003C/p>\u003Cp>Understanding this pattern is important because it lets you build render infrastructure that matches the reality of solo artists and micro-studios.\u003C/p>\u003Cp>But don't just leave here, \u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/flamenco-kitsu-render-farm?ref=blog.cg-wire.com\">clone our example Github repository\u003C/a> for this article and start rendering today!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":796,"comment_id":797,"feature_image":798,"featured":23,"visibility":24,"created_at":799,"updated_at":800,"custom_excerpt":801,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":802,"primary_tag":803,"url":804,"excerpt":801,"reading_time":805,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":806},"e864ab4c-75a4-40e8-b787-3d0f5937eac3","6980b6744304f600017051e3","https://images.unsplash.com/photo-1666858452715-1399b952befb?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fHJlbmRlcmluZ3xlbnwwfHx8fDE3NzAwNDMxNzB8MA&ixlib=rb-4.1.0&q=80&w=2000","2026-02-02T15:36:36.000+01:00","2026-02-20T06:04:25.000+01:00","Learn how to run Blender Flamenco without a NAS by using Kitsu as asynchronous storage. This guide explains custom Flamenco job types that fetch assets from Kitsu, render locally, and upload results back automatically.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"https://blog.cg-wire.com/flamenco-without-nas-kitsu/",9,"\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@fachrizalm?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Fachrizal Maulana\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/flamenco-without-nas-kitsu","2026-02-09T10:00:32.000+01:00",{"title":791},"flamenco-without-nas-kitsu","posts/flamenco-without-nas-kitsu",[813],{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},"jc6jt91jTF5PCUsPSQcrVR_U5Arx-eKplKRNnp9hexM",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":144,"name":95,"slug":98,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":94},[818,845,871,898,925],{"id":819,"title":820,"authors":821,"body":12,"description":12,"extension":17,"html":823,"meta":824,"navigation":36,"path":836,"published_at":829,"seo":837,"slug":838,"stem":839,"tags":840,"__hash__":842,"uuid":825,"comment_id":826,"feature_image":827,"featured":23,"visibility":24,"created_at":828,"updated_at":829,"custom_excerpt":830,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":843,"primary_tag":844,"url":834,"excerpt":830,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":835},"ghost/posts:estimating-render-costs-animation.json","How Animation Studios Estimate Render Farm Capacity",[822],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">😀\u003C/div>\u003Cdiv class=\"kg-callout-text\">Rendering costs are not guesswork. With the right framework they become predictable.\u003C/div>\u003C/div>\u003Cp>Everyone has watched a render farm crawl at 4 p.m., staring at a progress bar that hasn't moved in ten minutes, wondering whether the shot will finish before the end of the day. That moment when the queue is full, artists are blocked, and supervisors are asking for an ETA is an estimation problem.\u003C/p>\u003Cp>Rendering often feels impossible to predict. One lighting tweak doubles the frame time. A setting that worked yesterday explodes memory today. Without a cost-estimation framework, you're left with saturated farms, missed deadlines, and eroded trust in the pipeline.\u003C/p>\u003Cp>The good news: render costs are not magic. They are measurable, decomposable, and predictable if you approach estimations with a framework instead of intuition.\u003C/p>\u003Cp>\u003Cstrong>This guide lays out a clear, practical estimation model you can apply immediately.\u003C/strong> It's designed for pipeline developers who need numbers they can defend in a production meeting.\u003C/p>\u003Chr>\u003Ch2 id=\"why-estimating-rendering-costs\">Why Estimating Rendering Costs\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#why-estimating-rendering-costs\">\u003C/a>\u003C/p>\u003Cp>\u003Cstrong>Accurate render cost estimation protects the schedule\u003C/strong> before it's at risk. When a sequence estimated at 2 hours per frame quietly renders at 6, farm occupancy triples and downstream departments are left hanging.\u003C/p>\u003Cp>Cost visibility also directly \u003Cstrong>influences creative decisions\u003C/strong>. When artists see that enabling high-quality volumetrics adds 35% render time, they're more likely to explore alternatives. Without that feedback, choices default to visual preference and the farm absorbs the impact later.\u003C/p>\u003Cp>Reliable estimates are \u003Cstrong>essential for infrastructure and budget control\u003C/strong>. Farm capacity, cloud bursting, and delivery planning all depend on predictable numbers. A 120-frame sequence at 3 hours per frame behaves very differently from one at 9, especially across multiple concurrent shows. When estimates consistently land within range, production trusts the pipeline, and that trust buys room for smarter technical decisions.\u003C/p>\u003Chr>\u003Ch2 id=\"1-what-actually-affects-rendering-costs\">1. What Actually Affects Rendering Costs?\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#1-what-actually-affects-rendering-costs\">\u003C/a>\u003C/p>\u003Cp>Rendering cost is never about a single push of a button. It's the result of multipliers stacking on top of each other.\u003C/p>\u003Cp>If a frame costs too much, everything downstream becomes painful, so the conversation should always start with what affects cost per frame:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Resolution\u003C/strong> - Moving from 1080p to 4K is not a mild increase. It's four times the pixels. If a frame renders in five minutes at 1080p, it's completely reasonable to see twenty minutes at 4K with identical settings.\u003C/li>\u003Cli>\u003Cstrong>Frame rate\u003C/strong> - Ten seconds at 24fps is 240 frames. The same ten seconds at 60fps is 600 frames. If each frame costs eight minutes, you've just turned 32 render hours into 80 without touching a single shader or light.\u003C/li>\u003Cli>\u003Cstrong>Render engine choice\u003C/strong> - CPU versus GPU rendering is less about speed and more about memory ceilings. GPUs can be dramatically faster per frame, but they are constrained by VRAM. A scene with 12GB of textures and heavy geometry might fit comfortably in system RAM yet exceed a 24GB GPU once acceleration structures and overhead are included.\u003C/li>\u003Cli>\u003Cstrong>Sampling\u003C/strong> - Doubling samples almost doubles render time. If noise clears acceptably at 192 samples but artists push to 512 just to be safe, render time can nearly triple for negligible visual improvement.\u003C/li>\u003Cli>\u003Cstrong>Scene complexity\u003C/strong> - Modern renderers handle millions of polygons, but acceleration structure build times and memory usage still scale. A five-million-poly hero asset is fine in isolation. Fifty duplicates that are not properly instanced can double scene memory and increase render prep time significantly. The same applies to textures, volumetric fog, procedural systems like hair, fur, crowds, and simulations.\u003C/li>\u003Cli>\u003Cstrong>Animation length\u003C/strong> - Total frames equal duration multiplied by frame rate. A 30-second piece at 24fps is 720 frames. If each frame takes twelve minutes, that's 144 render hours.\u003C/li>\u003C/ul>\u003Cp>The parameters to take into account can feel overwhelming, which is why per-frame cost is the only metric that matters. If the target is eight minutes per frame and early lighting tests show fourteen, the project is already heading toward a significant overrun even if only a handful of frames have been rendered.\u003C/p>\u003Chr>\u003Ch2 id=\"2-understanding-the-core-formula\">2. Understanding the Core Formula\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#2-understanding-the-core-formula\">\u003C/a>\u003C/p>\u003Cp>Every serious conversation about rendering cost needs to start with the core formula:\u003C/p>\u003Cblockquote>\u003Cstrong>Total Render Cost = ((average render time per frame * total frames) / render speed) * hourly compute cost\u003C/strong>\u003C/blockquote>\u003Cp>If a sequence has 1,200 frames, each averaging 18 minutes on a single GPU, and the farm processes 40 frames in parallel at $2.50 per GPU hour, the math immediately reveals whether the lighting tweak just added thousands to the budget. It puts numbers on every decision.\u003C/p>\u003Cp>Estimating render time per frame must be grounded in production reality, not optimism.\u003C/p>\u003Chr>\u003Ch2 id=\"3-local-rendering-vs-cloud\">3. Local Rendering vs Cloud\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#3-local-rendering-vs-cloud\">\u003C/a>\u003C/p>\u003Cp>\u003Cstrong>It can be hard to evaluate total cost of ownership versus total cost of execution\u003C/strong> when choosing between building your own render farm or going for cloud rendering.\u003C/p>\u003Cp>Local workstation rendering looks cheap because the hardware is already sitting there. But that GPU or CPU wasn't free. A $6,000 workstation amortized over three years is roughly $166 per month before a single frame is rendered. Add electricity, say, a 700W machine running 10 hours a day at $0.20 per kWh, and that's roughly $42 per month just to keep it on. Now factor maintenance: failed SSDs, driver conflicts, OS updates breaking plugins. Even a conservative estimate of four hours of IT time per month at $75/hour adds $300. That \"free\" rendering node is suddenly costing over $500 per month before considering production impact. Opportunity cost is another silent budget killer. On a 10-person team billing $600 per artist per day, a single blocked workstation can easily represent thousands in indirect delay over a week of crunch.\u003C/p>\u003Cp>Cloud rendering flips the model from capital expenditure to operational expense. Instead of buying a machine, you rent compute by the GPU-hour. For example, if a frame takes 2 GPU-hours and the provider charges $1.20 per GPU-hour, that's $2.40 per frame. Multiply by 500 frames and the job costs $1,200 in raw compute. That number is transparent and scales linearly with workload, which makes estimates more predictable. Scalability is where cloud becomes strategically powerful. If 500 frames must be delivered in 24 hours and each frame takes 2 hours, locally that's 1,000 GPU-hours. On a single workstation, that's over 40 days of render time. Even with five machines, that's still more than a week. In the cloud, spinning up 100 GPUs finishes the job in roughly 10 hours. That difference can mean landing a client or missing the deadline entirely. But hidden costs in the cloud are where many estimates fall apart.\u003C/p>\u003Cp>\u003Cstrong>The practical approach is hybrid thinking.\u003C/strong> For example, keep a small local farm to render dailies overnight and use cloud rendering for finals, spikes, and simulations that exceed internal capacity. Switch as needed.\u003C/p>\u003Cp>\u003Cstrong>Estimating render cost means modeling behavior, not just machines.\u003C/strong> Once again, it's important to know your average render time per frame and plug it into both local and cloud cost estimators.\u003C/p>\u003Chr>\u003Ch2 id=\"4-hidden-costs-animators-forget\">4. Hidden Costs Animators Forget\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#4-hidden-costs-animators-forget\">\u003C/a>\u003C/p>\u003Cp>Everyone budgets for render time but hidden costs compound across shots. If the goal is predictable delivery, those costs need to be visible and actively managed.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Revisions\u003C/strong> are the obvious one, but the real expense isn't just the extra CPU hours. It's the cascade. A late animation tweak on a hero shot forces lighting to re-queue, comp to invalidate caches, and modeling to re-export textures. On a 300-frame 4K shot with heavy volumes, a \"small\" timing change can mean tens of thousands of core-hours plus artist wait time. Clear version approvals can save a lot of money.\u003C/li>\u003Cli>\u003Cstrong>Storage\u003C/strong> is another silent budget killer, especially with EXR sequences. A single 4K 16-bit multi-layer EXR can easily hit 80-150 MB per frame. At 1000 frames, that's 80-150 GB for one version of one shot.\u003C/li>\u003Cli>\u003Cstrong>Bandwidth\u003C/strong> becomes visible the moment artists work remote or across sites. Syncing a 120 GB publish over a 1 Gbps line theoretically takes around 15 minutes, but in practice with contention and overhead, it can take much longer. Now multiply that by ten artists pulling the same plates Monday morning. Suddenly the farm is idle because comp is waiting on transfers. The practical approach is caching and locality, with a NAS and local granular syncs for example.\u003C/li>\u003Cli>\u003Cstrong>Backup and archival policies\u003C/strong> also carry real cost for the same reasons. \u003Cstrong>Software licenses\u003C/strong> are often treated as fixed overhead, but they can also scale unpredictably in the case of render only licenses. \u003Cstrong>IT time and pipeline setup\u003C/strong> rarely make it into show budgets, but they absolutely should. Every new show configuration, custom USD schema, or farm integration is engineering time that competes with support and R&amp;D. Last but not least: when delivery compresses, everything becomes more expensive. Cloud burst rendering costs more per core-hour, vendors charge \u003Cstrong>expedite fees\u003C/strong>, and overtime increases payroll burn.\u003C/li>\u003C/ul>\u003Cp>None of these costs are mysterious. They're just easy to ignore when the focus is on creative output. \u003Cstrong>The role of a strong pipeline is to make these invisible multipliers measurable and manageable.\u003C/strong> When teams see the real cost of a \"small change,\" they make better decisions, and the entire production runs with fewer surprises.\u003C/p>\u003Chr>\u003Ch2 id=\"5-a-simple-estimation-framework\">5. A Simple Estimation Framework\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#5-a-simple-estimation-framework\">\u003C/a>\u003C/p>\u003Cp>Estimating render costs needs to be grounded in reality. Now that you have all the elements, here are a few simple steps you can follow to create your estimate, but don't be simplistic and adapt them to your studio workflow:\u003C/p>\u003Col>\u003Cli>The most reliable starting point is \u003Cstrong>the heaviest scene in the current production\u003C/strong>. Pull the most complex shot you can find: highest character count, full FX, volumetrics, motion blur, the works.\u003C/li>\u003Cli>\u003Cstrong>Render 5-10 final-quality frames under real production settings.\u003C/strong> For example, if the hero battle shot has six characters, rain FX, and 4K output, render frames 101-110 exactly as they would ship. Anything less is lying to yourself.\u003C/li>\u003Cli>Once those frames are done, \u003Cstrong>calculate the average render time per frame across the batch.\u003C/strong> If the ten frames range from 18 to 26 minutes and average out at 22 minutes per frame, that 22 minutes is your baseline.\u003C/li>\u003Cli>With that baseline in hand, \u003Cstrong>add a buffer\u003C/strong> before anyone else asks for it. Production reality guarantees noise. A 15-30% buffer is healthy depending on show volatility. If that 22-minute average becomes 28 minutes after a 25% buffer, you've built in space for inevitable look-dev drift. On a stylized commercial with locked lighting, 15% might be enough. On a feature sequence still evolving, 30% is safer and still defensible.\u003C/li>\u003Cli>Now scale it to the show. \u003Cstrong>Multiply the buffered per-frame time by total frame count.\u003C/strong> A 90-second sequence at 24 fps is 2,160 frames. At 28 minutes per frame, that's 60,480 render minutes, or just over 1,008 render hours. On a 200-node farm where each node runs one frame at a time, that's roughly five hours of wall-clock time, assuming perfect distribution and zero contention. That assumption will never be true, but it gives production something concrete to reason about.\u003C/li>\u003Cli>Next comes \u003Cstrong>the revision margin.\u003C/strong> Expect 10-25% additional frames to be re-rendered over the life of the sequence. If history shows that client notes typically trigger two re-renders, lean toward 20-25%. A 20% revision margin adds 432 frames. At 28 minutes per frame, that's another 201 render hours that must be budgeted.\u003C/li>\u003C/ol>\u003Cp>And as we mentionned earlier, \u003Cstrong>don't forget hidden costs like storage and bandwidth costs!\u003C/strong> Calculate them up front and make sure the network and disks can actually handle that sustained throughput.\u003C/p>\u003Cp>When all these pieces are combined, you get a number that can survive scrutiny. \u003Cstrong>That number is both a cost estimate and a production constraint\u003C/strong>: it tells you whether to optimize shaders, reduce volumetrics, increase farm capacity, or renegotiate scope.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/render-cost-estimation/index.md?ref=blog.cg-wire.com#conclusion\">\u003C/a>\u003C/p>\u003Cp>\u003Cstrong>Rendering cost estimation is ultimately about managing uncertainty.\u003C/strong> No estimate survives contact with late creative changes or unexpected technical constraints. The practical approach is simple: test early with representative frames, base projections on measured data instead of intuition, add realistic buffers for revisions, and continuously recalibrate once real shots hit the farm. Every project will drift: the goal is to detect that drift early and absorb it with planning rather than panic.\u003C/p>\u003Cp>If tighter control over that uncertainty sounds appealing, \u003Ca href=\"https://blog.cg-wire.com/flamenco-without-nas-kitsu/\" rel=\"nofollow\">consider trying self-hosting a render farm\u003C/a>. Running your own infrastructure gives direct access to performance metrics, failure rates, queue behavior, and real per-shot render costs instead of relying on opaque cloud billing summaries. Even a small pilot setup with a few nodes rendering a short internal project can expose bottlenecks, validate benchmarks, and build the historical data needed for future estimates. Owning the feedback loop between scene complexity, hardware performance, and scheduling pressure is often the fastest way to turn render cost estimation from guesswork into an operational advantage.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":825,"comment_id":826,"feature_image":827,"featured":23,"visibility":24,"created_at":828,"updated_at":829,"custom_excerpt":830,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":831,"primary_tag":832,"url":834,"excerpt":830,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":835},"33472886-015c-40af-bab2-a0b2dc33109b","69ae62c891be760001bf7d87","https://images.unsplash.com/photo-1719014745427-663137ae50f6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGFuaW1hdGlvbiUyMHJlbmRlcmluZ3xlbnwwfHx8fDE3NzMwMzg3NTR8MA&ixlib=rb-4.1.0&q=80&w=2000","2026-03-09T07:03:52.000+01:00","2026-03-09T07:51:00.000+01:00","Learn how animation studios estimate rendering costs and predict farm capacity. This guide explains the factors that affect render time, the core cost formula, and a practical framework for reliable render estimations.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"5fff0e4b653a0c003924f7f0","https://blog.cg-wire.com/estimating-render-costs-animation/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@buddhaelemental3d?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Buddha Elemental 3D\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/estimating-render-costs-animation",{"title":820},"estimating-render-costs-animation","posts/estimating-render-costs-animation",[841],{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"AfO5bQ4BoUaQdumnEGFpE6vmeVhLOofanyDkTeqmITY",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},{"id":846,"title":847,"authors":848,"body":12,"description":12,"extension":17,"html":850,"meta":851,"navigation":36,"path":862,"published_at":856,"seo":863,"slug":864,"stem":865,"tags":866,"__hash__":868,"uuid":852,"comment_id":853,"feature_image":854,"featured":23,"visibility":24,"created_at":855,"updated_at":856,"custom_excerpt":857,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":869,"primary_tag":870,"url":860,"excerpt":857,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":861},"ghost/posts:scaling-animation-studio-systems.json","Scaling an Animation Studio from 5 to 50 Artists",[849],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📈\u003C/div>\u003Cdiv class=\"kg-callout-text\">Scaling an animation studio is less about hiring more artists and more about building the right systems.\u003C/div>\u003C/div>\u003Cp>In a small team, everyone talks to everyone and problems get solved by turning around in a chair. At fifty people, that same habit creates noise and delays.\u003C/p>\u003Cp>System thinking (designing repeatable processes instead of relying on individual heroics) is hard to learn without having seen it inside a larger studio. Many artists only realize this when a project slips because no one has defined who approves shots, where files live, or how feedback is tracked. Multiply that by ten new hires and a deadline, and chaos follows.\u003C/p>\u003Cp>\u003Cstrong>The challenge is building structures that make good work predictable. And the solution is to deliberately design how information, assets, and decisions flow before growth forces painful lessons.\u003C/strong>\u003C/p>\u003Cp>In this article, we define best practices to help you plan ahead.\u003C/p>\u003Chr>\u003Ch2 id=\"1-layered-team-structure\">1. Layered Team Structure\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#1-layered-team-structure\">\u003C/a>\u003C/p>\u003Cp>When a studio has five artists, everyone touches everything and decisions happen in the same room. At fifty, that model only leads to confusion.\u003C/p>\u003Cp>It's important to \u003Cstrong>put a layered team structure in place early\u003C/strong> by defining departments like animation, rigging, lighting, or compositing, supervisors who own creative and technical direction, and artists who execute within that scope. The supervisor is the person accountable for final quality and approvals, not just the most senior animator. Once each department has a clear supervisor and a single approval path, feedback flows through one channel and shot turnaround time drops.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"809\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Departments should be divided to \u003Cstrong>reduce cross-department dependencies\u003C/strong>, to design pipelines that allow teams to work in parallel instead of waiting on each other. A dependency is any task that blocks another task from starting. You can also standardize rigs, naming conventions, and publish processes so animation does not wait on last-minute rig tweaks.\u003C/p>\u003Cp>A clear team structure also makes it easy to \u003Cstrong>keep your budget under control\u003C/strong> as you scale and track your burn rate (how fast cash is spent each month) to guide staffing decisions. When production sees that adding two mid-level animators keeps the burn rate aligned with delivery milestones, hiring is no longer a gamble.\u003C/p>\u003Chr>\u003Ch2 id=\"2-centralized-asset-management\">2. Centralized Asset Management\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#2-centralized-asset-management\">\u003C/a>\u003C/p>\u003Cp>You need to centralize asset management early, because five artists can shout across the room for the latest rig, but fifty cannot.\u003C/p>\u003Cp>Asset management originates from a simple need: \u003Cstrong>everyone must always work on the most up-to-date asset.\u003C/strong> There is nothing more frustrating than seeing a lighting artist spend half a day polishing a shot, only to discover the character rig is two versions behind. It's important to quickly replace scattered folders and casual file sharing with a single source of truth where approved files live.\u003C/p>\u003Cp>Spreadsheets may seem enough to track shots and versions, but they collapse the moment three supervisors update them at once or someone forgets to log a change. Google Drive is attractive because you are already familiar with it, but you can't easily version assets and preview renders will eat up your storage quota fast.\u003C/p>\u003Cp>The fix is simple: \u003Cstrong>store all production assets on a secure server with controlled access\u003C/strong>, so files are not passed around manually and permissions prevent accidental overwrites. Lock down DCC tool choices, sharing file formats, and introduce versioning strategies.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-1.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"809\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-1.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-1.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-1.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Versioning means saving incremental, clearly numbered iterations of a file so changes can be tracked and rolled back. Instead of letting artists rename files \"final_v7_reallyFinal,\" you can \u003Cstrong>enforce automatic version publishing through your DCC pipeline\u003C/strong>. A practical example: when a rigger publishes a new character to Kitsu, the system increments the version. Animators open shots and automatically reference the latest approved rig.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-2.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"809\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-2.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-2.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-2.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"3-tracking-documentation\">3. Tracking &amp; Documentation\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#3-tracking--documentation\">\u003C/a>\u003C/p>\u003Cp>In a large studio, accountability no longer lives in casual conversations.\u003C/p>\u003Cp>\u003Cstrong>You need a production tracker as a shared system to assign tasks, deadlines, and owners in one visible place.\u003C/strong>\u003C/p>\u003Cp>In Kitsu for example, you can set up every concept, asset, shot, and scene as a trackable task, and assign one clear owner.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-3.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1438\" height=\"833\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-3.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-3.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-3.png 1438w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>In a small team, everyone remembers who is polishing the walk cycle. In a larger team, two animators may assume the other is handling it. A simple tracker prevents that confusion by making responsibility explicit.\u003C/p>\u003Cp>Pair this with defined milestones so progress is measured against concrete checkpoints rather than gut feeling.\u003C/p>\u003Cp>\u003Cstrong>Documentation must also scale with headcount.\u003C/strong> You need a knowledge base to centralize tools, processes, and conventions to make them by everyone. For example, create a studio wiki in tools like Notion or Confluence and require artists to document new tools and fixes as part of their task completion.\u003C/p>\u003Cp>Last but not least, \u003Cstrong>make use of forecasting tools\u003C/strong> to spot delays early. If layout consistently overruns by two days per sequence, adjust bids and staffing before deadlines slip, not after clients complain.\u003C/p>\u003Chr>\u003Ch2 id=\"4-structure-review-loops-team-communication\">4. Structure Review Loops &amp; Team Communication\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#4-structure-review-loops--team-communication\">\u003C/a>\u003C/p>\u003Cp>Feedback cycles also require structure.\u003C/p>\u003Cp>\u003Cstrong>A review loop should be a scheduled, repeatable process where work is submitted, reviewed, revised, and approved in clear stages.\u003C/strong>\u003C/p>\u003Cp>Written communication is also critical because it creates a record and removes ambiguity. Make submissions happen at fixed times each week and require artists to attach a short written intent note explaining what changed and what feedback is requested, or use asynchronous comments that don't require everyone to be present at the same time to reduce meeting overload.\u003C/p>\u003Cp>\u003Cstrong>A review engine\u003C/strong> like Kitsu's centralizes versions, notes, and approvals, to prevent feedback from getting lost in chat threads:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-4.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1122\" height=\"549\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/03/image-4.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/03/image-4.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/03/image-4.png 1122w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>You can \u003Cstrong>combine it with a messaging platform\u003C/strong> for quick clarifications while keeping final notes inside the review system. Many teams discover that when supervisors stop giving major notes in private messages and instead post them publicly in the review tool, alignment improves and duplicate work drops significantly.\u003C/p>\u003Chr>\u003Ch2 id=\"5-infrastructure-pipeline-management\">5. Infrastructure &amp; Pipeline Management\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#5-infrastructure--pipeline-management\">\u003C/a>\u003C/p>\u003Cp>Infrastructure stops being a background concern when a studio grows. At fifty artists, fifteen minutes of daily friction per person waiting for files to sync, relinking textures, and re-rendering broken shots, adds up to more than twelve hours of lost production time every day.\u003C/p>\u003Cp>\u003Cstrong>A dedicated pipeline team is important.\u003C/strong> Instead of having everyone patch problems as they appear, you can have one pipeline team owning standards, versioning, and automation so artists can stay focused on shots. Technical artists handle multiple key components of an animation studio:\u003C/p>\u003Cul>\u003Cli>A NAS (Network Attached Storage) ensures everyone works from the same source of truth. Instead of copying files over chat, assets are published to a single location.\u003C/li>\u003Cli>Backup and redundancy protect against disaster. One corrupted drive should not freeze a 50-person studio. Automated nightly backups and mirrored servers prevent panic.\u003C/li>\u003Cli>A scalable render farm keeps lighting from blocking animation.\u003C/li>\u003Cli>Custom automations quickly add up when you're handling hundreds of thousands of frames throughout a production.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog/blob/main/drafts/scaling-pipeline-from-5-to-50-artists/index.md?ref=blog.cg-wire.com#conclusion\">\u003C/a>\u003C/p>\u003Cp>Scaling an animation studio isn't just about hiring more artists: \u003Cstrong>you need to design a system that lets more artists succeed\u003C/strong> without stepping on each other.\u003C/p>\u003Cp>Decision-making needs layers. Assets need structure. Tasks need visibility. Feedback needs process. Infrastructure needs ownership. What once lived in conversations and shared intuition must evolve into documented systems and clearly defined responsibilities. Each of these systems reinforces the others, and together they support your studio's growth.\u003C/p>\u003Cp>If you want to scale smoothly without sacrificing quality or culture, you need tools that support this structure. That's where Kitsu comes in. Built specifically for animation and VFX studios, Kitsu helps you centralize tracking, manage assets, structure reviews, and maintain visibility across departments in one place. Scale with confidence with the right systems!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>\u003Cp>\u003C/p>\u003Cp>\u003C/p>",{"uuid":852,"comment_id":853,"feature_image":854,"featured":23,"visibility":24,"created_at":855,"updated_at":856,"custom_excerpt":857,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":858,"primary_tag":859,"url":860,"excerpt":857,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":861},"2dbfc58b-e1fe-4254-9c2f-5d09210ca6dc","69ae62cc91be760001bf7d93","https://images.unsplash.com/photo-1648014613911-e355dc51e2e3?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGFuaW1hdGlvbiUyMHN0dWRpbyUyMHRlYW18ZW58MHx8fHwxNzczMDM2OTgyfDA&ixlib=rb-4.1.0&q=80&w=2000","2026-03-09T07:03:56.000+01:00","2026-03-09T07:18:45.000+01:00","Learn how to scale an animation studio from a small team to a full production environment. Discover best practices for team structure, asset management, production tracking, review workflows, and pipeline infrastructure.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"https://blog.cg-wire.com/scaling-animation-studio-systems/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@ooneiroslyl?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">ooneiroslyl\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/scaling-animation-studio-systems",{"title":847},"scaling-animation-studio-systems","posts/scaling-animation-studio-systems",[867],{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"o41IfFxYbK3eKApyX1aZhkYy2fbfTNBeyfC0vXH1V7s",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},{"id":872,"title":873,"authors":874,"body":12,"description":12,"extension":17,"html":876,"meta":877,"navigation":36,"path":888,"published_at":889,"seo":890,"slug":891,"stem":892,"tags":893,"__hash__":895,"uuid":878,"comment_id":879,"feature_image":880,"featured":23,"visibility":24,"created_at":881,"updated_at":882,"custom_excerpt":883,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":896,"primary_tag":897,"url":886,"excerpt":883,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":887},"ghost/posts:automating-kitsu-production-onboarding.json","Scaling Production Setup in Kitsu with CSV Imports (2026)",[875],{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🚀\u003C/div>\u003Cdiv class=\"kg-callout-text\">Spin up new Kitsu productions in minutes by importing clean studio data automatically.\u003C/div>\u003C/div>\u003Cp>If spinning up a new show or scene in Kitsu means clicking through forms, recreating asset lists, and assigning artists one at a time, \u003Ca href=\"https://blog.cg-wire.com/client-communication-animation/\">your onboarding is lacking\u003C/a>.\u003C/p>\u003Cp>That manual overhead compounds fast. Every new production repeats the same setup ritual, every crew onboarding becomes a copy-paste marathon, and every step adds another chance for something to break. At studio scale, that friction costs real time, real money, and real sanity.\u003C/p>\u003Cp>The fastest studios don't just use Kitsu: they wire it in their pipeline. They treat it like a production database, feeding it clean, structured studio data so new shows, shots, or departments come online in minutes, not days. Pipelines are cloned, teams are attached automatically, and Kitsu becomes an engine instead of a bottleneck.\u003C/p>\u003Cp>In this article, we'll break down a practical, production-tested workflow for doing exactly that, using CSV files and the Kitsu Python API (Gazu) to automate production onboarding and make setup work disappear.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-blue\">\u003Cdiv class=\"kg-callout-emoji\">💡\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Looking for working examples?\u003C/strong>\u003C/b>\u003Cbr>\u003Cbr>You can find the complete source code for the example integration showcased in this guide on our GitHub:\u003Cbr>\u003Cbr>🔗 \u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/import-spreadsheet-to-kitsu?ref=blog.cg-wire.com\">https://github.com/cgwire/blog-tutorials/tree/main/import-spreadsheet-to-kitsu\u003C/a>\u003C/div>\u003C/div>\u003Chr>\u003Ch2 id=\"what-you-can-import\">What You Can Import\u003C/h2>\u003Cp>In a real production, almost all of the data falls into a few repeatable buckets that are perfect for automation:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Artists\u003C/strong> - Your crew already exists somewhere else: an HR sheet, a payroll export, a Notion table. That data usually includes names, emails, and roles like \u003Cem>Animator\u003C/em>, \u003Cem>TD\u003C/em>, or \u003Cem>Supervisor\u003C/em>. Instead of recreating users by hand in Kitsu, you can import that list in one pass and have your team ready to go before day one.\u003C/li>\u003Cli>\u003Cstrong>Assets\u003C/strong> - Characters, props, environments ... anything that follows a naming convention is easy to automate. A CSV with entries like \u003Ccode>CHAR_RobotA\u003C/code>, \u003Ccode>PROP_Sword_01\u003C/code>, or \u003Ccode>ENV_CityBlock\u003C/code> can become a fully populated asset list in Kitsu in seconds, organized exactly the way your pipeline expects.\u003C/li>\u003Cli>\u003Cstrong>Tasks\u003C/strong> - Tasks are also where manual setup really hurts. Modeling, Rigging, Surfacing, Animation... these task types rarely change from show to show. By importing tasks in bulk, you can automatically attach the right task stack to every asset and even pre-assign artists or departments, instead of clicking through hundreds of rows in the UI.\u003C/li>\u003C/ul>\u003Cp>Beyond the basics, you can import \u003Ca href=\"https://gazu.cg-wire.com/data?ref=blog.cg-wire.com\">any production-shaped data Kitsu understands: sequences, shots, episodes, or even entire productions\u003C/a>. This makes it trivial to duplicate a previous show's structure or spin up a new season with the same layout and naming rules.\u003C/p>\u003Cp>Most studios already store all of this in spreadsheets. Treat those spreadsheets as data sources, feed them directly into Kitsu, and let automation do the setup work.\u003C/p>\u003Cp>While Kitsu's UI supports basic spreadsheet imports, scripting takes it much further: with the Kitsu Python API (Gazu), you can chain automations like syncing tasks from Notion, mirror your asset tracker, or regenerate task lists whenever the schedule changes.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-82a7e584-d2c0-4457-9ea4-4e97c794b6ff.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"600\" height=\"611\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-82a7e584-d2c0-4457-9ea4-4e97c794b6ff.png 600w\">\u003C/figure>\u003Chr>\u003Ch2 id=\"1-csv-parser\">1. CSV Parser\u003C/h2>\u003Cp>The first step is to standardize how you read studio data. CSV is ideal: it is easy for production to edit and easy for scripts to parse.\u003C/p>\u003Cp>In this tutorial, we'll focus on the artist data model for the sake of simplicity, but we could do something similar with assets stored in Google Drive or tasks in Trello.\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">def load_csv(file_path: Path) -&gt; pd.DataFrame:\n    \"\"\"Load a CSV file into a pandas DataFrame.\"\"\"\n    return pd.read_csv(file_path)\n\n\ndef parse_artists(df: pd.DataFrame) -&gt; List[Dict]:\n    \"\"\"\n    Expected columns:\n        - email\n        - first_name\n        - last_name\n        - role\n    \"\"\"\n    return df.to_dict(orient=\"records\")\n\u003C/code>\u003C/pre>\u003Cp>\u003Ccode>load_csv\u003C/code> is the entry point that turns a raw CSV file into something Python can work with. It reads the file from disk using pandas and returns a DataFrame, giving you a structured, table-like representation of the spreadsheet that can be filtered, validated, or transformed before anything is sent to Kitsu.\u003C/p>\u003Cp>\u003Ccode>parse_artists\u003C/code> takes a DataFrame that represents artist data and converts each row into a dictionary containing an artist's email, name, and role. By returning a list of these dictionaries, it produces API-ready data that can be passed directly to Kitsu or Gazu to create users in bulk instead of adding artists one by one.\u003C/p>\u003Cp>A TV animation studio exporting crew lists from Google Sheets can simply save them as CSV, for example. Production keeps ownership of the data, while TDs automate ingestion without asking for format changes every show.\u003C/p>\u003Chr>\u003Ch2 id=\"2-kitsu-auth\">2. Kitsu Auth\u003C/h2>\u003Cp>Before uploading anything, you need to authenticate against your Kitsu instance:\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">gazu.set_host(\"http://localhost/api\")\nuser = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\u003C/code>\u003C/pre>\u003Cp>In practice, studios often use a dedicated \u003Cstrong>pipeline or admin account\u003C/strong> for automation. This avoids permission issues and keeps audit logs clean when scripts create or modify data.\u003C/p>\u003Cp>For local testing, it's advised to \u003Ca href=\"https://blog.cg-wire.com/dcc-integration-blender-kitsu/\">use the \u003Ccode>kitsu-docker\u003C/code> install\u003C/a>.\u003C/p>\u003Chr>\u003Ch2 id=\"3-loading-data\">3. Loading Data\u003C/h2>\u003Cp>Artists are usually the first bottleneck during onboarding. You need to gather emails, send invites, assign them to tasks... automating their creation removes hours of manual work for production coordinators.\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">def upload_artists(artists: List[Dict]):\n    \"\"\"\n    Create artists if they do not already exist.\n    \"\"\"\n    existing_users = {\n        user[\"email\"]: user\n        for user in gazu.person.all_persons()\n    }\n\n    for artist in artists:\n        if artist[\"email\"] in existing_users:\n            print(f\"Artist exists: {artist['email']}\")\n            continue\n\n        gazu.person.new_person(\n            artist[\"first_name\"],\n            artist[\"last_name\"],\n            artist[\"email\"],\n        )\n        print(f\"Created artist: {artist['email']}\")\n\u003C/code>\u003C/pre>\u003Cp>This function takes a list of artist dictionaries and syncs them into Kitsu while avoiding duplicates.\u003C/p>\u003Cp>It starts by querying Kitsu for all existing users and building a lookup table keyed by email, which makes it fast to check whether an artist already exists.\u003C/p>\u003Cp>It then iterates over the incoming artist data and, for each entry, compares the email against that lookup: if a match is found, the script skips creation and logs that the artist already exists. If no match is found, it creates a new user in Kitsu using the artist's name and email via the Gazu API, then prints a confirmation.\u003C/p>\u003Cp>The result is an idempotent import step you can safely re-run—new artists are added, existing ones are left untouched.\u003C/p>\u003Cp>On a feature film ramp-up, a studio could import hundreds of artists from HR data in under a minute. Late hires could be added by simply updating the CSV and rerunning the script without duplicating users or manual checks.\u003C/p>\u003Chr>\u003Ch2 id=\"4-tying-it-all-together\">4. Tying It All Together\u003C/h2>\u003Cp>The main entry point ties everything together:\u003C/p>\u003Cpre>\u003Ccode class=\"language-py\">if __name__ == \"__main__\":\n    gazu.set_host(\"http://localhost/api\")\n    user = gazu.log_in(\"admin@example.com\", \"mysecretpassword\")\n\n    artists_df = load_csv(Path(\"artists.csv\"))\n\n    artists = parse_artists(artists_df)\n\n    upload_artists(artists)\n\u003C/code>\u003C/pre>\u003Cp>This block only runs when the file is executed directly, not when it's imported by another module.\u003C/p>\u003Cp>After authentication, it loads the \u003Ccode>artists.csv\u003C/code> file into a pandas DataFrame, converts those rows into a list of artist dictionaries using parse_artists, and retrieves an existing production in Kitsu by name.\u003C/p>\u003Cp>Finally, it calls upload_artists, which is responsible for iterating over that prepared data and creating the artist accounts in Kitsu, completing the automated onboarding step without any manual UI work.\u003C/p>\u003Cp>In practice, studios version these scripts alongside their pipeline tools. A new show becomes a repeatable command, not a checklist.\u003C/p>\u003Cp>Now, you can log back into your Kitsu dashboard and see the final result:\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-9f641c9c-07b5-4154-9c42-45279f6a9d20.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"900\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2026/02/data-src-image-9f641c9c-07b5-4154-9c42-45279f6a9d20.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2026/02/data-src-image-9f641c9c-07b5-4154-9c42-45279f6a9d20.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2026/02/data-src-image-9f641c9c-07b5-4154-9c42-45279f6a9d20.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>\u003Ca href=\"https://github.com/cgwire/blog-tutorials/tree/main/import-spreadsheet-to-kitsu?ref=blog.cg-wire.com\">Have a look at our corresponding Github repository\u003C/a> for a working example you can easily fork to fit your needs!\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>At its best, Kitsu automation allows technical directors to reclaim control over how productions are born. When your pipeline can create itself from clean data, onboarding stops being a chore. By importing artists, assets, and tasks directly into Kitsu, you eliminate redundant work, reduce human error, and make production onboarding predictable. This approach scales from small teams to multi-show studios.\u003C/p>\u003Cp>Here are some additional features you could add to make your import pipeline more interesting:\u003C/p>\u003Cul>\u003Cli>automatically assign tasks to artists based on their role\u003C/li>\u003Cli>populate departments for production tracking\u003C/li>\u003Cli>generate starting estimates and individual department calendars based on budget constraints\u003C/li>\u003Cli>turn a script into a breakdown list for each shot and use it to pre-generate assets\u003C/li>\u003C/ul>\u003Cp>The list can go on, but you just have to start small!\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":878,"comment_id":879,"feature_image":880,"featured":23,"visibility":24,"created_at":881,"updated_at":882,"custom_excerpt":883,"codeinjection_head":140,"codeinjection_foot":141,"custom_template":12,"canonical_url":12,"primary_author":884,"primary_tag":885,"url":886,"excerpt":883,"reading_time":205,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":887},"89dfbefe-bab7-4dbd-a317-2b4f62de9543","6980b6784304f600017051e9","https://images.unsplash.com/photo-1504868584819-f8e8b4b6d7e3?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHNwcmVhZHNoZWV0fGVufDB8fHx8MTc3MDA0NDU0MXww&ixlib=rb-4.1.0&q=80&w=2000","2026-02-02T15:36:40.000+01:00","2026-02-20T06:03:58.000+01:00","Learn how to automate Kitsu production onboarding using CSV files and the Gazu Python API. Import artists, assets, and tasks in bulk to eliminate manual setup and create repeatable, scalable studio pipelines.",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"https://blog.cg-wire.com/automating-kitsu-production-onboarding/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@goumbik?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Lukas Blazek\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/automating-kitsu-production-onboarding","2026-02-16T10:00:37.000+01:00",{"title":873},"automating-kitsu-production-onboarding","posts/automating-kitsu-production-onboarding",[894],{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"mlgaejAh-K47aV92LIYK0qZr62tuRXQbi8CwKSXhGTg",{"id":128,"name":129,"slug":130,"profile_image":12,"cover_image":12,"bio":12,"website":12,"location":12,"facebook":12,"twitter":12,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":131},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},{"id":899,"title":900,"authors":901,"body":12,"description":12,"extension":17,"html":903,"meta":904,"navigation":36,"path":915,"published_at":916,"seo":917,"slug":918,"stem":919,"tags":920,"__hash__":922,"uuid":905,"comment_id":906,"feature_image":907,"featured":23,"visibility":24,"created_at":908,"updated_at":909,"custom_excerpt":910,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":923,"primary_tag":924,"url":913,"excerpt":910,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":914},"ghost/posts:western-vs-eastern-animation.json","(2026) Western & Eastern Animation: What Sets Them Apart",[902],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">🌏\u003C/div>\u003Cdiv class=\"kg-callout-text\">Animation isn’t just style—it’s cultural DNA. Western and Eastern traditions reveal different ways of seeing the world.\u003C/div>\u003C/div>\u003Cp>Cartoon or anime? Ask ten people and you’ll get ten answers.\u003C/p>\u003Cp>But this isn’t just a style preference. Western and Eastern animation are built on entirely different cultural DNA, and those differences change how we laugh, cry, and even dream.\u003C/p>\u003Cp>In this article, we try to peel back the layers: the mythologies that shaped each animation tradition, the visual languages that set their rules, and the storytelling that keeps us hooked. The journey starts in the next paragraph!\u003C/p>\u003Chr>\u003Ch2 id=\"what-is-eastern-animation\">\u003Cstrong>What Is Eastern Animation?\u003C/strong>\u003C/h2>\u003Cp>Eastern animation includes the distinctive styles and storytelling \u003Cstrong>traditions of countries like Japan, South Korea, and China\u003C/strong>. \u003Cstrong>Each nation contributes its own unique flavor\u003C/strong> shaped by cultural aesthetics and historical narratives:\u003C/p>\u003Cul>\u003Cli>In Japan, \u003Ca href=\"about:blank\">anime is a globally recognized art form\u003C/a> ($21B in revenue in 2023 according to the Association of Japanese Animation), spanning a wide range of genres from heartfelt coming-of-age tales to futuristic sci-fi epics. Iconic series like Cowboy Bebop and One Piece, but also films like Spirited Away or Paprika showcase the depth and diversity of Japanese animation.\u003C/li>\u003Cli>South Korea emerges as another major player in the animation industry with $767 million in revenue in 2023. Korean animation is noted for its sleek visual style, strong emphasis on \u003Ca href=\"https://blog.cg-wire.com/character-design-animation/\">character design\u003C/a>, and high production quality. With a growing influence in international markets, South Korean studios have produced globally popular series like Lookism, Noblesse, and Tower of God, often combining fantasy, action, and intricate world-building.\u003C/li>\u003Cli>China, too, has a rich tradition of animation dating back decades, with early works like Havoc in Heaven showcasing hand-drawn craftsmanship and mythological storytelling. Today, Chinese animation is experiencing a renaissance with 41.8 billion U.S. dollars in revenue in 2023, driven by increased investment and a growing domestic audience. Modern Chinese animated series often draw from ancient folklore, historical epics, and contemporary social themes, blending traditional art forms with cutting-edge technology. A recent example is Lord of Mysteries.\u003C/li>\u003C/ul>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-a34532d9-4c28-45a8-a09c-77ab49ad37df.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1024\" height=\"549\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/09/data-src-image-a34532d9-4c28-45a8-a09c-77ab49ad37df.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/09/data-src-image-a34532d9-4c28-45a8-a09c-77ab49ad37df.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-a34532d9-4c28-45a8-a09c-77ab49ad37df.png 1024w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>Together, Eastern animation reflects a deep cultural heritage while embracing innovation, offering a vibrant alternative to the Western animation style. Though each country has its own take on animation, we use Japanese animation as a model in the rest of the article to make comprehension easier.\u003C/p>\u003Chr>\u003Ch2 id=\"what-is-western-animation\">\u003Cstrong>What Is Western Animation?\u003C/strong>\u003C/h2>\u003Cp>Western animation refers to animated productions originating \u003Cstrong>from Western countries, primarily in North America and Europe\u003C/strong>.\u003C/p>\u003Cul>\u003Cli>In the United States, western animation is synonymous with mainstream pop culture, thanks to iconic studios like Walt Disney, Warner Bros, Pixar, and DreamWorks. American animation is known for its emphasis on character-driven narratives, emotional depth, musical elements, and highly polished, often computer-generated visuals. From classic hand-drawn masterpieces like Snow White and the Seven Dwarfs to hits like Frozen and Spider-Man: Into the Spider-Verse, US animation blends technical innovation with strong narrative structures.\u003C/li>\u003Cli>France is another key player in western animation: $16.3B in market value in 2021, according to Data Bridge Market Research. French studios such as Gaumont and StudioCanal have produced critically acclaimed works like The Triplets of Belleville, Arthur and the Minimoys, or more recently, Flow, often characterized by unique visual styles, unique storytelling, and a focus on experimental artistic expression.\u003C/li>\u003Cli>Other European countries like Germany (USD 19.2 billion market size in 2024), Spain or Italy also have a sizeable influence in both 2D and 3D animation.\u003C/li>\u003C/ul>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-4084c28c-81e5-4fa6-95d5-4932635176bf.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"900\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/09/data-src-image-4084c28c-81e5-4fa6-95d5-4932635176bf.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/09/data-src-image-4084c28c-81e5-4fa6-95d5-4932635176bf.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-4084c28c-81e5-4fa6-95d5-4932635176bf.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>This contrast sets the stage for a deeper exploration of how Eastern animation differs in style, philosophy, and cultural expression.\u003C/p>\u003Chr>\u003Ch2 id=\"1-studio-organization-two-systems\">\u003Cstrong>1. Studio Organization: Two Systems\u003C/strong>\u003C/h2>\u003Cp>Animation doesn’t just look different in the East and West: it’s built differently from the ground up.\u003C/p>\u003Cp>The way studios are organized, how roles are divided, and even how animators are paid all shape the art that reaches the screen.\u003C/p>\u003Cp>A Japanese studio has its own traditional model:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Director as creative architect\u003C/strong> - The \u003Ca href=\"about:blank\">kantoku (director)\u003C/a> sometimes draws the full storyboard themselves to bring their vision into the very fabric of the production. Icons like Hayao Miyazaki and Satoshi Kon exemplify this hands-on leadership.\u003C/li>\u003Cli>\u003Cstrong>Sequence ownership\u003C/strong> - Animators are assigned entire sequences, handling characters, props, effects, and backgrounds together to create a unified, holistic feel.\u003C/li>\u003Cli>\u003Cstrong>Genga vs douga\u003C/strong> - Genga (key frames) artists set the core motion and emotion, while douga artists (in-betweeners) provide fluidity. The sakkan (lead animator or supervisor) oversees both, sometimes wielding more decisional power than the director.\u003C/li>\u003Cli>\u003Cstrong>Compensation by output\u003C/strong> - Key animators are paid by the cut (scene), while inbetweeners are paid per sheet (frame count) to reward detail and precision over sheer volume.\u003C/li>\u003Cli>\u003Cstrong>Artistic unity\u003C/strong> - The result is a deeply integrated visual style where every frame feels intentional and connected to the director’s vision.\u003C/li>\u003C/ul>\u003Cp>Western studios, on the other hand, adopt a more productivist approach:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Hyper-specialization\u003C/strong> - \u003Ca href=\"https://blog.cg-wire.com/cg-production-pre-production-production-and-post-production/\">Production is broken into many micro-roles\u003C/a>: supervising animators, assistants, in-betweeners, effects specialists, clean-up artists, and more.\u003C/li>\u003Cli>\u003Cstrong>Fragmented collaboration\u003C/strong> - A single scene might have characters, effects, and backgrounds drawn by entirely different teams, even when they appear together.\u003C/li>\u003Cli>\u003Cstrong>Consistency through division\u003C/strong> - This system ensures quality control and scalability, but can lead to a disjointed feel if composition is lacking.\u003C/li>\u003Cli>\u003Cstrong>Efficiency &amp; scale\u003C/strong> - Specialization allows Western studios to manage massive productions (like Disney features or DreamWorks films) with thousands of staff.\u003C/li>\u003Cli>\u003Cstrong>Modularity over unity\u003C/strong> - The emphasis is on consistency across characters and effects, rather than a single animator’s holistic vision.\u003C/li>\u003C/ul>\u003Cp>These differences in studio organization are not just logistical: they shape the very soul of the animation that emerges from each tradition. Understanding them is essential to appreciating why Western and Eastern animation feel so distinct, even when they tell similar stories.\u003C/p>\u003Chr>\u003Ch2 id=\"2-aesthetic-visual-language\">\u003Cstrong>2. Aesthetic &amp; Visual Language\u003C/strong>\u003C/h2>\u003Cp>In anime, the dominant aesthetic leans heavily toward \u003Cstrong>minimalist animation\u003C/strong>. This style prioritizes storytelling, emotional depth, and \u003Ca href=\"https://blog.cg-wire.com/character-design-animation/\">\u003Cu>eccentric character design\u003C/u>\u003C/a> over continuous, fluid motion. Minimalist animation achieves its effect through deliberate choices: fewer frames per second (lower FPS), strategic use of static shots, and repeated or simplified animation sequences. Like a moving manga.\u003C/p>\u003Cp>This approach doesn’t imply low quality but rather a calculated artistic decision: by reducing motion, anime can focus on nuanced facial expressions, dramatic composition, and atmospheric background detail, allowing viewers to linger on emotional moments.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card kg-card-hascaption\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-1393b376-c50c-4a6a-a873-2cc883e48d25.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"800\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/09/data-src-image-1393b376-c50c-4a6a-a873-2cc883e48d25.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/09/data-src-image-1393b376-c50c-4a6a-a873-2cc883e48d25.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-1393b376-c50c-4a6a-a873-2cc883e48d25.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003Cfigcaption>\u003Ci>\u003Cem class=\"italic\" style=\"white-space: pre-wrap;\">Source: Samurai Champloo\u003C/em>\u003C/i>\u003C/figcaption>\u003C/figure>\u003Cp>In contrast, Western cartoons emphasize \u003Cstrong>character animation and high-energy movement\u003C/strong>. This style is built on exaggeration and pacing to create dynamic, sometimes comedic, visual experiences: \u003Ca href=\"https://blog.cg-wire.com/exaggeration-animation-principle/\">\u003Cu>characters leap, stretch, and react with exaggerated physicality\u003C/u>\u003C/a> (think of Bugs Bunny’s elastic limbs or SpongeBob SquarePants’ bouncy movements). These animations typically operate at higher frame rates (often 24 FPS or more), resulting in smoother, more fluid motion. Lip syncing is also more precise and consistent to maintain realism and clarity.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-e42c7fae-d6b8-4e0a-bbfb-3aa0e772925f.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1600\" height=\"1168\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/09/data-src-image-e42c7fae-d6b8-4e0a-bbfb-3aa0e772925f.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/09/data-src-image-e42c7fae-d6b8-4e0a-bbfb-3aa0e772925f.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-e42c7fae-d6b8-4e0a-bbfb-3aa0e772925f.png 1600w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Cp>As a result, anime often feels more introspective, while Western cartoons are more performance-driven. These differences aren’t just technical. They reflect broader cultural values in storytelling. Together, \u003Cstrong>these aesthetic choices define the unique visual identities\u003C/strong> of their respective traditions.\u003C/p>\u003Chr>\u003Ch2 id=\"3-storytelling-the-heart-of-animation\">\u003Cstrong>3. Storytelling: The Heart of Animation\u003C/strong>\u003C/h2>\u003Cp>Every animated story is shaped not only by plot and character but also by deeply rooted cultural values. Western and Eastern animation diverge significantly in their respective approaches, reflecting contrasting worldviews on individualism, community, and the nature of conflict:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Cultural roots\u003C/strong> - Western animation draws on Enlightenment ideals and individualism, emphasizing self-determination and personal triumph. Eastern animation is shaped by Confucianism, Buddhism, Shintoism... highlighting harmony, collective responsibility, and life’s cyclical nature.\u003C/li>\u003Cli>\u003Cstrong>Narrative perspective (I vs we)\u003C/strong> - Western stories follow a central protagonist whose personal journey drives the plot. Eastern stories often take a collective lens, where the hero may appear later and growth is shared among the group (nakama).\u003C/li>\u003Cli>\u003Cstrong>Plot &amp; emotional drive (change vs harmony)\u003C/strong> - Western animation thrives on conflict, disruption, and transformation, culminating in clear victories. Eastern storytelling favors emotional resonance and balance, often ending with acceptance, sacrifice, or quiet closure instead of triumph.\u003C/li>\u003Cli>\u003Cstrong>Characters (hero vs community)\u003C/strong> - Western heroes are individualistic symbols of justice, facing villains defined by power or greed. Eastern characters value group success over individual fame: leadership shifts, villains may be absent, and death reinforces impermanence.\u003C/li>\u003Cli>\u003Cstrong>Conflict (Good vs evil vs search for good)\u003C/strong> - Western animation pits heroes against foreign evil, with resolution through conquest. Eastern animation blurs this binary, focusing on empathy, coexistence, and internal struggles where everyone believes they act rightly.\u003C/li>\u003Cli>\u003Cstrong>Resolution (victory vs harmony)\u003C/strong> - Western stories end with decisive wins and happy closure. Eastern stories aim for balance, even bittersweet or tragic, finding beauty in harmony and connection rather than outright victory.\u003C/li>\u003C/ul>\u003Cp>While both Western and Eastern animation \u003Ca href=\"https://blog.cg-wire.com/animation-scripts/\">\u003Cu>tell compelling stories\u003C/u>\u003C/a>, they do so through fundamentally different lenses: Western animation celebrates the individual’s journey toward change and triumph, while Eastern animation honours the collective’s path toward harmony and understanding.\u003C/p>\u003Cp>Both traditions remind us that stories are not just entertainment: they are mirrors reflecting the values we hold dear.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>The clash between Western and Eastern animation is not a battle of superiority. It’s a celebration of diversity in storytelling, artistry, and cultural expression, with both traditions offering unique windows into the human experience.\u003C/p>\u003Cp>The differences run deep: Western animation thrives on individualism, dynamic action, and clear-cut victories, while Eastern animation embraces collective harmony, subtle emotion, and the quiet beauty of impermanence. These distinctions are not just stylistic: they are rooted in centuries of philosophy, history, and creative philosophy, from Confucian values to Enlightenment ideals.\u003C/p>\u003Cp>What unites them, however, is their power to move us. Great animation transcends borders. It speaks to our shared longing for meaning, connection, and growth.\u003C/p>\u003Cp>Of course, \u003Cstrong>modern animation isn't as manichean, and you can find plenty of animation studios whose work perfectly blends different inspirations\u003C/strong>. Many successful Western cartoons have strong anime influence (the Avatar series, Samurai Jack, or more recently Invincible), just like Japanese animation draws ideas from the West (Cowboy Bebop, Trigun, Baccano, etc.).\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":905,"comment_id":906,"feature_image":907,"featured":23,"visibility":24,"created_at":908,"updated_at":909,"custom_excerpt":910,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":911,"primary_tag":912,"url":913,"excerpt":910,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":914},"cbd53d84-225a-47c2-a763-5f885e2938c3","68d08eb1fb49c600015ee424","https://images.unsplash.com/photo-1723618633842-8534abf34894?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMxfHxhbmltZSUyMHZzJTIwY2FydG9vbnxlbnwwfHx8fDE3NTg0OTkyNjV8MA&ixlib=rb-4.1.0&q=80&w=2000","2025-09-22T01:48:01.000+02:00","2026-02-20T06:05:05.000+01:00","Western and Eastern animation are shaped by cultural values, visual languages, and storytelling philosophies. This article explores how studio structures, aesthetics, and narratives differ between traditions—and how modern animation increasingly blends the two.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"https://blog.cg-wire.com/western-vs-eastern-animation/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@joebcn?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">JOE Planas\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/western-vs-eastern-animation","2025-09-29T10:30:57.000+02:00",{"title":900},"western-vs-eastern-animation","posts/western-vs-eastern-animation",[921],{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"fFd7D9GUMO6UAcEAtko1Ug9aJ7bKW9wMp8ttBgPc7EM",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},{"id":926,"title":927,"authors":928,"body":12,"description":12,"extension":17,"html":930,"meta":931,"navigation":36,"path":942,"published_at":943,"seo":944,"slug":945,"stem":946,"tags":947,"__hash__":949,"uuid":932,"comment_id":933,"feature_image":934,"featured":23,"visibility":24,"created_at":935,"updated_at":936,"custom_excerpt":937,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":950,"primary_tag":951,"url":940,"excerpt":937,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":941},"ghost/posts:animation-production-briefs.json","On Writing Better Animation Briefs (2026)",[929],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📝\u003C/div>\u003Cdiv class=\"kg-callout-text\">A clear production brief isn’t just paperwork—it’s the blueprint that keeps animation projects aligned, on time, and on budget.\u003C/div>\u003C/div>\u003Cp>All animation client work starts with one deliverable: a production brief. Without a clear roadmap, even the most talented animators are left guessing.\u003C/p>\u003Cp>And the good news is you don’t need 10 years of experience to write a great animation brief.\u003C/p>\u003Cp>Keep reading, because in the next few minutes you’ll learn the exact blueprint to write a production brief that gets your client's vision right, every time.\u003C/p>\u003Chr>\u003Ch2 id=\"what%E2%80%99s-a-brief\">\u003Cstrong>What’s a Brief?\u003C/strong>\u003C/h2>\u003Cp>A production brief is \u003Cstrong>a document that serves as a roadmap for creating animation\u003C/strong>, outlining the objectives and key requirements for a project. This ensures that everyone involved, from animators and directors to clients and stakeholders, shares a clear understanding of the end goal and how to achieve it.\u003C/p>\u003Chr>\u003Ch2 id=\"why-a-brief-matters-in-animation-production\">\u003Cstrong>Why a Brief Matters in Animation Production\u003C/strong>\u003C/h2>\u003Cp>Without a clear brief, teams risk miscommunication, scope creep, wasted resources, and ultimately, a final product that falls short of expectations.\u003C/p>\u003Cp>Think of it as the blueprint \u003Ca href=\"https://blog.cg-wire.com/pre-production-in-animation-definition-process-challenges/\">\u003Cu>before pre-production begins\u003C/u>\u003C/a>.\u003C/p>\u003Cp>It’s not just a list of instructions: it’s \u003Cstrong>a collaborative tool that aligns creative and business goals\u003C/strong>, sets expectations, and streamlines the production process.\u003C/p>\u003Cp>A strong brief also acts as a reference point throughout production. When creative decisions need to be made or changes are proposed, the team can refer back to the original objectives to assess whether the direction still aligns with the project’s core purpose. This consistency helps maintain quality, especially in larger or longer-term animation projects.\u003C/p>\u003Cp>A production brief isn’t just a formality. It’s \u003Cstrong>a strategic tool that transforms ideas into executable plans\u003C/strong>.\u003C/p>\u003Cp>And it doesn't have to be complex. In this article, we use the golden circle methodology to structure a brief.\u003C/p>\u003Cp>The Golden Circle is a framework developed by Simon Sinek that helps explain ideas and processes by starting with purpose before moving to execution. It’s built around three layers: \u003Cstrong>Why (the core motivation or purpose), How (the process or approach), and What (the tangible outcome or product)\u003C/strong>. By framing information in this order, the Golden Circle provides clarity and \u003Ca href=\"https://blog.cg-wire.com/client-communication-animation/\">\u003Cu>ensures that everyone involved understands not just what needs to be done, but also why it matters and how it will be achieved\u003C/u>\u003C/a>. For animation production briefs, this approach is especially useful because it connects the creative vision to the practical steps, helping clients and production teams stay aligned from concept to delivery.\u003C/p>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-dcb11ec0-54bf-40b4-be2e-63f293ed3458.png\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"1024\" height=\"768\" srcset=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w600/2025/09/data-src-image-dcb11ec0-54bf-40b4-be2e-63f293ed3458.png 600w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/size/w1000/2025/09/data-src-image-dcb11ec0-54bf-40b4-be2e-63f293ed3458.png 1000w, https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/09/data-src-image-dcb11ec0-54bf-40b4-be2e-63f293ed3458.png 1024w\" sizes=\"(min-width: 720px) 720px\">\u003C/figure>\u003Chr>\u003Ch2 id=\"1-why-laying-the-foundations\">\u003Cstrong>1. Why: Laying the Foundations\u003C/strong>\u003C/h2>\u003Cp>Before diving into the creative process, it’s essential to understand the \"why\" behind your animation project. A well-crafted production brief begins with clarity on purpose:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Context\u003C/strong> - Start by defining the broader context of the project. What is the project’s origin? Is it part of a marketing campaign, an educational initiative, a product launch, or a storytelling endeavor? Understanding the situation sets the tone and scope. This context informs the narrative, style, and overall approach of the animation.\u003C/li>\u003Cli>\u003Cstrong>Objectives &amp; CTA (Call to Action)\u003C/strong> - Clearly state what you aim to achieve. Are you aiming to increase brand awareness, drive website traffic, explain a complex product feature, or inspire emotional engagement? Your objectives should be specific, measurable, and time-bound. Equally important is defining the desired call to action: what should viewers do after watching? Whether it’s visiting a website, signing up for a newsletter, or sharing the video, the CTA must be integrated into the brief to guide the animation’s structure and messaging.\u003C/li>\u003Cli>\u003Cstrong>Audience\u003C/strong> - Know who you’re speaking to. Define your target audience in detail: demographics, psychographics, online behaviors, and pain points. Is the animation aimed at teenagers, professionals, or parents? Understanding your audience ensures the tone, language, visuals, and pacing resonate with them. A brief that reflects audience insights leads to more relatable animations.\u003C/li>\u003C/ul>\u003Cp>Example:\u003C/p>\u003Cp>A tech startup is preparing to launch a new productivity app designed for remote teams. The animation is part of their product launch campaign.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Context\u003C/strong>: The company is entering a competitive market where existing tools already dominate. The animation will be used on the product’s landing page and social media ads to highlight the unique value proposition of the app.\u003C/li>\u003Cli>\u003Cstrong>Objectives &amp; CTA\u003C/strong>: The goal is to drive sign-ups for the free trial within the first month of launch. The animation should encourage viewers to click a “Start Free Trial” button at the end.\u003C/li>\u003Cli>\u003Cstrong>Audience\u003C/strong>: The target audience consists of tech-savvy professionals aged 25 to 40 who work remotely, value efficiency, and actively seek tools that improve team collaboration. They’re familiar with existing solutions but are open to trying new ones that simplify workflows.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"2-how-tactics-tools\">\u003Cstrong>2. How: Tactics &amp; Tools\u003C/strong>\u003C/h2>\u003Cp>Once the purpose is clear, you can move on to tactical planning: how things should be done.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Technical requirements\u003C/strong> - Include details like the desired duration of the animation (e.g., 30 seconds, 2 minutes), the required format (e.g., MP4, MOV, GIF), dimensions (e.g., 1920x1080, 1080x1350 for vertical content), and audio specifications (e.g., stereo, 48kHz, voiceover vs. music-only). Clear technical guidelines prevent rework.\u003C/li>\u003Cli>\u003Cstrong>Look and feel\u003C/strong> - Describe the overall aesthetic and emotional tone you want to achieve. Is the animation playful or serious? Retro or futuristic? This section sets the tone and helps artists understand the sensory experience you’re aiming for. Include references to similar works, \u003Ca href=\"https://blog.cg-wire.com/animation-moodboard/\">mood boards\u003C/a>, or style frames to illustrate your vision. Be clear about color palettes, lighting, and character design inspiration.\u003C/li>\u003Cli>\u003Cstrong>Theme\u003C/strong> - State the central idea or message of the animation. Whether it’s promoting a product, conveying a social message, or telling a personal story, the theme should be concise and compelling to help maintain narrative focus throughout production.\u003C/li>\u003Cli>\u003Cstrong>Story\u003C/strong> - Outline the narrative structure, even if it’s simple. Include, for example a beginning (setup), middle (conflict or action), and end (resolution). For non-narrative animations, describe the intended journey or progression of visuals.\u003C/li>\u003Cli>\u003Cstrong>Branding\u003C/strong> - If the animation is part of a larger brand campaign, include guidelines for brand consistency. Specify logo placement, approved colors, typography, tone of voice, and any brand-specific imagery or messaging.\u003C/li>\u003Cli>\u003Cstrong>Other Constraints\u003C/strong> - Clearly communicate any project limitations that impact production: deadline, budget, and any resource restrictions (e.g., limited animation frames, specific software requirements).\u003C/li>\u003C/ul>\u003Cp>Example:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Technical requirements\u003C/strong>: A 60-second explainer video optimized for both web (1920x1080 MP4) and social media (1080x1350 vertical format). Voiceover narration in English, supported by light background music, with subtitles for accessibility.\u003C/li>\u003Cli>\u003Cstrong>Look and feel\u003C/strong>: Clean, modern, and professional, with a sense of energy and optimism. The visual style should use flat design with smooth transitions, paired with a vibrant but minimal color palette (aligned with the brand’s teal, navy, and white). Motion should feel fluid and confident, evoking a sense of productivity and collaboration.\u003C/li>\u003Cli>\u003Cstrong>Theme\u003C/strong>: “Simplify teamwork, wherever you are.” The central message is that this app helps remote teams reduce friction and focus on what matters.\u003C/li>\u003Cli>\u003Cstrong>Story\u003C/strong>:\u003Cul>\u003Cli>\u003Cem>Beginning\u003C/em>: Show the frustration of a remote team juggling multiple tools and miscommunications.\u003C/li>\u003Cli>\u003Cem>Middle\u003C/em>: Introduce the app as a seamless solution that brings tasks, chat, and files into one place. Show how it works with a clear visual metaphor (e.g., scattered puzzle pieces coming together).\u003C/li>\u003Cli>\u003Cem>End\u003C/em>: Highlight the benefit—“More focus. Less hassle. Better teamwork.” Conclude with a strong CTA: “Start your free trial today.”\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cstrong>Branding\u003C/strong>: Use the company logo in the intro and outro. Stick to brand typography and avoid overly playful fonts. Incorporate the brand’s primary color scheme throughout, ensuring high contrast for readability.\u003C/li>\u003Cli>\u003Cstrong>Other Constraints\u003C/strong>: Delivery deadline in 6 weeks to align with the app launch. Budget capped at $12,000, so animation complexity should stay within 2D motion graphics with minimal 3D elements.\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"3-what-defining-deliverables\">\u003Cstrong>3. What: Defining Deliverables\u003C/strong>\u003C/h2>\u003Cp>Lastly, you need to agree on what the project entails: the deliverables and milestones to get there.\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Milestones\u003C/strong> - Break down the production timeline into well-defined stages. Typically\u003Cstrong>,\u003C/strong> you'll have script development, \u003Ca href=\"https://blog.cg-wire.com/storyboard-animation/\">storyboarding\u003C/a>, animatics, voiceovers, audio editing, final animation, and \u003Ca href=\"https://blog.cg-wire.com/animation-post-production-definition-process-overview/\">post-production\u003C/a>.\u003C/li>\u003Cli>\u003Cstrong>Communication &amp; review\u003C/strong> - Define clear channels and expectations for feedback and collaboration. Define who the primary points of contact are on both client and production sides, how and when review cycles will occur (e.g., weekly check-ins, milestone-based reviews), the process for providing feedback (annotated files, shared platforms, or scheduled calls), and the number of revision rounds allowed at each stage to avoid scope creep.\u003C/li>\u003Cli>\u003Cstrong>Deliverables\u003C/strong> - Specify exactly what will be handed over at each phase and upon project completion: final animated video in specified formats, source files (if applicable), like layered project files, assets, and audio tracks, branding or compliance documentation (e.g., logo placement, accessibility features) and any supporting materials like promotional stills, social media cuts, or subtitles.\u003C/li>\u003C/ul>\u003Cp>Example:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Milestones\u003C/strong>:\u003Cul>\u003Cli>Week 1: Script finalized and approved\u003C/li>\u003Cli>Week 2: Storyboard and initial style frames delivered for review\u003C/li>\u003Cli>Week 3: Animatic (rough timing of visuals + voiceover draft) shared\u003C/li>\u003Cli>Week 4: First animation draft delivered with voiceover and placeholder music\u003C/li>\u003Cli>Week 5: Second draft with refined animation, music, and sound design\u003C/li>\u003Cli>Week 6: Final animation delivered, including minor revisions and polish\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cstrong>Communication &amp; review\u003C/strong>:\u003Cul>\u003Cli>Weekly check-in calls every Friday with the startup’s marketing lead (client-side) and the animation producer (agency-side).\u003C/li>\u003Cli>Feedback to be provided via a shared project management tool (e.g., Frame.io or Trello), with comments annotated directly on video drafts.\u003C/li>\u003Cli>Two rounds of revisions are allowed per milestone (script, storyboard, and animation phases). Any additional revisions beyond this scope may incur extra costs or extend the timeline.\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cstrong>Deliverables\u003C/strong>:\u003Cul>\u003Cli>Final animation: 60-second video in MP4 (1920x1080) for web and MP4 (1080x1350) for social media.\u003C/li>\u003Cli>Source files: After Effects project files, layered design assets, and audio tracks.\u003C/li>\u003Cli>Supporting materials: Three promotional stills exported as PNGs, a 15-second social media cut-down, English subtitles in SRT format, and branding documentation confirming logo placement and accessibility compliance.\u003C/li>\u003C/ul>\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>We’ve explored in this article why a brief is a must-have for any production. From defining the \u003Cem>why\u003C/em> (your project’s purpose, audience, and call to action) to detailing the \u003Cem>how\u003C/em> (visual style, tone, technical specs, and creative constraints) and finally outlining the \u003Cem>what\u003C/em> (clear milestones, communication plans, and deliverables), you now have a complete blueprint to eliminate guesswork and prevent costly edits.\u003C/p>\u003Cp>Great animation doesn’t happen by accident; it happens by design. And that design starts with a clear production brief. Don’t let your next project be another story of missed deadlines and misaligned expectations.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":932,"comment_id":933,"feature_image":934,"featured":23,"visibility":24,"created_at":935,"updated_at":936,"custom_excerpt":937,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":938,"primary_tag":939,"url":940,"excerpt":937,"reading_time":146,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":941},"85eaf93b-a93a-4942-b5a4-3493fe9015f8","68d08eb5fb49c600015ee42a","https://images.unsplash.com/photo-1569154076682-4c0466623ec2?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDh8fGFuaW1hdGlvbiUyMHBsYW5uaW5nfGVufDB8fHx8MTc1ODQ5ODY4N3ww&ixlib=rb-4.1.0&q=80&w=2000","2025-09-22T01:48:05.000+02:00","2026-02-20T06:03:54.000+01:00","A strong animation production brief prevents scope creep, wasted effort, and misaligned visions. This guide shows you how to write briefs using the Golden Circle method—covering purpose, tactics, and deliverables—to streamline communication and keep teams aligned from concept to final delivery.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"https://blog.cg-wire.com/animation-production-briefs/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@m0ther_0f_memes?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Mona Miller\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/animation-production-briefs","2025-09-22T10:00:39.000+02:00",{"title":927},"animation-production-briefs","posts/animation-production-briefs",[948],{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},"4TEJ8gE_ACrg_ml7hlrr4UKxioEG11HX7dgxXHvzsQE",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":833,"name":102,"slug":109,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":106},[953,982,1009],{"id":954,"title":955,"authors":956,"body":12,"description":12,"extension":17,"html":958,"meta":959,"navigation":36,"path":970,"published_at":971,"seo":972,"slug":973,"stem":974,"tags":975,"__hash__":979,"uuid":960,"comment_id":961,"feature_image":962,"featured":23,"visibility":24,"created_at":963,"updated_at":964,"custom_excerpt":965,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":980,"primary_tag":981,"url":968,"excerpt":965,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":969},"ghost/posts:blender-vs-maya.json","Blender vs Maya In 2026: Which 3D Tool is Right for You?",[957],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">💻\u003C/div>\u003Cdiv class=\"kg-callout-text\">\u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Blender\u003C/strong>\u003C/b> or \u003Cb>\u003Cstrong style=\"white-space: pre-wrap;\">Maya\u003C/strong>\u003C/b>? The debate continues in 2025—let’s break down the differences!\u003C/div>\u003C/div>\u003Cp>There are plenty of digital content creation tools out there, some of which can spark ongoing debates among 3D artists.\u003C/p>\u003Cp>Maybe you just started studying animation and wonder which tool to pick. Or you have a new project to manage and try to decide between hiring Maya or Blender animators.\u003C/p>\u003Cp>In this article, we’ll take a friendly stroll through the features of both \u003Cstrong>Blender\u003C/strong> and \u003Cstrong>Maya\u003C/strong> to explore what sets them apart, their strengths and weaknesses, and which projects they suit best.\u003C/p>\u003Chr>\u003Ch2 id=\"comparison-criteria\">\u003Cstrong>Comparison Criteria\u003C/strong>\u003C/h2>\u003Cp>When comparing Maya and Blender, we will focus on a few key criteria to make it as objective as possible:\u003C/p>\u003Cul>\u003Cli>\u003Cstrong>Target audience\u003C/strong> - who is the tool built for?\u003C/li>\u003Cli>\u003Cstrong>Pricing\u003C/strong> - what's the business model like?\u003C/li>\u003Cli>\u003Cstrong>Pros &amp; cons\u003C/strong> - what are the key advantages and inconveniences of each tool?\u003C/li>\u003Cli>\u003Cstrong>Learning curve\u003C/strong> - how easy can you get started?\u003C/li>\u003Cli>\u003Cstrong>Community support\u003C/strong> - how active are the users?\u003C/li>\u003Cli>\u003Cstrong>Modeling\u003C/strong> - does it fare well with common 3D modeling tasks?\u003C/li>\u003Cli>\u003Cstrong>Animation &amp; rigging\u003C/strong> - what about the animation process of 3D models?\u003C/li>\u003Cli>\u003Cstrong>Rendering\u003C/strong> - how can I turn my animations into videos?\u003C/li>\u003C/ul>\u003Cp>Before we dive in, I want to emphasize the fact that neither is better―it all depends on your requirements and use cases! With that out of the way, let's start with Maya.\u003C/p>\u003Chr>\u003Ch2 id=\"maya\">\u003Cstrong>Maya\u003C/strong>\u003C/h2>\u003Cp>Autodesk Maya is considered the industry standard for 3D animation, and it is used by major studios around the globe, such as Walt Disney Animation Studios.\u003C/p>\u003Ch3 id=\"target-audience\">\u003Cstrong>Target audience\u003C/strong>\u003C/h3>\u003Cp>Maya's toolset is tailored for professionals working within film, television, and gaming industries, especially those involved in complex production pipelines.\u003C/p>\u003Ch3 id=\"pricing\">\u003Cstrong>Pricing\u003C/strong>\u003C/h3>\u003Cp>Maya is quite expensive at $1,945 per year ($245 monthly), with subscription costs potentially a barrier for independent artists and small studios. But Autodesk does offer free student licenses and discounted indie licenses for only $320 per year if you are eligible.\u003C/p>\u003Ch3 id=\"pros\">\u003Cstrong>Pros\u003C/strong>\u003C/h3>\u003Cul>\u003Cli>Used by many big studios in the industry\u003C/li>\u003Cli>Great animation and rigging UI\u003C/li>\u003Cli>Works out-of-the-box but fully customizable\u003C/li>\u003Cli>Industry standards closed-source plugins\u003C/li>\u003C/ul>\u003Ch3 id=\"cons\">\u003Cstrong>Cons\u003C/strong>\u003C/h3>\u003Cul>\u003Cli>Cost\u003C/li>\u003Cli>Few community resources\u003C/li>\u003C/ul>\u003Cp>\u003C/p>\u003Chr>\u003Ch2 id=\"blender\">\u003Cstrong>Blender\u003C/strong>\u003C/h2>\u003Cp>Blender is a free and open-source 3D content creation tool that is steadily gaining traction across various creative industries. It supports the entirety of the 3D pipeline, including modeling, rigging, animation, and rendering.\u003C/p>\u003Cp>Blender has been used in several acclaimed productions, like the 2023 film \"Spider-Man: Across the Spider-Verse,\" and was pivotal in the Grease Pencil feature in short films and animations.\u003C/p>\u003Ch3 id=\"target-audience-1\">\u003Cstrong>Target audience\u003C/strong>\u003C/h3>\u003Cp>Blender is designed to be accessible to everyone, from hobbyists to professionals. Smaller studios appreciate its zero-cost entry point and evolving feature set. It's particularly appealing to freelancers and startups looking for powerful but hackable tools without the financial strain.\u003C/p>\u003Ch3 id=\"pricing-1\">\u003Cstrong>Pricing\u003C/strong>\u003C/h3>\u003Cp>The biggest advantage of Blender is its price—free—and its highly active community that fosters innovation and support. However, it may not integrate as seamlessly into larger production pipelines compared to Maya, which can be a drawback for some studios.\u003C/p>\u003Ch3 id=\"pros-1\">\u003Cstrong>Pros\u003C/strong>\u003C/h3>\u003Cul>\u003Cli>Open-source\u003C/li>\u003Cli>Big community\u003C/li>\u003Cli>Great modeling UI\u003C/li>\u003C/ul>\u003Ch3 id=\"cons-1\">\u003Cstrong>Cons\u003C/strong>\u003C/h3>\u003Cul>\u003Cli>Less popular in large-scale productions\u003C/li>\u003Cli>Need plugins to improve your animation workflow\u003C/li>\u003C/ul>\u003Chr>\u003Ch2 id=\"learning-curve\">\u003Cstrong>Learning Curve\u003C/strong>\u003C/h2>\u003Cp>Both software packages have steep learning curves, but Maya is often considered more challenging to master due to its complexity.\u003C/p>\u003Cp>Blender, as an open-source software, has a reputation for being less intimidating to start with, especially for newcomers.\u003C/p>\u003Cp>Numerous tutorials and courses are available for both, but Blender has the edge here thanks to its open-source nature and large community.\u003C/p>\u003Chr>\u003Ch2 id=\"community\">\u003Cstrong>Community\u003C/strong>\u003C/h2>\u003Cp>The community support for Blender is one of its strongest assets. With its open-source model, developers, and artists frequently contribute to its growth with tutorials, plugins, and resources. This open-source vibe encourages experimentation, and community-driven platforms like Blender Artists and Blender Nation are buzzing with open project discussions.\u003C/p>\u003Cp>Maya also benefits from a large, though more commercially focused, community providing professional resources and support. Maya is used primarily by professionals engaged in large-scale production settings, so the Maya community is often composed of industry veterans and experts with deep knowledge of complex production pipelines. The community tends to communicate through forums like Autodesk's own support and community networks. Because of this setting, free assets and plugins aren't as common since animators are busy working on studio projects.\u003C/p>\u003Chr>\u003Ch2 id=\"modeling\">\u003Cstrong>Modeling\u003C/strong>\u003C/h2>\u003Cp>Blender is praised for its fast and flexible modeling tools. The software offers a versatile range of features, from polygonal and sculpting workflows to advanced procedural modeling with modifiers. Blender’s non-destructive modifier stack allows you to modify geometry in a flexible and non-linear way, which is particularly beneficial for iterative design processes. Its customizable interface and hotkey-centric workflow enable modelers to streamline their processes and work more efficiently once they master the toolset. Lastly, Blender has better built-in sculpting support than Maya.\u003C/p>\u003Cp>Maya excels in polygonal modeling features, with a range of advanced tools that support precise and detailed work. Its integration with other Autodesk products and advanced support for NURBS modeling give it an edge in creating complex, high-precision models that are often required in professional projects. Maya’s user interface can appear more daunting to beginners.\u003C/p>\u003Cp>All in all, both are pretty\u003Ca href=\"https://blog.cg-wire.com/3d-modeling-animation/\"> \u003Cu>similar at 3D modeling\u003C/u>\u003C/a>, and your choice will boil down to your preferences regarding UI and controls.\u003C/p>\u003Chr>\u003Ch2 id=\"animation-rigging\">\u003Cstrong>Animation &amp; Rigging\u003C/strong>\u003C/h2>\u003Cp>Maya offers advanced animation and\u003Ca href=\"https://blog.cg-wire.com/rigging-in-animation/\"> \u003Cu>rigging tools\u003C/u>\u003C/a> out-of-the-box for professional animators who need precision and fluidity. Its rigging system is incredibly powerful and has a great depth of control. The software supports complex characters with intricate riggings thanks to tools like the Node Editor, which simplifies customized control rigs and advanced deformations. Maya’s robust scripting capabilities with MEL and Python allow technical directors to create custom tools and automate rigging processes.\u003C/p>\u003Cp>Blender has made significant strides in animation and rigging with its constant updates, and the Grease Pencil feature is opening new opportunities for 2D and 3D animation. Blender's animation and rigging systems aren't as advanced as Maya's, but they are still there. Blender’s Rigify plugin is a fantastic starting point for creating complex rigs without diving deep into manual rigging.\u003C/p>\u003Chr>\u003Ch2 id=\"rendering\">\u003Cstrong>Rendering\u003C/strong>\u003C/h2>\u003Cp>Maya uses the Interactive Photorealistic Rendering engine for visualization during development and the Autodesk Arnold engine for the final render.\u003C/p>\u003Cp>Arnold is a high-quality Monte Carlo ray-tracing renderer celebrated for its ability to handle complex scenes. Arnold is CPU-driven, although recent updates have included GPU acceleration support.\u003C/p>\u003Cp>Blender has two rendering engines:\u003Ca href=\"https://blog.cg-wire.com/getting-started-with-blender-rendering/\"> \u003Cu>Cycles and Eevee\u003C/u>\u003C/a>.\u003C/p>\u003Cp>Cycles is a physically-based path tracer providing realistic lighting, reflections, and shadows. It relies heavily on GPU acceleration, which can significantly speed up the rendering process if you have a compatible graphics card.\u003C/p>\u003Cp>On the other hand, Eevee is a real-time rendering engine that excels in speed. While it doesn’t provide the same level of detail as Cycles, Eevee is perfect for pre-visualization during development or projects that require quick iterations and less realistic but high-quality visual feedback.\u003C/p>\u003Chr>\u003Ch2 id=\"conclusion\">\u003Cstrong>Conclusion\u003C/strong>\u003C/h2>\u003Cp>Maya and Blender are both powerful tools for creating 3D animations, each with unique strengths and weaknesses.\u003C/p>\u003Cp>With its considerable clout in large studios and major productions, Maya continues to be the standard. But Blender is a formidable alternative, increasingly closing the gap with flexibility and a budget-friendly approach.\u003C/p>\u003Cp>Starting with Blender offers a comprehensive understanding of the 3D world, especially for those working independently. As your skills and studio requirements evolve, transitioning to Maya can align more closely with industry standards.\u003C/p>\u003Cp>If you're still in school, make sure to leverage the free student license to get a feel of both software.\u003C/p>\u003Cp>In any case, the skills you learn in each software are transferable, so don't worry too much about picking one or the other. If you have a good understanding of Blender, you can easily transfer your skills to Maya by watching a few how-to videos, reading the documentation, and practising for a few weeks.\u003C/p>\u003Cdiv class=\"kg-card kg-callout-card kg-callout-card-yellow\">\u003Cdiv class=\"kg-callout-emoji\">📽️\u003C/div>\u003Cdiv class=\"kg-callout-text\">To learn more about the animation process \u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" rel=\"noreferrer\">consider joining our Discord community\u003C/a>! We connect with over a thousand experts who share best practices and occasionally organize in-person events. We’d be happy to welcome you! 😊\u003C/div>\u003C/div>\u003Cdiv class=\"kg-card kg-button-card kg-align-center\">\u003Ca href=\"https://www.cg-wire.com/community?ref=blog.cg-wire.com\" class=\"kg-btn kg-btn-accent\">Join Our Discord Community\u003C/a>\u003C/div>",{"uuid":960,"comment_id":961,"feature_image":962,"featured":23,"visibility":24,"created_at":963,"updated_at":964,"custom_excerpt":965,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":966,"primary_tag":967,"url":968,"excerpt":965,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":969},"db254e69-5771-4a7d-a891-fc49a870a06b","67aad34ae95d410001686252","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2025/02/blender_vs_maya_cover.1102x655.jpg","2025-02-11T05:34:18.000+01:00","2026-03-26T10:27:19.000+01:00","Blender and Maya are two of the most popular 3D animation tools, but which one is right for you? This guide compares their features, pricing, strengths, and best use cases to help you decide.",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},"https://blog.cg-wire.com/blender-vs-maya/","\u003Ci>\u003Cb>\u003Cstrong class=\"italic\" style=\"white-space: pre-wrap;\">Source: Pinglestudio\u003C/strong>\u003C/b>\u003C/i>","/posts/blender-vs-maya","2025-02-24T10:00:50.000+01:00",{"title":955},"blender-vs-maya","posts/blender-vs-maya",[976,977],{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},"69c20dfccb09d8000107cfe9","pWff7SjVzDRT2VjO4NBblvCVh6Z8XO6i15KiZoibeSg",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":156,"name":49,"slug":56,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":53},{"id":983,"title":984,"authors":985,"body":12,"description":12,"extension":17,"html":987,"meta":988,"navigation":36,"path":999,"published_at":1000,"seo":1001,"slug":1002,"stem":1003,"tags":1004,"__hash__":1006,"uuid":989,"comment_id":990,"feature_image":991,"featured":23,"visibility":24,"created_at":992,"updated_at":993,"custom_excerpt":994,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":1007,"primary_tag":1008,"url":997,"excerpt":994,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":998},"ghost/posts:animation-books.json","Animation Books You Should Read In 2026",[986],{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},"\u003Cp>In any field, learning is essential. Growing skills is an essential part of all careers. Of course, we learn a lot by practicing but taking time to nurture the theory is important to perform better in any field. And animation is no exception. \u003Cbr>\u003Cbr>That's why we decided to help you with a list of the best book about the subject. Here is a non-exhaustive list of books we found useful, we hope you find them helpful too!\u003C/p>\u003Cp>Don't hesitate to send us your suggestions to add to this list, we would be glad to make it collaborative.\u003C/p>\u003Ch2 id=\"1-the-animator%E2%80%99s-survival-kit-2002\">\u003Cstrong>1. The Animator’s Survival Kit (2002)\u003C/strong>\u003C/h2>\u003Cfigure class=\"kg-card kg-image-card\">\u003Cimg src=\"https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/2023/08/71kRjj6sgUL._AC_UF1000-1000_QL80_-1.jpg\" class=\"kg-image\" alt=\"\" loading=\"lazy\" width=\"400\" height=\"500\">\u003C/figure>\u003Cp>The Animator's Survival Kit is a comprehensive guide covering various aspects of animation, including valuable insights into the art and techniques involved in the animation process.\u003C/p>\u003Cp>It offers practical advice and tips from an experienced animator, Richard Williams (Who Framed Roger Rabbit, Pink Panther). It is considered a classic in the animation industry and is highly recommended for both beginners and seasoned professionals.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: fundamental principles of animation, understanding timing and spacing, creating believable and expressive characters, and mastering the principles of motion. \u003Cbr>It also provides solid advice regarding the animation pipeline and how to direct animators.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 9780571202287,0571202284\u003C/p>\u003Ch2 id=\"2-acting-for-animators-2003-2017\">\u003Cstrong>2. Acting for Animators (2003-2017)\u003C/strong>\u003C/h2>\u003Cp>\"Acting for Animators\" focuses on teaching animators the art of incorporating acting principles into their animation work.\u003C/p>\u003Cp>Bridging the gap between acting and animation helps animators create more compelling and realistic performances for their characters. By understanding acting techniques, animators can breathe life into their creations, making them relatable and emotionally engaging to the audience.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: learning how to analyze and interpret a character's emotions and motivations, understanding body language and facial expressions to convey emotions effectively, and grasping the concept of character arcs and development throughout a story. \u003Cbr>The book provides guidance on conveying personality traits through animation and capturing the essence of a character's actions and reactions with examples from animated movies like Aladdin, The Jungle Book, and The Little Prince.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-1138669123\u003C/p>\u003Ch2 id=\"3-starting-point-1979-1996-1996\">\u003Cstrong>3. Starting Point: 1979-1996 (1996)\u003C/strong>\u003C/h2>\u003Cp>\"Starting Point\" is an autobiography of Hayao Miyazaki―one of the most renowned and influential figures in the world of animation―providing insights into Miyazaki's early life, his journey as an animator and director, and the founding of Studio Ghibli from Miyazaki himself.\u003C/p>\u003Cp>This book offers a unique opportunity to understand the mind behind some of the most beloved animated films in history from \"My Neighbor Totoro,\" and \"Spirited Away,\" to \"Princess Mononoke.\" Miyazaki's creative process, inspirations, and struggles are laid bare, giving readers a glimpse into the passion and dedication that goes into the making of his extraordinary works.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: an appreciation for Miyazaki's commitment to storytelling and his unwavering dedication to hand-drawn animation, even in the face of technological advancements. \u003Cbr>Readers will also learn about the importance of environmental and societal themes in his films, as well as his deep respect for nature and the human spirit. Additionally, the book offers valuable lessons on perseverance, artistic integrity, and the pursuit of excellence in one's craft.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 9781421505947, 2009012560\u003C/p>\u003Cp>\u003C/p>\u003Ch2 id=\"4-the-making-of-fantastic-mr-fox-2009\">\u003Cstrong>4. The Making of Fantastic Mr. Fox (2009)\u003C/strong>\u003C/h2>\u003Cp>\"The Making of Fantastic Mr. Fox\" provides an in-depth behind-the-scenes look at the production process of the animated film \"Fantastic Mr. Fox\" by acclaimed director Wes Anderson. It’s an exploration of the creative decisions, challenges, and innovations that went into bringing this stop-motion masterpiece to life.\u003C/p>\u003Cp>The book is worth a read for several reasons. First, it provides valuable insights into the world of stop-motion animation, showcasing the craftsmanship involved in creating the film's characters and sets. Readers can gain a deeper appreciation for the dedication required to produce a stop-motion film of this caliber. It offers a glimpse into the collaboration and teamwork among the filmmakers, animators, and other creative talents involved in the project, highlighting the importance of effective communication and problem-solving in the filmmaking process. Finally, it serves as an inspiration for aspiring animators and filmmakers by demonstrating how a unique vision and a commitment to artistic excellence can result in a visually stunning and emotionally resonant film.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: a better understanding of stop-motion animation techniques, an appreciation for the importance of attention to detail in the filmmaking process, and insights into the challenges and triumphs faced by the creative team throughout the production.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0847833542\u003C/p>\u003Cp>\u003C/p>\u003Ch2 id=\"5-animated-storytelling-2015\">\u003Cstrong>5. Animated Storytelling (2015)\u003C/strong>\u003C/h2>\u003Cp>\"Animated Storytelling\" explores the art of storytelling in the realm of animation―various techniques and strategies used by animators and filmmakers to create compelling and emotionally engaging narratives through animation.\u003C/p>\u003Cp>Storytelling is at the heart of every successful animated film. Whether it's a short film, feature-length animation, or even a marketing animation, the ability to tell a captivating story is essential. This book serves as a valuable resource for animators, filmmakers, writers, and anyone interested in understanding the intricacies of animated storytelling.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: learning about the fundamental elements of a good story and how they apply to animation. This includes character development, plot structure, pacing, and creating meaningful conflicts and resolutions. \u003Cbr>The book also discusses the importance of visual storytelling and how animation can enhance the emotional impact of a narrative through the use of visuals, color, and animation techniques. \u003Cbr>Animated Storytelling is also highly practical, diving into case studies of successful animated films and how their storytelling techniques contributed to their success. Readers can gain valuable insights from real-world examples and apply these lessons to their own projects.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0134133652\u003C/p>\u003Cp>\u003C/p>\u003Ch2 id=\"6-sketching-for-animation-2016\">\u003Cstrong>6. Sketching for Animation (2016)\u003C/strong>\u003C/h2>\u003Cp>\"Sketching for Animation\" focuses on teaching aspiring animators the essential skill of sketching and how it relates to the animation process. It covers various aspects of sketching, including character design, storyboard creation, and visual storytelling, all of which are critical in the early stages of animating a project.\u003C/p>\u003Cp>Sketching is the foundation of animation: before animators bring characters to life through movement, they start with sketches to develop the characters' appearance, personality, and expressions. Storyboarding, a form of sketching, is also crucial for planning the sequence of events in an animated film. This book not only teaches sketching techniques but also emphasizes the importance of observation, creativity, and experimentation in the artistic process.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: mastering basic sketching skills such as anatomy, perspective, and gesture drawing. It may provide insights into using sketches as a tool for visualizing ideas and refining the storytelling aspects of an animation project. \u003Cbr>The book also offers tips on creating dynamic and expressive characters through sketches, allowing animators to bring out emotions and personality traits effectively in their animations.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-1474221443\u003C/p>\u003Ch2 id=\"7-the-animator%E2%80%99s-eye-2012\">\u003Cstrong>7. The Animator’s Eye (2012)\u003C/strong>\u003C/h2>\u003Cp>\"The Animator's Eye\" studies the art of observation and how it plays a crucial role in the work of animators. It explores the concept of \"seeing\" like an animator, training one's eyes to notice and analyze movements, gestures, and expressions in the world around them. The book emphasizes the importance of keen observation as a foundation for creating authentic and believable animations.\u003C/p>\u003Cp>Observation is a fundamental skill for animators because they must understand how real-life movements and interactions work to bring characters and scenes to life. By honing their observational abilities, animators can infuse their work with realism, depth, and attention to detail.\u003C/p>\u003Cp>This book offers practical exercises and insights to help animators develop their observational skills, from studying human and animal movements to capturing the subtleties of facial expressions. It encourages animators to step away from their desks and immerse themselves in the world, observing and analyzing the actions and emotions of people and nature.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: learning how to observe movement and anatomy accurately, understanding weight and balance in character animation, and recognizing the significance of small details in creating more convincing and compelling animated performances. \u003Cbr>The book discusses the importance of maintaining a sketchbook and constantly sketching from observation, fostering a habit of continuous learning and improvement for animators.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0240817248\u003C/p>\u003Ch2 id=\"8-setting-the-scene-2011\">\u003Cstrong>8. Setting the Scene (2011)\u003C/strong>\u003C/h2>\u003Cp>\"Setting the Scene\" studies the art of creating visually stunning and immersive settings for animation. It explores various aspects of designing and crafting environments, backgrounds, and locations that serve as the backdrop for animated stories.\u003C/p>\u003Cp>A well-designed setting can enhance the storytelling, set the mood, and create a sense of place and atmosphere for the audience. This book offers valuable insights and techniques for animators, background artists, and anyone involved in the visual aspects of animation. The book covers topics like perspective drawing, color theory, composition, and creating depth and dimension in animated backgrounds. It also explores different artistic styles and how they can be used to evoke specific emotions or convey the tone of a scene.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: learning how to effectively use visual elements to set the mood and tone of an animation, creating a sense of realism or fantasy as required by the story, the importance of continuity and consistency in the design of environments to maintain a cohesive visual narrative. \u003Cbr>The book also discusses the use of lighting and shading techniques to add depth and realism to animated scenes, as well as practical tips for efficiently creating detailed and captivating backgrounds using examples from major studios.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0811869874\u003C/p>\u003Ch2 id=\"9-directing-the-story-2008\">\u003Cstrong>9. Directing the Story (2008)\u003C/strong>\u003C/h2>\u003Cp>\"Directing the Story\" focuses on the art of storytelling in animation from a director's perspective. It explores the role of the director in shaping the narrative, characters, and overall vision of an animated project. The book delves into the creative decision-making process, communication with the team, and the director's responsibilities in bringing a compelling and cohesive story to life on the screen.\u003C/p>\u003Cp>Storytelling is the backbone of any successful animated film, and the director plays a pivotal role in guiding that process. This book provides valuable insights into the mindset and approach of a director, helping aspiring directors and animators understand the challenges and opportunities involved in leading an animated project, including the collaborative aspects of directing and working with animators, voice actors, and the production team to bring the vision to fruition.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: learning how to craft a compelling and engaging narrative, understanding the importance of character-driven storytelling, and mastering the use of visual storytelling techniques to convey complex ideas and emotions. \u003Cbr>The book emphasizes the significance of clear communication and effective leadership in the animation industry, guiding readers on how to work with a team to achieve a unified vision for the project.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0240810768\u003C/p>\u003Ch2 id=\"10-creativity-inc-2014\">\u003Cstrong>10. Creativity, Inc. (2014)\u003C/strong>\u003C/h2>\u003Cp>\"Creativity, Inc.\" is a book written by Ed Catmull, one of the co-founders of Pixar Animation Studios. The biography delves into the journey of Pixar and provides valuable insights into the company's creative process and the principles that have contributed to its success as a leading animation studio.\u003C/p>\u003Cp>\"Creativity, Inc.\" offers a rare glimpse into the inner workings of Pixar, a studio renowned for producing critically acclaimed and beloved animated films. Ed Catmull shares his experiences, challenges, and triumphs in building and sustaining a culture of creativity and innovation within the company.\u003C/p>\u003Cp>The book covers topics like the importance of fostering a creative and open work environment, the significance of collaboration and constructive feedback in the creative process, and the value of embracing risk and failure as opportunities for growth.\u003C/p>\u003Cp>\u003Cstrong>Main takeaways\u003C/strong>: The emphasis on creating a culture where creativity can thrive. Catmull shares valuable lessons on how to cultivate an environment that encourages creativity, where artists and storytellers feel empowered to take risks and push boundaries. \u003Cbr>The book highlights the significance of embracing the iterative process of filmmaking, where ideas are constantly refined and improved upon through collaboration and feedback. This approach allows for the creation of high-quality animated films that resonate with audiences on both an emotional and artistic level. \u003Cbr>\"Creativity, Inc.\" may provide insights into effective leadership and management in a creative industry, demonstrating how to balance the needs of the artists and the business aspects of running a successful animation studio.\u003C/p>\u003Cp>\u003Cstrong>ISBN\u003C/strong>: 978-0812993011\u003C/p>\u003Cp>\u003C/p>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\u003Cp>The animation industry evolves at a rapid pace, but these classic books will remain relevant for more years to come. Whether you want to learn more about the technical or managerial aspects of animation projects, there are more books out there that we haven't covered: make sure to send us your recommendations!\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cem>Books are incredible mentors, but you can also\u003C/em>\u003Ca href=\"https://discord.com/invite/VbCxtKN?ref=blog.cg-wire.com\">\u003Cem> join our Discord community\u003C/em>\u003C/a>\u003Cem> to learn from 1000+ animation experts from all over the world. Come hang out, it only takes a minute to say hi!\u003C/em>\u003C/p>",{"uuid":989,"comment_id":990,"feature_image":991,"featured":23,"visibility":24,"created_at":992,"updated_at":993,"custom_excerpt":994,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":995,"primary_tag":996,"url":997,"excerpt":994,"reading_time":176,"access":36,"comments":23,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":998},"335ae722-e5d2-42b2-87ca-519e82ad51df","64e363f1820cd50001499031","https://images.unsplash.com/photo-1594312915251-48db9280c8f1?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIyfHxib29rfGVufDB8fHx8MTY5MjYyNjE0NXww&ixlib=rb-4.0.3&q=80&w=2000","2023-08-21T15:17:37.000+02:00","2026-03-26T10:10:02.000+01:00","In any field, learning is essential. Growing skills is an essential part of all careers. Of course, we learn a lot by practicing but taking time to nurture the theory is important to perform better in any field. And animation is no exception. ‌\n",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},"https://blog.cg-wire.com/animation-books/","\u003Cspan style=\"white-space: pre-wrap;\">Photo by \u003C/span>\u003Ca href=\"https://unsplash.com/@elisa_cb?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Elisa Calvet B.\u003C/span>\u003C/a>\u003Cspan style=\"white-space: pre-wrap;\"> / \u003C/span>\u003Ca href=\"https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit\">\u003Cspan style=\"white-space: pre-wrap;\">Unsplash\u003C/span>\u003C/a>","/posts/animation-books","2023-08-21T15:56:31.000+02:00",{"title":984},"animation-books","posts/animation-books",[1005],{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},"xLT_XuLU5ISjT7lZ5Lm8Sa5jzw0lItxJo3foEhod7hM",{"id":8,"name":9,"slug":10,"profile_image":11,"cover_image":12,"bio":13,"website":12,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":16},{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},{"id":1010,"title":1011,"authors":1012,"body":12,"description":12,"extension":17,"html":1014,"meta":1015,"navigation":36,"path":1027,"published_at":1019,"seo":1028,"slug":1029,"stem":1030,"tags":1031,"__hash__":1033,"uuid":1016,"comment_id":1017,"feature_image":1018,"featured":23,"visibility":24,"created_at":1019,"updated_at":1020,"custom_excerpt":1021,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":1034,"primary_tag":1035,"url":1024,"excerpt":1021,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":1025,"og_description":1021,"twitter_image":12,"twitter_title":1025,"twitter_description":1021,"meta_title":12,"meta_description":1026,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"ghost/posts:cg-pipeline-series-list-of-the-most-popular-cg-tools.json","Most Popular CG Pipeline Tools (2026)",[1013],{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},"\u003Cp>The softwares involved in a CG production are key components of the project success. Which is why, to be able to evolve in this field, you’d better know them. They are so important that software names has become part of the vocabulary in all the studios. Everyone expect you to understand what they mean when they mention Nuke or V-Ray.\u003C/p>\u003Cp>On top of it all, there are more and more softwares. So if you want to set up a pipeline for your studio, it’s better to know which does what. So to start with our CG pipeline series we decided to list the main softwares available on the market.\u003C/p>\u003Ch4 id=\"generalistic\">Generalistic\u003C/h4>\u003Cp>Generalistic tools allow you to perform the main operations required to build a animation movie : modeling, texturing, rigging, animation and rendering. They are the root of the production and will structure all your work\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"http://www.autodesk.com/products/maya/overview?ref=blog.cg-wire.com\" rel=\"noopener\">Maya\u003C/a>: It’s the default choice for the bigger studios. Many artists know how to work with it and its high customisability make it the first choice for complex pipelines.\u003C/li>\u003Cli>\u003Ca href=\"http://www.autodesk.fr/products/3ds-max/overview?ref=blog.cg-wire.com\" rel=\"noopener\">3DSMax\u003C/a>: Lots of small shops love 3DS. Its feature list may be less attractive than Maya but it’s a simpler tool. Its plugins are numerous and make incredible work. This is the main reason why small teams are more productive with it.\u003C/li>\u003Cli>\u003Ca href=\"http://blender.org/?ref=blog.cg-wire.com\" rel=\"noopener\">Blender\u003C/a>: It’s a Free and Open Source software. So, it means it doesn’t come with any license fee and is highly customisable. It works great, but the downside is that most artists are not familiar with it and it has less features than its proprietary competitors.\u003C/li>\u003Cli>\u003Ca href=\"https://www.sidefx.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Houdini\u003C/a>: Houdini is a complete suite but it attracts people mostly for its VFX capabilities. Through a nodal system, it allows to build more complex effects. For other aspects it performs well too. And because of the progress made at each version, it’s considered as a big challenger of Autodesk solutions.\u003C/li>\u003Cli>\u003Ca href=\"https://www.maxon.net/en/products/cinema-4d/overview/?ref=blog.cg-wire.com\" rel=\"noopener\">Cinema 4D\u003C/a>: It is one of the simplest tool. It’s great to start with 3D and it works better with very small productions.\u003C/li>\u003C/ul>\u003Ch4 id=\"modeling\">\u003Cstrong>Modeling\u003C/strong>\u003C/h4>\u003Cp>Even if most of the modeling is done inside generalistic tools, recently, we saw emerging tools specialized for precise tasks of the modeling process. Here is the list of the most popular of them.\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"http://pixologic.com/?ref=blog.cg-wire.com\" rel=\"noopener\">ZBrush\u003C/a>: This modeling software allows to build 3D models like you were a sculptor. Be aware that its user interface is particular.\u003C/li>\u003Cli>\u003Ca href=\"https://www.autodesk.com/products/mudbox/overview?ref=blog.cg-wire.com\" rel=\"noopener\">Mudbox\u003C/a>: It’s the Autodesk equivalent of ZBrush. It may be a little bit less powerful but it offers a better integration with Maya or 3DS Max.\u003C/li>\u003Cli>\u003Ca href=\"http://www.marvelousdesigner.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Marvelous\u003C/a>: It’s a tool focused on textile. Using tradition fashion design technics; it allows you to create various and realistic clothes.\u003C/li>\u003Cli>\u003Ca href=\"https://3dcoat.com/?ref=blog.cg-wire.com\" rel=\"noopener\">3DCoat\u003C/a>: It’s a all-in-one tool box to bring your models to the next level through advanced shading and sculpting.\u003C/li>\u003C/ul>\u003Ch4 id=\"texturing\">Texturing\u003C/h4>\u003Cul>\u003Cli>\u003Ca href=\"https://www.foundry.com/products/mari?ref=blog.cg-wire.com\" rel=\"noopener\">Mari\u003C/a>: It has a similar approach as ZBrush but with texturing. It allows to paint textures directly on the 3D model.\u003C/li>\u003Cli>\u003Ca href=\"https://www.allegorithmic.com/substance?ref=blog.cg-wire.com\" rel=\"noopener\">Substance\u003C/a>: It allows you to build texture in many ways: 3D painting, materials generator and library, and procedural toolset.\u003C/li>\u003C/ul>\u003Ch4 id=\"compositing\">Compositing\u003C/h4>\u003Cp>When the images are ready, the cheapest way to adjust and improve them is to work directly on the rendered shots. Another common usage is to include VFX or matte paintings in a traditional movie shot.\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"https://www.foundry.com/products/nuke?ref=blog.cg-wire.com\" rel=\"noopener\">Nuke\u003C/a>: Nuke propose a nodal approach of video compositing. It makes it harder to manage but also allows you to create very impressive shots. It is also non-destructive, the original movie is kept intact and can always be changed.\u003C/li>\u003Cli>\u003Ca href=\"https://www.adobe.com/fr/products/aftereffects.html?ref=blog.cg-wire.com\" rel=\"noopener\">After Effects\u003C/a>: After is the Photoshop of video compositing. It can deliver good results quickly but it comes with limitations when you have to deal with complex shots. Beware that his approach is destructive, you lose original information.\u003C/li>\u003Cli>\u003Ca href=\"https://www.blackmagicdesign.com/products/fusion?ref=blog.cg-wire.com\" rel=\"noopener\">Fusion\u003C/a>: Cheaper alternative to Nuke. It has a nodal system too and can provide great results too for modest productions.\u003C/li>\u003C/ul>\u003Ch4 id=\"2d\">2D\u003C/h4>\u003Cul>\u003Cli>\u003Ca href=\"https://www.toonboom.com/?ref=blog.cg-wire.com\" rel=\"noopener\">ToonBoom\u003C/a> (Storyboard Pro and Harmony): It’s now the standard of the industry to manage story boards. Their animation tools do a great job too.\u003C/li>\u003Cli>\u003Ca href=\"https://www.adobe.com/fr/products/photoshop.html?ref=blog.cg-wire.com\" rel=\"noopener\">Photoshop\u003C/a>: No need to introduce you one of the most used software in the digital art industry. In 3D productions, it mostly helps with texturing and matte painting.\u003C/li>\u003Cli>\u003Ca href=\"https://www.adobe.com/fr/products/animate.html?ref=blog.cg-wire.com\" rel=\"noopener\">Animate CC\u003C/a>: It’s the Flash animation tool from Adobe, modernized and compatible with HTML5.\u003C/li>\u003Cli>\u003Ca href=\"http://tvpaint.com/?ref=blog.cg-wire.com\" rel=\"noopener\">TVPaint\u003C/a>: A wonderful tool to handle 2D animation. It’s better adapted for hand-drawn animations.\u003C/li>\u003Cli>\u003Ca href=\"https://krita.org/?ref=blog.cg-wire.com\" rel=\"noopener\">Krita\u003C/a>: It’s the best open source tool for digital painting. Its popularity is growing fast among the studios.\u003C/li>\u003C/ul>\u003Ch4 id=\"rendering\">Rendering\u003C/h4>\u003Cul>\u003Cli>\u003Ca href=\"https://www.solidangle.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Arnold\u003C/a>: It is considered the best render engine but also as the most expensive.\u003C/li>\u003Cli>\u003Ca href=\"https://www.vray.com/?ref=blog.cg-wire.com\" rel=\"noopener\">VRay\u003C/a>: Fast and comes with many capabilities. The drawback is its complexity but fortunately, its large community provides a lot of tutorials.\u003C/li>\u003Cli>\u003Ca href=\"http://www.autodesk.com/products/mental-ray-standalone/overview?ref=blog.cg-wire.com\" rel=\"noopener\">Mental Ray\u003C/a>: It’s not considered as the best render engine but it has the advantage of being free.\u003C/li>\u003Cli>\u003Ca href=\"https://renderman.pixar.com/view/renderman?ref=blog.cg-wire.com\" rel=\"noopener\">Renderman\u003C/a>: This engine is made by Pixar. It provides great results but requires technical skills to be used at its full potential\u003C/li>\u003Cli>\u003Ca href=\"https://docs.blender.org/manual/en/dev/render/cycles/?ref=blog.cg-wire.com\" rel=\"noopener\">Cycles\u003C/a>: It’s the render engine from the Blender foundation. It provides good results while being free and open source.\u003C/li>\u003Cli>\u003Ca href=\"http://guerillarender.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Guerrilla\u003C/a>: Great control over lightning, it is easily customization (lua or python scripting) and comes with a scene builder. Its performances are above the market too.\u003C/li>\u003C/ul>\u003Cp>\u003Cstrong>Lookdev / Scene Assembly\u003C/strong>\u003C/p>\u003Cp>You may want to work on the artistic aspect of things before building your shots. Good news, there are tools dedicated to this job!\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"https://www.linkedin.com/company/isotropix/?ref=blog.cg-wire.com\" rel=\"noreferrer\">Clarisse\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"https://www.foundry.com/products/katana?ref=blog.cg-wire.com\" rel=\"noopener\">Katana\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"http://guerillarender.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Guerilla\u003C/a>\u003C/li>\u003C/ul>\u003Ch4 id=\"render-farm-manager\">Render Farm Manager\u003C/h4>\u003Cp>Once your studio is getting bigger you will need to do more and more intensive rendering. For that a render farm will be mandatory. To manage it and follow the state of your rendering jobs, you will need a dedicated software. Here is the short list of the most reliable:\u003C/p>\u003Cul>\u003Cli>\u003Ca href=\"http://deadline.thinkboxsoftware.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Deadline\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"http://www.renderpal.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Render Pal\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"http://www.royalrender.de/?ref=blog.cg-wire.com\" rel=\"noopener\">Royal Render\u003C/a>\u003C/li>\u003C/ul>\u003Ch4 id=\"production-management\">Production management\u003C/h4>\u003Cul>\u003Cli>\u003Ca href=\"http://guerillarender.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Shotgun\u003C/a>: It’s the standard of the industry. It fits well with any kind of projects and make the joy of many development team. But this great set of features come with a complexity and need of customisation. It often leads to hiring a dedicated software engineer to integrate it in your pipeline.\u003C/li>\u003Cli>\u003Ca href=\"https://www.ftrack.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Ftrack\u003C/a>: It’s Shotgun’s biggest challenger. It comes with similar features with a more modern interface. It’s simpler but a little bit less flexible than Shotgun.\u003C/li>\u003Cli>\u003Ca href=\"http://nim-labs.com/?ref=blog.cg-wire.com\" rel=\"noopener\">NIM Labs\u003C/a>: NIM is more focused on the asset management part and the publishing / validation of files. It provides a ready to use scene opener and saver and a simple validation tool.\u003C/li>\u003Cli>\u003Ca href=\"https://www.toonboom.com/products/producer?ref=blog.cg-wire.com\" rel=\"noopener\">Producer\u003C/a>: it’s dedicated to work with Harmony / Toonboom tool suite. It’s mainly aimed at 2D productions.\u003C/li>\u003Cli>\u003Ca href=\"http://cg-wire.com/?ref=blog.cg-wire.com\" rel=\"noopener\">Kitsu\u003C/a>: it’s the main tool we develop at CGWire. We focus on simplicity and ease of use. It makes production management accessible to anyone.\u003C/li>\u003C/ul>\u003Cp>That’s it! This list gives you a quick glimpse of the softwares implied in CG production. If you start your next production from scratch and want to choose your own tools, be aware, than sometimes the best solution is not to take the best software for the task. Using a generalist software can make a smoother pipeline and provide you with a better overall quality. At the end of the day, It really depends of the people and the budget available to you!\u003C/p>\u003Cp>We hope you enjoy that overview. If you think think that a software is missing, please mention it in the comments, we will gladly add it to the list.\u003C/p>\u003Cp>NB: We also maintain a list of Free and Open Source software that you could use in your pipeline, feel free to contribute : \u003Ca href=\"https://github.com/cgwire/awesome-cg-pipeline/?ref=blog.cg-wire.com\" rel=\"nofollow noopener\">https://github.com/cgwire/awesome-cg-pipeline/\u003C/a>\u003C/p>\u003Cp>\u003Cem>Writing mainly about softwares and pipeline doesn’t mean we don’t enjoy looking at beautiful pictures too. If you would like broader topics and curated content about the CG industry in general, you can follow us on \u003C/em>\u003Ca href=\"https://x.com/cgwirekitsu?ref=blog.cg-wire.com\" rel=\"noreferrer\">\u003Cem>Twitter\u003C/em>\u003C/a>\u003Cem>!\u003C/em>\u003C/p>",{"uuid":1016,"comment_id":1017,"feature_image":1018,"featured":23,"visibility":24,"created_at":1019,"updated_at":1020,"custom_excerpt":1021,"codeinjection_head":12,"codeinjection_foot":12,"custom_template":12,"canonical_url":12,"primary_author":1022,"primary_tag":1023,"url":1024,"excerpt":1021,"reading_time":326,"access":36,"comments":23,"og_image":12,"og_title":1025,"og_description":1021,"twitter_image":12,"twitter_title":1025,"twitter_description":1021,"meta_title":12,"meta_description":1026,"email_subject":12,"frontmatter":12,"feature_image_alt":12,"feature_image_caption":12},"aaf9eeef-fbbc-4089-a5db-1066cba357b6","7fb39ff6d062","https://storage.ghost.io/c/be/86/be86007c-1b95-476e-8b3b-895720c0d138/content/images/max/800/1-xuNUOx_iYm6nbhEtcy0n6w.png","2017-04-24T01:29:45.000+02:00","2026-03-27T10:59:10.000+01:00","The softwares involved in a CG production are key components of the project success. Which is why, to be able to evolve in this field…",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},"https://blog.cg-wire.com/cg-pipeline-series-list-of-the-most-popular-cg-tools/","CG Pipeline: List Of The Most Popular CG Tools","The softwares involved in a CG production are key components of the project success. Which is why, to be able to evolve in this field, you’d better know them. They are so important that software…","/posts/cg-pipeline-series-list-of-the-most-popular-cg-tools",{"title":1011},"cg-pipeline-series-list-of-the-most-popular-cg-tools","posts/cg-pipeline-series-list-of-the-most-popular-cg-tools",[1032],{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},"wItVOtWN9j9E692JYUKk_Pb87LLtEHnTd-KBS6wkvPE",{"id":280,"name":281,"slug":282,"profile_image":283,"cover_image":284,"bio":285,"website":286,"location":14,"facebook":12,"twitter":15,"meta_title":12,"meta_description":12,"threads":12,"bluesky":12,"mastodon":12,"tiktok":12,"youtube":12,"instagram":12,"linkedin":12,"url":287},{"id":978,"name":113,"slug":119,"description":12,"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"url":116},[1037,1041,1045,1049,1053,1057,1061],{"id":48,"title":49,"body":12,"description":12,"extension":17,"meta":1038,"name":49,"navigation":36,"path":54,"seo":1040,"slug":56,"stem":56,"__hash__":57},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1039,"url":53},{"posts":52},{"description":12},{"id":59,"title":60,"body":12,"description":12,"extension":17,"meta":1042,"name":31,"navigation":36,"path":64,"seo":1044,"slug":32,"stem":32,"__hash__":66},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1043,"url":33},{"posts":63},{"description":12},{"id":68,"title":69,"body":12,"description":12,"extension":17,"meta":1046,"name":69,"navigation":36,"path":73,"seo":1048,"slug":75,"stem":75,"__hash__":76},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1047,"url":72},{"posts":35},{"description":12},{"id":78,"title":79,"body":12,"description":12,"extension":17,"meta":1050,"name":83,"navigation":36,"path":84,"seo":1052,"slug":86,"stem":86,"__hash__":87},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1051,"url":82},{"posts":52},{"description":12},{"id":89,"title":90,"body":12,"description":12,"extension":17,"meta":1054,"name":95,"navigation":36,"path":96,"seo":1056,"slug":98,"stem":98,"__hash__":99},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1055,"url":94},{"posts":93},{"description":12},{"id":101,"title":102,"body":12,"description":12,"extension":17,"meta":1058,"name":102,"navigation":36,"path":107,"seo":1060,"slug":109,"stem":109,"__hash__":110},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1059,"url":106},{"posts":105},{"description":12},{"id":112,"title":113,"body":12,"description":12,"extension":17,"meta":1062,"name":113,"navigation":36,"path":117,"seo":1064,"slug":119,"stem":119,"__hash__":120},{"feature_image":12,"visibility":24,"og_image":12,"og_title":12,"og_description":12,"twitter_image":12,"twitter_title":12,"twitter_description":12,"meta_title":12,"meta_description":12,"codeinjection_head":12,"codeinjection_foot":12,"canonical_url":12,"accent_color":12,"count":1063,"url":116},{"posts":35},{"description":12},1776340313377]