In addition to implementing legs, I have improved the performance of the arrow-based animation very significantly.
Basically, the idea is that we want, for example, four levels of detail (LOD), with objects closest to the camera having the highest detail. But it takes time to generate models from their abstract description. So the solution is to generate the model at the lowest level of detail, and then fire off a thread to generate the remaining three levels of detail. The resulting image looks worse, but the animation is more fluid. It’s preferable to a three-second pause in the middle of a combat scene. Visually what you see is a 3D model that increases in quality with time, much like a progressive JPEG.
This planet has a slice taken out of it.
It uses a very simple ray-caster to compute a deformation of the sphere onto three planes. This has a benefit that we can take normal vectors from the planes, saving us the cost of computing normals for the entire deformed surface. It also has the benefit that as the ray-caster gains more geometries, it will be possible to project surfaces onto those geometries as well.
The ray caster will also be used to implement collision detection for projectiles and beams.