Demo progress: I'm morphing into an "artist"

I’m slowly becoming a non-programmer. I’m UV-mapping the meshes, welding the vertices, exporting and importing back and forth and computing normal/AO maps. I’ll probably even go and code some procedural material shaders in the next couple of days. That’s weird, nobody’s doing real programming at the moment; the code part is seriously lagging behind.

We should have had (is that proper English?) the wall fracture+physics by now and some of the interactive mode character controls (animation blending etc.). Alas, none of that right now.

In the picture there’s a fragment of wall decorations and it’s object space normal map (just to add more colors). The texture, gloss map and some real lighting isn’t there yet.


Blender: first try; UV mapping

Tried Blender this weekend. Well, long story short: I’m totally impressed!The long story is this: for our demo we need normal mapping, ambient occlusion and similar stuff. Now, these do need unique UV parametrization of the models. The sad facts are: 1) 3dsMax sucks at automatic UV unwrapping, 2) nVidia’s Melody, which I use to compute normal maps, also didn’t impress me with it’s auto-UV calculation much, 3) our 1 and a half of the “artists” are really busy doing models and animations.

That leaves me, the humble programmer, at the task of calculating normal maps / ambient occlusion, with the “minor” task of getting good UV parametrization from wherever it’s possible.

I knew that Blender has got LSCM unwrapping some time ago (does any of the “real” 3D packages has got it yet? Hellooo? :)) and decided to give it a try.

And I must say it rocks. 3dsMax keeps irritating me all the time (it’s good that most of my tasks are/were writing exporters). Blender is small, slick and the workflow seems to be much more efficient.

Given my nearly non-existent “UV mapping skills” I’ve unwrapped a pretty tough character model (see images - mapping such fingers ain’t easy) in something like 4 hours. I guess with a little practice, I could get that to 1-2 hours. This probably isn’t impressive for a real artist, but hey, I’ve been doing nothing but writing keywords, identifiers and semicolons for the last 8 years :)


Ambient occlusion

Ambient occlusion is really cool. Yeah, precalculated occlusion for animating objects is fake, but with some hacks it’s still very cool. Why I didn’t use it before? :)Here, a small shot comparing no-AO with AO (super small because it’s still work-in-progress, I’m not sure if my teammates would be very happy with me showing big screens :)).

Ah, at the bottom there are “my” soft shadows that I’ve written about earlier, but nothing can be seen in such a small shot. Oh well; shadows will be the story for another day.


Code dependencies

They suck! Well, this probably isn’t fresh news to anyone, but right now I’m working with code where basically everything includes everything else. The code is template-heavy so that makes things even worse. Try changing that file without 20 minute rebuild later - good luck!

Yeah, I know, the code is a product of 2 years of wandering in the darkness :) - prototyping, adding something and removing something, and when you constantly have to actually produce “working demos” in short timeframes, it ain’t easy to actually sit down and refactor whole thing. Oh well, the reality…

Still, code with lots of dependencies does suck of course.

On the other hand, I’m pretty happy with the module I’m writing. All the outside just needs one header file that’s right now 76 lines long and that includes only very basic “resource id” header file. The insides of my module also need some of the outside functionality; I’ve written some “outside interface” for that - a header file with something like 50 lines and also absolutely no includes.

That’s what I consider to be a low-dependency interface. That’s good. That doesn’t suck :)

[EDIT] The code I was referring to isn’t so bad (e.g. it really doesn’t “includes everything else”, but “includes quite large amount of stuff”). I’m just somewhat frustrated at the moment, and anything that’s not very ideal in the codebase irritates me.


Software usability

Some time ago I thought that 3dsMax had pretty bad usability (hey, it doesn’t even do real hit testing :)). 3dsMax is nothing compared to one certain CAD package that I’m writing customizations for at work!