What languages are used for certain tech art projects, and where should beginners unsure of discipline focus on?

This was worded weirdly, but the question came as I kept trying to learn c++ for tech art because I heard it was used and it was good to learn, but I only had blender and blender used python, but when I tried to translate any non-interactive animation related ideas into c++, even trivial ideas such as a program to make a stickman walk around, learning graphics was a daunting task and often I couldn’t read a single function in graphics libraries such as SDL and opengl, and the tutorials available were focused on making game engines. I tried to ignore that and prioritize becoming a ‘good programmer’ to become a good tech artist, but if I couldn’t read the library watching tutorials to make projects felt as if functions and code were being chosen from thin air as I wasn’t sure what prerequisites were being asked of me, and the focus already in those tutorials wasn’t to learn programming theory, it was to jump into game dev by making a game, which wasn’t as much of my goal as making tools for animation was.

While I still didn’t know the tech art projects technical artists worked on in each pipeline specifically,
I had to realize if c++ is a lower level languages generally credited for development, it wouldn’t be a good idea to tell a beginner tech artist to develop software for graphics alone before developing tools in a pre-existing graphics software. Reaching this point I felt confused because I didn’t know what to learn next, I figured tech artists before had to learn graphics programming in lower level languages to develop software and tools to use for animation and modelling, so where did things begin? Regardless, it’s probably not a path a beginner could take, much less without asking for help.

In this supposed “orgins path”, Immaturely I kept getting frustrated and wondering “who just wants to make a website? Who just wants to learn data types?”
But I kept neglecting my art studies in favor of trying to be a “Real Programmer”, so of course I didn’t have any ideas, much less apply them to the new projects I was learning. I kept getting confused on whether a tech artist should focus on becoming a good programmer “across the board” first, but I’m not sure what generalization looks like without a project/problem in mind you’re passionate about. In this wild goose chase I’m probably going to return back to learning python so I can directly make tools within the software I use, this experience left me with a question: What do tech artists use different languages for, and how does that knowledge grow holistically? Or should a tech artist just begin by finding ways to implement programming into the art they do, and grow their specific knowledge from there?
I think my problems came from an insecurity of what I would do if there weren’t open source 2d and 3d software, if there was a time where ‘technology’ and ‘art’ were on separate islands, how would you learn the tools to make the things we use today if ‘technology’ demanded learning completely unrelated things to what was considered in traditional animation, how did people end up tying it together into this industry?

The term “tech artist” and the preferred skills can vary from studio to studio. The skills of a tech artist can vary among departments and even within a single discipline. Some tech artists are more focused on the art but are able to troubleshoot problems well or can write tools to make workflows more efficient. Many tech artists were once artists who stumbled into programming, making small tools here and there, and then realized their interest in tool or workflow development.

Some tech artists make tools or provide technical support to various disciplines while others may be more focused on a specific one. Sometimes their skills can overlap between different departments. I mean, you are the bridge between tech and art, right? :slight_smile:

I know tech artists who can program in many languages and others who are novice at programming. Regardless of their knowledge in programming, they are great at problem solving and critical thinking.

Python is an excellent language to learn. Python is supported in many of the software we use in the industry. It’s also a more friendly beginner language so many of the artists that want to learning how to code tend to pick it up. It’s easy to quickly whip up a Python script, therefore many tools are written in Python. C++ is always great to learn as it’s a lower level language and you can develop more efficient plugins. Also, game engines, such as Unreal, use C++.

It’s important to understand that nobody expects you to know everything. Frequently, you will be approached with a problem. How do we do X? Can we automate Y? Most of the time, you put together your bits and pieces of knowledge about of a process or system and try to come up with a solution. Sometimes you will be asked for a tool but the instructions for what it needs to do may be explicitly outlined by the requester. What you don’t know or understand, you ask about it. There are plenty of people willing to explain and help you. At the end of the day, you’re also helping them.

It’s always hard to work on something without a goal. Sometimes, I am more likely to complete a project if I am making, for example, making a tool for someone else. Accountability can be a motivator. Is your artist friend doing a tedious task over and over again that can be automated by a tool? Do they wish for something that could help them with X? Try to pick bite size tasks to focus on instead of writing a really complex system or tool. It’s too easy to get demotivated when you’re not seeing results.

You learn what you like by doing. Find job postings for technical artists at studios that you want to work at. What are the skills that they are looking for?

3 Likes

Great question Apple!
This particular topic has been on my mind lately and answering this question is forcing me to formulate my ideas more coherently. I teach Technical Artists on a graduate level and this question is always nagging at me.

The final answer all comes down to, “Who you are and what to you want to do as a technical artist?” Your language of choice is just another tool to practice your craft. The same can be said of DCC software: Maya, Houdini, Blender. Which do you choose? The choice makes no difference as long as you deliver the product on time, make the client happy and you are happy with your work.

As a tech artist, you have one of four areas to start in: Pipeline, Rigging, Visual Effects and Rendering/Lighting. Which one would you like to start in? If you want to go into rigging, stick with Python. Python is the universal DCC language, except for adobe products, and you must be able to script in order to survive as a rigger. Since all DCCs, and many game engines, have python interfaces, knowing Python will also be a big help starting off in Pipeline or Visual Effects. However, spolier alert!, you will hit a glass ceiling at some point in your career. (I’ve lumped Technical Animation in with either Visual Effects or Pipeline; every company classifies it differently.) If you are going into JUST lighting, Python will be a tremendous help. However, as soon as you ver away from just lighting(Rendering, shading, look dev), you are going to bump into a huge glass wall.

Before I go on, I’m going to make a disclaimer. I teach all of my students Python when they come to the program. There are three reasons for this. The first is Python, IMHO, is an easy language to learn from scratch. I have a very intense curriculum and teaching the fundamentals of python fits well within my alotted schedule. The second reason is almost all DCCs have a Python interface. Each API is going to be different with their slow or fast learnning curves. Fundamental Python will give you a good foundation when learning any API. The third reason is that I have no idea of the direction my students will pursue. Some reallty hate programming and scripting. If so, they are dead-set on being entry level riggers or visual effects artists where they get their start pressing button and pulling sliders on tools they are given by their leads. Other students are more open to programming and they will naturally gravitate towards Pipeline and Rendering in an addition to Rigging and VFX.

I’m making a wild-ass-guess, but I would say 80% of all technical artists, including film technical directors, can get by with nothing more than a solid Python foundation. If you want to get started this way, the odds are in your favor that you will have a very good career knowing nothing more. However, that other 20%,(the superstars, the beasts, the generalists, the legends), are either outstanding leaders or they know C++.

I am a grumpy old curmudgeon about this, but if I had the time, at least one dedicated semester, I would be teaching all of my students C++. I have four reasons for this.

The first reason is that C++ is the Latin of all modern languages. When C++ is mastered, there is no other modern languange you can’t tackle, or at least begin to understand. When you achieve full Technical Artist status, you will be expected to learn other languages, (Python, Perl, C#, visual basic, etc.), literally overnight. You won’t be expected to be an expert. You will be expected to have some comfort maneuvering in the langauge, reading other people’s code or making small edits. Having the C++ foundation will empower you to learn a new language at the snap of a finger.

The second reason is that learning C++ will teach you proper code structure, data structure, memory handling, pointers and object oriented programming. These will empower you to work effectly with any team and using any software. You will begin to recognize universal patterns that trancend the CGI industry.

The third reason flows from the second. ALL DCCs and ALL ENGINES are written in C++. They may have Python or C# interfaces. But at their core, they are all written in C++. Having a C++ foundation makes you fearless in jumping into any code at any time in order to debug a problem. You will understand why all DCCs are ultimately the same, at their core levels. If there are deviations, they are made at a deep, core language level. Knowing C++ helps you understand how all softwares are thinking at their core level. Nothing knits asbestos underwear like a solid C++ foundation.

The fouth reason may be the most important. Knowing C++ elimates most glass ceilings you may encounter in your career. Knowing C++ empowers the technical artist to go infinitely beyond the tools they are given. Modern tools and angines are awesome and they save a huge amount of time! However, they can’t do EVERYTHING. Real-time engines are optimized, sometimes at the cost of exposure and functionality. Knowing C++ empowers the technical artist to literally do anything; provided there is enough time available to throw at the problem.

Jumping off my soap-box, I return back to my original premise. As Technical Artist and you want to jump into the CGI mosh-pit as fast as you can, knowing Python will be a great tool. However, if you want to have an unlimited, fearless career, spend the extra-time and effort and learn C++.

1 Like

Thank you for the information! I still have one more question though, while c++ is a good language for understanding the foundations of 2d and 3d software we use, are there any clear projects a beginner can begin experimenting with, or is the language curriculum more consecutive from sandboxes in the DCC with languages such as python, to the structure of said sandbox in c++? Right now the only actual c++ project I even know about is a ray tracer and even then I’m not sure if there would be any further prerequisites before I can jump into one.

Great Question Apple,

You guessed it. I myself am currently structuring an intro to C++ course creating a basic ray tracer.

Many of the APIs, (Houdini, Maya, etc.) can get a bit intimidating if you are not comfortable with polymorphisms and pointers. If you are not familiar with CGI object structure, (points, vertices and polys), things will get all the more confusing. With that said, you could always cut your teeth creating Unix SOPs in Houdini. The C++ code can be relatively short in length and you will focus creating simple, specific tasks: ie. draw cube.

As an alternative, if you are just leaning C++ you may want to try programming in UE4. I found C++ programming in UE4 very easy and quick to follow and there are several book covering the exact topic: https://www.amazon.com/Learning-C-Creating-Games-UE4-ebook/dp/B00U01QQV6 , https://www.amazon.com/Unreal-Engine-Scripting-Cookbook-William-ebook/dp/B01FR2LCF2. Udemy also offers several fine courses introducing UE4 requiring only a basic unnderstanding of C++: https://www.udemy.com/course/unrealengine-cpp, https://www.udemy.com/course/unrealcourse/, https://www.udemy.com/course/unreal-engine-the-ultimate-game-developer-course. The drawback with learning C++ this way is that you won’t learn a massive load of CGI and rendering but more Game coding. This is the reason why I am developing the C++/Raytracing course.

1 Like