Learning to code can make you a better artist

As a CG artist, you might think coding skills aren’t particularly important for you. However, during my experience between big, medium and small studios I’ve noticed that being able to develop your own set of tools is crucial and brings with it some advantages for your own work. My first contact with programming was back when I was a photographer. I needed to create a portfolio and as a starting photographer, I couldn’t afford to hire a programmer. So I talked to a cousin, who introduced me to the world of coding. She spent an afternoon and half of the night just showing me how, with basic HTML and CSS, I could create a terrific website to showcase my photography. She gave me a great gift in what would become two of the most important habits in my career that opened my world as an artist to new lines. First, she gave me the ability to solve my own problems and second, she gave me the initial curiosity for developing code. The key part of the story with my cousin is she showed me that if a solution isn’t readily available, you can create one for yourself. Actually, that’s exactly what happens when you work in the CG industry. There are several people trying to develop and create tools for artists; tools that are amazing and work incredibly well. However, there’s always going to be times when you don’t have the exact tool to help you with your specific objective. When you come across a situation like that, you’ll often need to create a tool to finish your work. Since CG is an industry that’s based on technology, I believe even as an artist you need a passion for coding and develop your skills. In my experience, I’ve found excellent solutions building my own tools.

Eliminate monotony with code

The first time this happened was when I was finishing my graduate thesis film. I was collaborating with two great artists, one of whom was an animator and the other an FX artist. My role was in the final part of the production as the lighter and compositor. However, we were extremely ambitious and our short film was about 04:50 long. As the deadline approached, I realized that if I kept repeating the same process we’d never finish our short. I had to optimize my workflow. To do this, I decided to create a set of tools that would allow me to focus more on the artistic side of lighting instead of the technical part of rendering. In our workflow, after the animator finished her shots, she passed them to the FX artist so he could work on the cloth and hair simulation. After that, I had to export all the objects and caches to a lighting file I used to apply the materials and create the layers. Doing that manually was very inefficient because I had to spend an hour or two just cleaning out the files and organizing the scenes before I even started lighting them. My solution at this point was to create some tools to handle this issue and reduce our production times very drastically. The first tool was an Alembic exporter for our pipeline. I was extremely cautious about our naming conventions for the short and that pay off really well. Using MEL, I basically selected the characters and animated objects (hair and cloth) and exported them as an Alembic cache. That was with a simple click and took only about a minute. Then, my next tool was an alembic importer, which took the same objects and imported them and organized them in the way that worked better for me. Following that, I used a script that applied the materials and look development of the film to the corresponding objects. Finally, another script created the layers and prepared the AOVs so the file was ready to render. In the end, for every shot I only spent about three or four minutes with these tools instead of the hour and a half it’d take to do it manually. This is just one example of how I’ve found building your own tools can really help speed up production. Your custom tools can not only optimize your workflow but also allow you to focus on the artistic part of the process. Another scenario I like to build tools for is gizmo creation. I love to create my own gizmos that standardize my process and avoid repetition. In most studios I’ve worked at, they’ll make these gizmos and incorporate them into their pipeline. For example, if you use a gizmo that requires a set of AOVs to work for compositing, it’ll be much faster to create a tool that’ll load the materials necessary to produce your desired result. That’s just one reason why artists in the VFX and animation industry need the skills to code and optimize processes. It’s important to work with code and try to develop analytical thinking about your own process. You should always be thinking of ways you can do your work faster and cleaner.

Coding is an art

I remember the first time I realized coding was an art form by itself. It was my first semester at graduate school and I took a “Programming for Artists” class. I was hoping to get insights into how I could use coding for a specific purpose. As it turned out, the class was about Processing, an open source language that allows artists to create exciting visuals just with the purpose of creating and expressing themselves. Processing artists are using code in the same way that classical artists were using paint. They’re thinking very creatively and analytically about their creation with code. I mentioned this because I believe an important part for CG artists to express ourselves, and to create in a better way by building our own tools. When I create a tool, to me feels sort of like preparing the canvas for my artwork. It helps me think how I can solve the problems I’ll encounter down the road. Maybe it’s just my personal way of thinking about this, but I love how every day the boundaries of artistic and technical creation are getting less distinctive. In fact, I love how the primary medium for CG artists is really just a piece of code inside a computer, but at the end you end up producing astounding pieces of art.

Code creatively

My advice is to try to be as creative as possible with your code. Try to create amazing tools that’ll build your creative process while at the same time optimize your work. This is why I love coding, and this is why I believe it’s so important for artists to have coding skills. It’s not only to fix technical issues but also to develop new techniques. It’s to create something that’ll help you in the conception of something new. In my experience, I’ve found that a majority of the most interesting advances in our industry comes from this kind of thinking. They come from people who are always constantly creating new tools.