I have a sketching habit. I'm also a bit of a perfectionist. This means that there isn't much middle ground - it's either a really quick, rough sketch, or I throw everything I have at it. So when I tried a couple of times to sketch out the idea for the site logo, spheres on the corners of a cube with a larger sphere in the middle, I was frustrated by my inability to get all the sizes of the spheres right.
One idea that I had was to model the object in a modelling package like Blender. However, I've tried Blender before and while I did have some limited success with it, I wasn't convinced that I'd get on with it for this task. I think I had some kind of mental sidestep when I hit upon the idea of modelling the structure in a general-purpose graphics library.
It turned out to be pretty easy to get this working in OGRE, which is a 3D library for games programming. Here's the kind of code I added to the basic sample application:
... *ent8 = mSceneMgr->createEntity("Sphere8", "sphere.mesh"), *ent9 = mSceneMgr->createEntity("Sphere9", "sphere.mesh"); #define SZ 1000 SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "Sphere1Node", Vector3( 0,0,0) ), *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "Sphere2Node", Vector3( 0,0,SZ) ), ...
And here's what I ended up with on screen:
From here, I imported the screenshot into Inkscape and manually redrew the scene with 2D vector objects, fiddling with the colours a little on the way. The final result, exported to a bitmap again:
One of the cool things about using a game library is that I got to fly around the structure in the sample application and look at it from lots of different positions, in real time, before taking the screenshot with the central spheres lined up in a nice configuration - much more like photography than modelling, in the end.