Posts in "Long Moos"

The Great Cow Frame Mover

Last night I decided to start putting together the script that will do the real work of moving all my frames into their respective folders. I had to jump slightly ahead of where I was in Automate the Boring Stuff, but not by much. At this point I’m starting to pick things up a little faster.

By this afternoon, with some repeated failures that turned out to be a case of Windows Explorer not updating fast enough, I had a script that sorted and moved files from one central folder into a bunch of separate folders. It turned out surprisingly simple, and while it still needs to be setup to operate on user input rather than hard-coded directories, the functionality is what I figured it should be.

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG" data-image-dimensions="919x471" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/37889a8b99.jpg" width="919" height="471" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/37889a8b99.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a980185e-a615-4fa1-ba2c-8e8ff5719bd1/script_earlier.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
  
    </figure>
  

























































  

  
    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG" data-image-dimensions="466x890" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/868b1f502a.jpg" width="466" height="890" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/868b1f502a.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/9f83a0d8-89fb-4153-8b95-96d32d873631/output_meh.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
  
    </figure>

But, as with most things, I wasn’t happy with that. As you can see by my big #TODO note, I wanted the user feedback to be a little cleaner. Instead of printing something on on every single frame it was moving, I only wanted it to print each shot once. After it finished one shot’s frames and moved onto the next, print the next one. That way we know the script is running but it’s not this insane machine gun effect of essentially the same line over and over.

As you may also note, I sort of worked out the logic of what I should be doing instead, and immediately set off to create that. This initial version was looking at the folder full of EXR files and then iterating over every single one of them, using a regular expression to extract the shot name and then move it to where it needed to go. This meant printing any sort of feedback would happen on every single frame. It also meant running a chunk of code on every single frame.

Inverting My Approach

I figured if I only wanted something printed out when the shot number changed, then the easiest way would be to iterate through a list where the shots only appear once. So I flipped everything on its head and used the VFX directory as my list. I then used the glob module to find all files that contain the folder’s name, which itself returns a list of matches. I could then just iterate through that list and move those frames to where they need to go. So just one line of code being repeated the most, rather than four.

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG" data-image-dimensions="738x551" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/c6b8587aa2.jpg" width="738" height="551" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/c6b8587aa2.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/a6a69b08-bb0d-4d9e-ae03-f45d888b1a7e/script_later.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
  
    </figure>

My initial test of this didn’t work quite right. My test folder has all 116 folders created for Brothers’ Quarrel, but I’m only testing on a few shots. So what happened was the first few shots gradually spit out "Moving [shot] to [directory],” but then it rapidly spit the same line out for all the rest of the shots. I had forgotten that I’m iterating through the entire shot list, with no regard for whether or not frames exist for them. Hence my little conditional checking if the frames list contains anything. If the glob module checks for a shot name that doesn’t exist in the files it’s looking at, then it’ll return an empty list. It’s length will be 0, which is false, and the line won’t be printed. It amuses me how often programming is about preventing something from happening.

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG" data-image-dimensions="545x199" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/b702cd4d63.jpg" width="545" height="199" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/b702cd4d63.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/22a76fda-1f62-4adc-ab8f-e38ed2f35bff/output_cleaner.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
      
      <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
        <p class="sqsrte-small">Much cleaner.</p>
      </figcaption>
    
  
    </figure>

My task for the rest of the night is to set this up to run in the command line and take some user input, so the file paths can change. For now I’ll let it assume my file hierarchy, because I’m the only one using these scripts. But I am thinking about making things more open ended in case anyone wants to fiddle with them. None of this is even on GitHub at the moment anyway.


7/18/20 Edit: I realized as I climbed into bed last night that I forgot to actually time the two scripts. My assumption that the second way would be more efficient turned out to be correct. While iterating through every frame in the source folder and executing a block of code each time, moving 550 or so files took 14.13 seconds. Running the updated script, which I updated further to only execute the move when the glob returns a list, the same set of files were moved in 11.05 seconds.

First, Let Me Build a System

When I decided to document the process of completing all the VFX from scratch on Brothers’ Quarrel, I didn’t think about how much work the videos would be adding on top of everything. I also hit a massive snag as I started developing episodes, when I realized that one major step was… horribly tedious and not ripe for anything remotely educational.

Premiere is not designed for this

My method in recent years for exporting image sequences out of Premiere was straight-forward, albeit tedious as hell. But I figured it was just something you do once, so whatever. I would double-click a clip in the timeline, right-click it in the source monitor, and tell it to make a subclip. I’d paste a base name and change the shot number. Rinse and repeat.

Then I could grab all the subclips at once and export them with the same EXR settings… and a base output directory. But then I’d have to go down the line in Adobe Media Encoder and change the output of each clip so they’d render to their correct directories. Another tedious step.

Bending the Project Manager to my Will

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG" data-image-dimensions="810x702" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/5d571007f7.jpg" width="810" height="702" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/5d571007f7.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/3a0225b4-b209-4a57-99d1-29b9b5535132/project_manager.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
  
    </figure>
  

























































  

  
    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg" data-image-dimensions="590x829" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/acf827c9d6.jpg" width="590" height="829" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=750w 750w, https://blog.natecow.com/uploads/2026/acf827c9d6.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/ced9e674-b6ab-4d5e-850b-8a11b07260c1/presets_example.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
  
    </figure>

There had to be a better way. And I found one… kind of. Turns out Premiere has a Project Manger that can do something I’ve been wanting, namely render handles of any length. There are a few “gotcha’s” though. For one, this tool is meant for archiving. It’s designed so that you can save the source media you absolutely need in order to keep this project renderable, while being able to trash all the original stuff to save space. It does this by re-exporting each clip in your timeline(s) to a format meant for editing, such as ProRes or DNxHD. No EXR or image sequence options. I mean, why would there be? You don’t edit in those formats.

BUT! I noticed you could import a preset, and these appeared to be the same presets Premiere uses in the exporter. Ah, think I, if one can save a preset to a file, then the existing presets in this list must also be files somewhere. Turns out they’re deep in this labyrinth of mysteriously named directories (see image). Spoiler: the EXR ones are at the end. Just start there.

So I was indeed able to load in the EXR preset into Project Manager, and we’re nearly in business. There’s this whole other issue with getting things named correctly, and a particular head-scratcher when using the same source clip multiple times in the timeline, but I got all that sorted and I’ll cover it in a YouTube video.

“That last fiber connection”

There’s a great anecdote on the appendices of The Two Towers about the remote workflow Weta built in 2002 so that Peter Jackson could review work being done in New Zealand while scoring in London. They managed to setup a high speed fiber connection going half-way around the globe, but for some reason, it stopped about a mile from where Peter was staying. (I’m sure there’s a fascinating story behind just that little tidbit).

The solution was to load whatever New Zealand sent onto an iPod, which at the time were just 2.5” external drives that could be side-loaded with anything, and then physically walk it down the street. We had the same sort of Sneakernet when I was on Captain America and Thor, but by design, since our main office had no internet connection for security reasons.

All this to say that often times we get a ton of pieces working together, and then end up with some break point right at the end, where there’s no clean way to finish the job. It happens all the time, especially with workflows in VFX. In my case, it should be expected. I’m using an archiving feature of an NLE that is not really a go-to for big budget, VFX-heavy projects, so no one at Adobe probably thinks this is a pressing need. And that’s fine with me. Premiere is what I have and know, so I’m going to make this work.

Enter Python!

For those that don’t know, I took a break from VFX for a couple years and got into web development. Specifically, I built WordPress themes so I spent a lot of time learning and working in PHP, JavaScript, jQuery, HTML, and oh so much CSS. I learned a lot from my Systems Administrator at the time, and he was a big fan of Python, so I wanted to learn that so I could talk shop with him more.

I fell in love with it. And when I came back to VFX, I lucked out in that Nuke and Silhouette both utilize Python. Oh the possibilities… I dabbled in customizing Nuke along the way, just sorta figuring stuff out as I went. I built some basic tools for myself that now probably litter the Los Angeles compositing departments (if you see something with Cow at the beginning, it was probably me). I went through Ben McEwan’s Python For Nuke 101 course, which I highly recommend. I’ve recently been getting far more obsessed with all this thanks to Ben, especially since he recommended Automate the Boring Stuff With Python (which is FREE!).

All this is driven by the fact that I need to make that last little fiber connection in my Premiere export workflow. Premiere will dump all the EXR files into one folder. Just thousands and thousands of files. So what I’ve been doing these past few weeks (months? What is time anymore?) is the first in what will probably turn into a full suite of tools. I need to look at all the files in the folder and move them into their respective shot directories.

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG" data-image-dimensions="1328x535" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/5a46976bf3.jpg" width="1328" height="535" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=750w 750w, https://blog.natecow.com/uploads/2026/5a46976bf3.jpg 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/bf3ed14a-3cdc-4ba4-8232-4a8077788412/exr_sequences.JPG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      
    

    
      
      <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
        <p class="sqsrte-small">Seriously. Not touching any of that without code.</p>
      </figcaption>
    
  
    </figure>

This has involved learning several things, such as Regular Expressions to parse the filenames (basic string manipulation works too but is more prone to breaking, and harder to read), learning how to navigate and interact with the file system and using the os and pathlib modules, and how to actually screw with files. And between all this has been just learning how VS Code works, setting up virtual environments, learning how to properly install modules and making sure things run every time… you know, all the intimidating stuff that usually drives you away from getting too far into this in the first place. Or was that just me?

But I have some really specific things I need to do, and I need to do it to show it on my YouTube series. And I’m getting closer and closer to needing to put that episode out. So hooray for actual motivation! It may seem like I’m going overboard with all this. And I probably am. But I think going overboard with things is exactly how all my saber duels came about in the first place. It’s how I’ve ended up where I am now.

There is a certain hilarity in my learning like 15 other things so that I can avoid just having to shift-click 116 different groups of files and drag them into folders, a task that I could have done in one mindless day. I think Randall Munroe put it succinctly…

    <figure class="
          sqs-block-image-figure
          intrinsic
        "
    >
      
    
    

    
      <a data-sqsp-image-classic-block-image-link class="
            sqs-block-image-link
            
      
    
          " href="https://xkcd.com/1319/" target="_blank"
      >
        
      
        
            
            
            
            
            
            
            
            <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png" data-image-dimensions="404x408" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://blog.natecow.com/uploads/2026/5d99b8d4f5.png" width="404" height="408" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add("loaded")" srcset="https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=750w 750w, https://blog.natecow.com/uploads/2026/5d99b8d4f5.png 1000w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/649742452099a26cee84b10b/edbf242b-7031-4389-8b0e-ee072f224623/xkcd_automation.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

        
      
    
      </a>
    

    
  
    </figure><p><img src="https://blog.natecow.com/uploads/2026/9aeb086634.jpg">

Silhouette - Academy Award for Technical Achievement

Earlier this year (2018), I was asked by the developers of Silhouette to put together a reel (below) of my most impressive roto work to date to be presented to the Academy for a SciTech Award consideration.

I can’t really explain what it feels like to know one’s work can be considered a representation of the capabilities of the software. As I continue down the path of compositing, I can think of no better way to put my roto career to bed than having contributed to this well-deserved award.

Silhouette will remain a vital tool for me, and I will continue to recommend it to any aspiring artists who are looking to break into the industry through this crucial and noble skill.

From Silhouette’s Facebook page:

Yesterday, we received news that Silhouette won an Academy Award for Technical Achievement.
Special thanks to Adam Bradley and Eddie Soria of Weta Digital, who demonstrated as part of the awards process, the most complex and articulated roto and paint I have ever seen. It was nothing short of amazing. Also, thanks to Nathaniel Caauwe for putting together an impressive rotoscoping reel and sample footage for demonstration. We could not have done it without you guys. Finally, thanks to all of you for using our tools, and helping us make them better all these years!
— SilhouetteFX

<a href=“https://www.oscars.org/news/9-scientific-and-technical-achievements-be-honored-academy-awards" class=“sqs-block-button-element–medium sqs-button-element–primary sqs-block-button-element” data-sqsp-button target="_blank”

Oscars Announcement