Saturday, November 4, 2017

Substance Designer / Painter, part 3/3

Almost forgot. Had to finish up the series of Substance posts. My head always flies in all directions. Programming A.I. in Tower22 on Monday, overwork on Tuesday, making shampoo bottles in 3D on Wednesday, beating Red Alert on Thursday, saving the world on Friday, playing as architect for our new house on Saturday, and fooling around with Substance Painter on Sunday. It's not necessarily that I'm a busy man, I just forget what I did today, and start somewhere completely else tomorrow. Like my great-grandmother.

That makes it hard to *finish* things for once. Being a programmer, my whole life feels a bit unfinished anyway, as software/code is typically never done. Not at work, not for Tower22. How nice would it be to do something, finish it, then sit down and treat yourself with a beer? Not for me, there is always some work that needs attention. This Never Ending Story makes me restless. Good thing that I forget and switch tasks though, otherwise it would feel as a very, very long, dreadful trip.

So usually my 3D assets would feel half-finished as well. Starting a room or 3D shampoo bottle with a fresh spirit, but then quickly rushing it the next day as mountains of other work are still waiting as well. Making a model is usually not that hard (for architecture or basic shapes). But the devil is in details - texturing details mostly.

 So much work... For a patch of rust.

Stupid textures
When I started hobbying with 3D, somewhere around 2002, you could get away with a MS Paint drawing. Or as I did, print the UV-map lines on paper, then paint literally on paper, and scan them back in. And that was that, kick-ass. Ok, the seams sucked a bit, but who cared. A 256 x 256 resolution would "mask" such buggers anyway.

But then bumpMaps came. And specular or glossMaps (till this day I still don't know what the exact difference is). Generating such a bumpMap *correctly* would mean loads of extra work, as you either need to make the same model in super-detail first, or draw heightMaps carefully and convert them. Yes I could "draw" bumpMaps, and having the illusion of extra detail was kinda cool, but often the quality was poor and lacking time to put all that extra effort in a fucking 3D shampoo bottle, I usually skipped them.

And then it got even worse, with PBR - Physically Based Rendering. Well, not worse maybe as the industry standardized all those crazy tricks and shading hacks into a more universal set of textures, giving measurable results with input data based on actual numbers. But... how the hell do I know the exact albedo and roughness values for a sewer-sludge texture? Got to grab the physics books and calculate the IOR (Index of Reflection) for foamy slime and turds with peanuts. 

Needless to say, I didn't do that. Resulting in PIR - Physical Incorrect Rendering. God, where are those good old days of just drawing something on paper? For one of my first more serious (2D) games, I made photos of clay animated figures! Quick results & a lot of fun. And look at me now. Stuck somewhere between the PBR world, and the Dark Pixelated Side of Indy games that just say "Screw it. Throw away all fancy graphics and join the Pixel". 

Now I'm very curious what you boys & girls think about the picture above. Because T22 is basically tumbling on a graphics edge; if I want to stick with "High-Def" graphics, I need a lot of help from expert artists... The alternative is to simplify (not necessarily uglify) the graphics, which allows "lesser-quality assets" to join the game. Obviously a far more realistic path, but it feels so unnatural to spend a billion man-hours into advanced graphics, and then just drop it. Then again, as a wise man named Marcellus Wallace once said: Fuck pride.

I'm still undecided. BUT, at least the Good Graphics(tm) side sent in some reinforcements; Substance Painter. A 3D Painting program.

Substance Painter
The concept of 3D painting is nothing new. I remember doing that back in the print & scan oil-painted texture days. Also remember I wasn't very pleased with it. Yes the edge problem was sort of solved, and what you see is what you get. But the painting tools were very primitive, compared with programs like Photoshop. It... it... it just sucked.

10+ years I'm trying again, and with an inner smile this time. First of all, the navigation, brushes and painting tools all feel much better. I felt something I didn't feel for quite a while, wrestling with old fashioned tools to create unfinished C-rated quality assets. I felt FUN. It was nice to doodle, and see pretty darn good results right away.

The most importance trick that Substance Painter has in its sleeve, is that it generates multiple textures simultaneously, with PBR parameters if you like. If you paint gold, you really paint gold. Not just some brown-yellow colour, but also the corresponding "Metalness" value, Roughness/Smoothess, and eventually a micro structure that represents gold. Now gold is smooth typically, but you could also draw concrete or denim-cotton. As you paint, also the height- and/or normalMaps take over the exact same patterns. This leads to *correct* textures, without too much extra effort.
A lot to click, and I'm unpatient when it comes to learning new things. But it works pretty simple, and otherwise there are tons of tutorials, like the (Spanish) one above.

Besides the "Substance Share", where you can download/upload loads of extra brushes, materials, presets and effects, there is not too much else I can tell about it, as my trial version expired and the package is just what it is - a 3D painter. But as said, a very nice one. What matters in the end are the results. Without too much effort, I created a texture that was better than anything else I tried before, the old-skool way (in my even older Paint Shop Pro version 5). Including a proper roughness and normalMap. And a baby-smile on my face. Priceless.
Being able to generate higher quality stuff myself once again, pulls me a bit back towards the "Advanced Graphics" side, as T22 was once intended. Whether a horror game like this truly needs tiny rusty speckles and 2048k textures for a bucket of vomit is another discussion though.