So as mentioned in a previous post, I’m making an animated movie now. Even though I have some game programming experience, it’s kind of a new thing. So as a beginner, the most important question to ask is “Who should I learn from?”

Not the photo-realism maniacs

People who don’t know nothing about art thinks that it’s just about assembling some fake thing that look like the real thing. If the Mona Lisa painting didn’t look like Mona Lisa, it wouldn’t be good. Also, Leonardo da Vinci must have been very good, since he was able to paint Mona Lisa, and not something else out of an infinite number of things that aren’t Mona Lisa (the woman). It’s like hitting the bullseye, it’s like sinking a putt, it’s like scoring a basket.

Then the engineers have to go and spoil the party by inventing cameras: uh oh, now you don’t need any skills to take a picture of any person you see. I thought that’s when people would just give up pursuing realism, but apparently not. Although it makes me feel like a conspiracy theorist, but there must be a dark secret behind this.

Not the 3D “artists”

So this is how you make a realistic eye in Blender:

  • Human: just map the picture to the UV as fast as you can.
  • Computer: just take a the texture along with UV and splat that over a spherical mesh as fast as you can.
  • The viewers: yeah that looks like an eyeball, I guess, I’ve never looked at an eyeball in such details actually. Ew, those blood vessels are kinda gross.

I’ll contemplate suicide if I have to do this for a day job for any extended period of time, seriously.

Not Nvidia

I have an inkling feeling that Jensen Huang is trying to sell more GPU at a higher and higher price. That’s why we’re doing all this ray tracing that nobody gives a shit about. Can’t prove it though.

Also maybe I’m the only one not impressed by modern CGI.

Not the “smart” tools

I took a look at an animation software called “iClone”, which is advertised to make animation “easier”. I got interested and watched through 60 of their videos, only to find stuff like this and this.

Guys, I know what it looks like for a hand to go on a shopping cart! Why would I wanna animate that? Why would I wanna watch that? Why would you make a tool that encourages people to make boring bullshit faster? If anything, bullshit should be made slower, so people make less of it because nobody wants to see it.

Oh and what about AI? Yeah… the trick is that photographs are too played out. People say that it’s just “copying reality”. We’ll need to copy from somewhere else. Bam! I got an idea: let’s copy from other human artists! Science win again! We’re so smart and clever, the plebs will never figure it out.

Fine art is fine… but inefficient

I’m not gonna paint every single frame of this movie by hand from scratch. There are too much 3D computation as well as effects that could be left to machines. And even with 3D the computation in place, I still don’t like to render the scene by hand. It is very inefficient to draw by hand (for our particular purpose).

For example, every time you use the lasso selection tool, you’re reminded that you just want a particular eye or a part of the hair; and that you didn’t put that on a separate layer. Because layers is a pain in the butt. If you accidentally draw on a wrong layer, God helps you dude. If you’re lucky, maybe it’s just a line that you can cut & paste onto the correct layer. But if you’re not, ya just gotta redo everything then.

So what do we do?

By “we” I really mean “We”: I think animation should be easy and accessible for everyone. Sure, you have to learn things in order to create things, but the knowledge should be general and easy to learn. It needs to be some fundamental about animation, not some quirks of a specific software. For example, you wanna learn how to best light a scene to convey atmosphere. You don’t wanna learn how to hide the visibility of the light icon in program X.

No fancy hardware: I should be able to do this on my Macbook, which is already a super-computer. If I have 10,000x the computing power of the one we used to land on the moon, I should be able to draw some image on the screen. I won’t get scammed by Jensen Huang. I don’t need RTX 3090 to do render my scenes. Heck, people are still drawing frame-by-frame animation with their bare hands. We’re gonna be okay with a smartphone probably.

I’d prefer to have pure keyboard control, vim-like modal editing. Mouse/stylus control doesn’t scale: the bigger your display, the more strain is put on your hand. Plus everyone programs with a keyboard anyway, I don’t wanna incur a cost to switch between programming and modeling/animation, etc. We do lose a bit of precision without a pointer device, true, and I’ll need to look out for that.

We can program the animation, the modeling, camera, lighting, sound, everything under the sun. No need art skill, we only need programming skill. The advantage of programming is that it is repeatable and editable. Wanna experiment with proportions and fine details simultaneous? Go on ahead, we can always fix proportions afterwards. No need to do things in stages, no need, planning, sketching, or “trusting the process”. Just do the most exciting things first, we can fix everything later, much like authoring a computer program.

UI is the thing I want to program the most. What if I want the program to display a certain UI element when this tool is used? What if I want to make a tool that is like a fusion of two tools, and I can press tab to switch between those? What if I want the undo system to not record the changes made by this particular camera? Think I’m making this up? Maybe somewhat, but definitely not that last part.

I want the process of creation to be freaking awesome: minimalist UI (which is possible when you only have the keyboard), don’t put spaghetti sauce on the screen. See this? It’s like a video game: there are 2 colors: one for text, one for background. The text is giant. See the giant blinking cursor? It’s telling you exact what to do (and where to do it): just type something and make magic happen! How could you not be hooked on that! Now take a good look at your favorite 3D software…

I disagree with Steve Jobs about trying design computers to be as intuitive as possible to everyone. I don’t need design skills, because I can just change things to work however I want them to. Make it easy, make it shiny, make it “accessible”, and you will end up with the most archaic, mediocre tool. Progress isn’t gonna be made by pleasing everyone.

Some criticism you might have

“Can you really create a complicated 3D software, wouldn’t that take hundreds of people decades to create?”

For starters, even if I were to mirror all the core features, the workload is already significantly reduced:

  • I’m not “reinventing the wheel”, I will reference open-source code others have written. Reimplementing features is way easier than researching and writing things completely from scratch.
  • No need to fix all the bugs, just debug it when it comes up
  • No need backward-compatibility
  • No need support all the platforms: Mac, Windows, Linux, x64, Arm, etc.
  • No need extensive documentation
  • No need “code review”, release notes, interpersonal communication, management, etc.
  • No need “intuitive” interface, industry standard, etc.
  • Small, solo codebase = Fast changes + Fast build time = Fast iteration

But anyway the main point is, I don’t need 99.9% of the features one can find in other software.

On customization

I don’t believe customization is an adequate mechanism to transform an off-the-shelf program into your “perfect” (reads “not completely aggravating and tyrannical”) tool. For a program I wrote, I don’t need to customize it, I can just modify the source code. Sure, some programs allow you to customize its UI. But I can’t even phathom being able to do this in the custom layer of an off-the-shelf software. Heck, I can’t phathom implementing an off-the-shelf software that has customization this powerful.

How complicated must your program be in order to endure all these customizations? You need an insane number of if-statements and hooks, most of which does not do anything for anybody all of the time, just sitting there wasting CPU cycles and bloating the code. Not mentioning that settings can fight each other in ways that you can’t even comprehend.

How complicated must your customization layer be? Do you plan to explain every little switch and slider in English completely and correctly, which btw has to also be updated with every code change?

Also, how would you as a user even go about implementing such customizations? It’s hard enough to program computers, and on top of that I have to program against an API abstraction that may or may not have the functionalities that I WANT? Are you sure you can convert your programming problem into a little text prompt so that you can Google/ChatGPT your requirements and pray that there’s a settings you can set to change it?

“You don’t gotta change the default settings that much, just do what others do and you’ll be fine.”

I have no problem with that sentiment. If it works for you, it works for you, and people who work like you. But as per my goal, we’ll need to get a lot better than “fine”.

“But if you wanna customize that much, why aren’t you making your own hardware too?”

Because there is only one way to type on a keyboard, or point and click with the mouse, or draw with a stylus. Sure, you may adjust the sensitivity or repeat key delay, but overall there’s not much to be done. The CPU, RAM and SSD wouldn’t get in my way as long as it’s fast enough (and it is way faster enough). These are resources, kind of like electricity and water: I don’t care where it came from, as long as there’s enough of it (and there’s no poison in the water.)

Meanwhile there is an infinite number of ways to make an art software. Are you sure you agree with the author of the tool on how you should do things? Do you know if you even understand it. Are you certain that it won’t inevitably change in the future?

I do believe that good hardware is very important. But I have a good, cheap Corsair keyboard that I have absolutely no complaints about. Do I think that the keyboard is the best tool for the job? Definitely not, I know for certain that no tool we have right now can hold a candle to the future brain interface.

“I don’t see you making your own, say, web browser!”

The difference is that I don’t spend 8 hours a day browsing the web. I don’t spend a lot of effort perfecting my creation on the web. I only use browsers to read stuff. I have opinions and suggestions for improvements, sure, but the shortcomings don’t offend me that much.

Working tools aren’t just tools, they are you in a sense. It’s no big problem to me if my Netflix experience is a bit worse than optimal. It’s a life-changing detriment for me if my art tool isn’t the best that it can be.

“I think you just suck at Blender/Unity/insert your favorite program

It’s true, I suck at these tools. And I think also they suck, the fact that I don’t know something well doesn’t mean I can’t make my own judgements about whether to use them or not. And my judgement certainly might change. But I probably won’t spend time trying to “master” these software, unless I find out somehow find out later that they do exactly what I want to (the probability of which is 0%).

“People have used to do marvelous things, that means they must be good"

That argument falls apart as soon as you realize people used to draw frame-by-frame animation by hand. Tools are judged based on how much they help people, not on the end results.

“But didn’t you say you hate computer programs?”

Well, programming is also art (as Don Knuth would agree). I would hate it if you reuse programs. But if you write custom programs for your film, I don’t see how that wouldn’t be a breeding ground for awesomeness. I’d watch Area 5150 Demo over any generic 3D animation any day of the week.

“But Khoa, artists don’t know programming. Aren’t you just playing into your advantage while excluding others?”

Maybe, but I really don’t know how else to accomplish stuff otherwise. Plus, if you do digital art, you really should understand how computers work. And if you don’t, you won’t be able to make a movie on your own. If you rely on computers to do work, you should know how to manipulate them, at the lowest level that gets work done (and that you’re comfortable with).

Also, aren’t you guys colluding with Jensen Huang to exclude poor people?

“But Khoa, if you make a different program, how do you work together with the people who use program X?”

To that I say, “I don’t have to!” Once we have a brain interface, you can make full-length movies entirely in your head over the weekend. No need pipelines, editor, storyboard, concept art… You just imagine the scene and it will appear on a screen for others to see, hear, and touch.

Why would you wanna cooperate? Cooperation with other human beings is one of the most inefficient thing. Rather than cooperation, you can just learn from others. They’ll be able to tell you what they did, and then you can just do it. Cooperation should be at the level of knowledge sharing, not at the level of individual artistic work.

Note that even with the brain interface, we’d still need software. But only as a composition tool and not an “Oh my God this thing holds all my data and I need it in order to do anything” tool.

“But if everyone can make movies by themselves with their own program, how would I get a job as an X specialist?”

I don’t care. Look, do you wanna watch movies or not? Are you serious or are you just playing around?

People like to divide skills into classes. Because that’s how we’re conditioned by society: here’s the math class, here’s the art class. You don’t draw in the math class, you don’t do math in the art class. Plus it’s convenient, too: if you assume the other “specialists” are doing a fine job, you get to ignore a whole class of skills.

I don’t think this way of thinking has any basis in reality whatsoever. I know for a fact most people suck at their job. If you want something good, you gotta do it yourself (Napoleon said that, maybe.)

“Who the heck are you to be making bold claims about software?”

I know I’m not a stellar programmer. However, I’m good enough to know where the good programmers are. Here is a video of an industry veteran echoing exactly what I said. (And I found this after basically drafting the whole article, so you can’t say I’m parroting anybody.)

What is the likelihood they used our exact constraints? (Spoiler: 0%)

The key point of the video is that if you know the constraints, you can solve the problem so much more efficiently, it’s orders of magnitudes faster. And to illustrate the point: 1 order of magnitude would turn a 5-year production into a 6-month production. And if it’s 2 orders of magnitude, it’d only take 18 days. You have no idea the amount of acceleration made possible with technology, if you’re smart enough to use it right.


<
Previous Post
AI will destroy human society, and we can't stop it
>
Next Post
The Movie Project