29_pixelman, the good the bad

i’ve been working more with the pixelman program and trying to work out if i like the results. i’m at a crossroads with the project in terms of 3d, and i need to decide soon whether to pursue it (despite huge technical difficulties and an even huger expected cost (£5000?)). i may decide to stick to long exposure video and images which i know i can produce.

so far i’ve been using Poser’s default actions (walking, running etc) and using the default human male = James. it’s time i introduced some content into the project (odd saying this 1 year in). Looking at Peter Jansen’s work you can see that the poses he considers successful are quite specific; poses where not everything is in motion. for example there might be a dancer who is circling their hards but not their feet. this makes the models, sequenced over a second or two, readable as an action. for a lot of everyday actions the limbs’ motions blur over each other and you just end up with a blob as i was about to find out.

i decided to make a model of me in bed turning from one side to the other. i thought this would be simple enough as the motion is contained in a small space and the sculpture would work as a relief, may even look crucifix like. i have fixed positions i turn in bed from left to right – always the same, for some reason, so i could film these and then mimic them in Poser. so the first task was to transform James into Tim.

Photo Lineup

Poser has a neat (but like so much else in Poser, brittle) tool to input your own face using just two photos which provide the texture. These can be lined up roughly and it is suprising how effectively this works, in combination with some simple parameters, in my case extending the nose:

adding hair in another room (a wig) helps:

still needs tweaking – the chin is too proud for example. Poser goes over the top providing so many parameters that it’s easy to get lost – as every tweak effects every other tweak. for now this head will do.

Poser hip action
next i looked at the basic purpose of Poser (again it’s suprising i’ve taken a year to get to this), which is posing – moving all the limbs into place. this too is straight forward if a little fiddly in places (why there aren’t realistic constraints on limb position i don’t know). i took some film of me turning over – this was edited to a tidy 100 frames (4 seconds) and then each 25 frames i matched the poser figure and save as a keyframe. a key find here was that the whole body of any pose is centred on the Hips, so by turning/twisting them the whole figure moves. then the abdomen twists on this , the chest on the abdomen and so on. everything connects. Poser has a great interpolation functionality so it will fill in the limbs for you moving between the keyframes. this took several hours. by the way i haven’t worked out how to reduce the musculature of the figure (i don’t have a body like that). in this case Poser is missing a parameter – and for now i don’t want to be altering the x/y/z scaling of all 20 odd muscled body parts. below is a render of the first keyframe.

The entire sequence was exported as 100 OBJ files. Then i ran it through the program to convert an OBJ (or series of OBJs) and their associated texture maps into colored cubes (pixels). I was interested in seeing what the pose would look like at different resolutions – as although the pixel method lets me know where everything is precisely it can become memory greedy storing 1million 3d data points. The first output resolution was way too low, resulting in this pile of bricks:

i increased the resolution until the model was made from 1cm cubes, not every frame is used – i think every 10th one to save time:

this was big disappointment, any sense of the motion is lost – it just looks like a pile of rubble. the head is at the top by the way. partly the problem is due to the body being pretty much the same color (it may help to clothe the figure in tshirt and pants), but also just due to too many body parts overlapping (or passing through the same cube point of space). looking at a single frame below is not pretty either – just looks cruddy. the resolution is too low but i’m at the limits of the program’s capacity. i’ll need to work out ways to increase the capacity to store data, there are ways of doing this – easy enough but they slow everything right down.

wondering why this was so ineffective i decided to up the resolution and look at a single frame (below) – again this came out nasty. the resolution is still too low and the figure looks as if it might as well have been sculpted out of clay, crudely sculpted too. the reason for using poser in the first place was to create accurate body shapes and this has got lost somehow.

i decided to check the sequence in Rhino with the mesh figures again taking every tenth frame (or 10 bodies) to see whether it looked interesting at all:

and i’m not particularily convinced by this either. if the idea of the project is to objectively visualise the space passed through by a human in motion then the resultant sculpture is very hard to read. it looks more like a pile of writhing bodies – the sense of motion has been lost. so back to the drawing board. i still think this sequence has potential – but my visualisation methods aren’t bringing it out. perhaps i need to simplify the motion – keeping one leg still and not moving my head so much.

noddies
for my next attempt i decided to stick to something much simpler – just the head. i’d make two sculptures – one of me nodding my head sideways (NO) and another of nodding my head vertically (YES). This would require a closer look at how Poser builds faces. The two problems are eyes and hair – Poser has unique and bizarre ways of dealing with these, great for 2d renders – crap for 3d modelling.

EyeTrans
To color a face Poser needs two texture maps – one for the skin and one for the eyes. here they are:

The trouble is when you view the OBJ exported from Poser in Rhino the eyes are black like below.

This is because of the fiddly way an eye is constructed – there’s an eyeball, a pupil, an iris, and then the whole lot is surrounded by a Transparent layer (EyeTrans). presumably this gives some nice reflective eye visuals for 2d rendering , but Rhino wasn’t picking them up correctly. The solution was to ignore the Poser EyeTrans coloring and pass the Eye.jpg to that mesh. You do this by changing a line in the MTL file for that mesh. I also needed to recolor the Eye.jpg from green to blue. In the pixelman.java code i wrote lines which only use the meshes i need. so i ignore the Gums, Teeth, Tongue, Pupil, Iris, Eyeball, Eyelashes…

bad hair

hair is done by outputting lines [l=v1/vn1/vt1 v2/vn2/vt2 …] in OBJ files. Rhino ignores these altogether. i replaced all the ls with fs but that didn’t work. some of the hair lines are 20 verts long. the black streaks (below) are supposed to be the hairs (some 8000 of them) and the red parts are the roots, colored red so that i could work out what was going on. In Poser it is possible to model each hair individually with weight, springiness etc.. – which is too much for my needs. i’ll have to write code to deal with lines in an OBJ file later on – for now i’ll just use the texture map hair which sticks flat to the head shape.

So here’s a single pose to check everything is working at a low resolution=250. resolution is just a scaling factor in my program (which is multiplied by the x,y,z, coords to give new values approximately in the human range – ie a scale of 250 makes a human pixelman about 170cm high)

I wanted to increase the resolution but without adding too many extra cubes that the program runs out of memory. I added a new variable called tightness (not a great name) into the program which helps decide whether these cubes intersect the faces of the meshes. Previously this was set to 1 so it would add extra cubes as long as they were within 1.0 units distance to the surface. below is a head with a much finer scale=1000 and tightness=0.1. you can see this was a little too holey:

the balance was about scale=750. the tightness i left at 0.1 because althought this is holey for a single pose the idea is that across a series of overlapping poses (and the nodding heads are 21 frames each) the holes would naturally get filled in. so finally i ran the series through the program and came up with the two models below:

these i like – and will try and build at about 30cm across each. either using foam-board/wood/? – i need to talk to some sculpture technicians at camberwell. also i need to make the face look more like me – perhaps add proper hair, and expand the pose ie move the nose a little wider and higher.
i like the idea of these two heads looking at each other across a corridor – the interim show is in two weeks, i’m going to try and get them done for that.

two final additions needed:
1. continuousness (fill the pixels interpolated between two consecutive poses)
2. set pixels color to the average of any mesh which passes through each pixel (currently it just holds the color of the first pixel to pass through)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: