GeNiE is a piece of labout saving software I am currently designing which will allow me to speed up creation of Good'N'Evil. At the most basic level it is a way of managing all the pre-written macros and scripts which I currently use to speed up comic production, with a visual layout manager.
Right now, if I want to make a comic, I need to create the set, decide the coordinates where the characters will go and input all the right variables into their creation scripts. When I first made GnE, the fariables I had was the tilt of the head, the rotation, standard wing/feet positions ot indicate movement, mouth emotion, mouth openness and eye-openness. I later added the angry/sympathetic tilt of the eyes.
But of course as time went on I wanted more variation. I added placeholders to send whole other objects into the character's hands. Of course the bend of the arms would have required either set positions or (horror of horrors) 6 extra creation variables. It got to the point where in the new models (which I really have been building since I said the new software had arrived) gained actual hands, and then it just became silly. the number of vriables became too immense and I realised I needed some way of manipulating the characters without constantly editing their scripts or givingthem a million input variables.
When I canned the first GnE universe with a long awaited tear in the space time continuum I needed a break from it all for a while.
Now however as I look forward to a shift in my academic gears, I have put a lot of thought into how to use my skills for good (and evil) and I have decided to code a program which will handle all the character details for me.
How will it work?
I should probably point out right now that I know sod all about inverse kinematics, 3D graphics programming or how the raytracrer works. I will not be reinventing the wheel with this software. What I hope to produce is a way of files which contain both a simple set of vector details alongside povray macros.
The main function of this program will be to show me a little stick and ball figure on screen, let me move the joints and then automatically generate a whole character, using the povray code. That way I can load in an actor, shift the limbs like I was working with a little claymation bloke, position the camera and generate the pov source for the entire scene. Then it renders it and lets me start on the next bit.
Presented here on this page will be a production diary of this software so you can all see how I'm doing. This will have several milestones:
1) Coding the viewer. Until I'm sure that what I see on screen is what pov will render, the software is useless.
2) Coding the basic object classes. The basic object classes are Limbs, 1,2 and 3 way axes, extenders and point nodes.
3) Coding a basic model to test with
4) Upgrading it to the point where I can sucessfully render a GnE strip. This will involve a subclass of object which contains many of the above object classes controlled by several macro variables.
5) Rebuild Geoff, Eric, Ginger, Ayiiika, Colin, the dragon, and the new sets into the vector format.
6) Begin GnE Season 2.
Let's get to work!
Progress Report 1
As you may have guessed from the author of a comic which hasn't been properly updated for a YEAR, GeNiE has been started later than intended. I will still endeavor to get the first strip out of it by the end of august. It just may not involve all the characters yet (the longest proces is going to be putting the characters into it).
So first proress report.. I think we need a screensot!
Okay so what are we looking at here?
That my friend is the result of spending hours working out the way in which POVray projects 3D coordinates to 2D screen positions.
Actually that's only half of what that is.
Basically that object data is in memory (more on that later) as raw geometry and pov code. The pov code is simply:
Simple, eh? but that little baby is mapped onto every single one of those ball and sticks on screen. to give this:
This is a quick example of how what you get on screen matches up with what you get on the render. Obviously if the code given to the objects were to perturb from these shapes, it wouldn't match quite so closely, but this was designed to match exactly to make sure on about 50 test renders from multiple angles that the sphere sizes centres and positions always matched up.
Now lets talk about objects. In the original GNE characters were written in raw POV code as macros, with a few input values to quickly change the position of feet (sat/stood/running) the position of the mouth, the eyes, simple things.
When I wanted to do something more complex, say for example, design a pose for the arm, I had to open the original macro which contained severalsub macros for the precise positions of arms, feet, wings, and if i wanted ot change anything further I had to open up THOSE macros, and it all got far too complicated.
So when designing GeNiE I decided I wanted to be able to load in an actor and simply turn the arms, etc to whatever position I wanted. for that I had to arrange the body parts in a tree structure. Hand bones connected to the wrist bone, the wrist bones connected to the arm bone, etc.
The object in the above screens is a test of that structure. As it would have taken a long time to put a usable character in and seeif the bones worked, I instead put in 10 tendrils of 100 randomly jiggling links.I call it Doctor Octopus, because it helps me with debugging!! (like because Doc Ock was spiderman's arch enemy and spiderman's sort of a bug and, ah screw the lot of you).
Right now I can generate as many of these random fern-like buggers as I like and render them from any angle, but that isn't getting any comics done. Stage 2 beckons, the ability ot place and move actual actors.
Progress Report 2
Everything is running behind right now. And I mean everything.
Either way I am here again with another update of GeNiE, almost at the end of phase 2. The actors can be manipulated but not yet placed or moved. Eitherway I thought I'd give you a couple of shots of how it moves and the basic feel of the articulation system.
This shows my test figure, Crazy Bob. Crazy Bob is a very simple articulated figure who basically has arms legs and a head. The output is still done with spheres and tubes, as soon as the articulation is finished, the next stage is the ability to rewrite the underlying code on each segment.
The controls just underneath show the two kinds of articulation motion. The one with the cross hairs and the dot is the x/y rotator. The circle with the line is the twister. For an example of the three kinds of motion, visualise the following parts of your body.
Single axis movement: Your knuckles (not the first knuckle but the last two) on each finger can ronly rotate back and forth. This is single access movement. This is also seen on your elbows and knees.
Double axis movement: you remember those first knuckles I said to disregard above? Well that's because as well as rotating back and forth, they can also sort of wiggle side to side. You neck, shoulders and hips do this too, but they also have a third axis...
Triple Axis movement: Your elbows can only turn in one axis, but you can still fold your arms, this is because your shoulders can also twist. Not much, but they can. Your wrists, feet and neck are all able to rotate along the axis of the bones, which in GeNiE is always the Z axis and it's called Twist.
Using these 3 axes you can basically model a whole human being completely. Bob however had no hands or toes, no articulating spine and his head is a sphere so when it turns, you can't tell! When the motion system is finished and I can have more complex objects, the true form of Crazy Bob will be revealed. But for now he's just an array of spheres and cylinders in a rather fetching red.
Remember, there are always more updates on the way, even if they're a bit slow...
Watch this Space!
This comic is hosted on KeenSpace a free webspace provider for online comics.