Ben Clark builds a giant

I’ve just stumbled across this lovely modelling tutorial where Ben Clark takes a sketch and builds a base model, sculpts it, builds new topology, UVs, bakes, textures and Rigs it.

The Making of the Giant

The Giant

Everything you need to know about Normal Mapping

Eric Chadwick has been working very hard on the Polycount Wiki, and has just released a massive amount of information about Normal Mapping that pretty much covers all the tech you need to know.

Maxscript wiring function for roll/twist bones

When working with lots of rigs you want to automate as much as possible, especially as they become more complex. I’m working with Character Studio Biped as a base, and then adding custom roll/twist bones on top of this, so it made sense to take the time out to develop a script that could connect up several rollbones in a rig so that I’d get the same results every time. The first and most obvious thing to do was to create these extra bones using script, so I wrote a function called BuildNewBone that builds a new bone between two points and links it to a parent.

The next step was to connect these new bones to the Biped system so that they would behave in the way I wanted, rotating based on the underlying rig. Biped is a relativley closed system, so to query the rotation of Biped bones you need to expose the internal values using expose transform helpers. I set these up via script, so that as well as always having the same name I can position them on screen and even set their colour for easy identification.

Wiring rollbones in max uses the paramwire.connect command, and this takes three variables: the driving or controller bone (in the case of Biped I use the aforementioned Expose Transform Helper as the driver), the bone you want to affect, and a control expression which controls the amount of twisting.

With twist bones like the forearm twist you will most likely want to affect them on the X axis only so that as the hand rotates the rollbone will twist around the forearm bone. Bones like a neck roll however will roll in all three axis. Also in the case of the twist bones like the upper arm twist bone which is parented to the clavicle then you require it to follow the driver bone (in this case the upper arm) 100% in the Y and Z axis.

What I was finding was that I was calling the paramwire command several dozen times to link up an entire skeleton, sometimes calling it 3 times in a row with the same rollbones just to specify a different axis each time.

To makes thing easier for myself, I ended up writing a function to wire rollbones where I could simplify this to a single call:

-- Wire up a Local rotation rollbone given a bone to roll, a controller object and a roll amount per axis.
-- If any of x, y or z are 0, skip the wiring for that axis (inherits parent rotation)
fn wireRoll theRollbone theDriver xr yr zr = (
if xr != 0 then
(
controlExp = "Local_Euler_X*" + (xr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_X] theRollBone.rotation.controller[#X_Rotation] controlexp
)
if yr != 0 then
(
controlExp = “Local_Euler_Y*” + (yr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_Y] theRollBone.rotation.controller[#Y_Rotation] controlexp
)
if zr != 0 then
(
controlExp = “Local_Euler_Z*” + (zr as string)
paramWire.connect theDriver.baseObject[#Local_Euler_Z] theRollBone.rotation.controller[#Z_Rotation] controlexp
)
)

So with a calf roll that is parented to the calf bone, I want it to make it rotate 50% in the X axis as the foot rotates in the X axis:

wireRoll $'L Calf Roll' $eTM_LFoot 0.5 0 0

Uncanny Valley

Uncanny Valley Youtube Link

The phenomenon can be explained by the notion that, if an entity is sufficiently non-humanlike, then the humanlike characteristics will tend to stand out and be noticed easily, generating empathy. On the other hand, if the entity is “almost human”, then the non-human characteristics will be the ones that stand out, leading to a feeling of “strangeness” in the human viewer.

From: http://en.wikipedia.org/wiki/Uncanny_Valley

The Art of Black and White Photograpy

photo bookI picked this up yesterday for the princely sum of £1 in the Bric a Brac shop next to the Roseleaf. It’s £13 on Amazon and worth every penny.

Surprise Attack! (focus)

flickr



Surprise Attack! (focus)

Originally uploaded by Rick Stirling.

I built a lightbox today. I don’t have proper lights, but I spent ages playing with mirrors, bouncing my flash with foil, diffusing the flash with tissue paper and generally mucking about. A great learning experience.

Tramlines

flickr



Tramlines

Originally uploaded by Rick Stirling.

Tramlines next to the Charles Bridge/Karlov Most, Prague, Czech Republic.

Education vs Selfteaching part 2

After reading a recent article about a graduate not being able to get a job (and the resulting furore surrounding it), I thought I should revisit my short post on Education vs Self teaching. Previously I had had stated that I thought education was becoming more relevent (but not there yet), and I still stand by that.

However by revisiting this in light of Brian Nathanson’s article and after looking at his portfolio I thought there were some others things worth mentioning. Brian didn’t seem to have a portfolio - he had a collection of images, some of which were based on his coursework at college. The truth is that a university education isn’t there to build a portfolio for you, it’s there to teach you how to use the software via a series of assignments. You get an understanding of how everything works, but the finished works are not relevant to a portfolio. In much the same way I learned French at school (with a passing grade), but I wouldn’t use my French homework on my CV to get myself a job as a translator.

As Adam Bromell said, you have to throw away everything you have done on your course and create your own portfolio using the TECHNIQUES you have learned. That’s the real reason you went to the class.