Modelling is simple, cube inside a cube, join inner and outer edges, add a wireframe modifier to make the edges visible. Transparent material for the faces and diffuse for the wireframe.
I would then go into edit mode and for each vertex hook it CtrlH to a new object. This will create an empty that each vertex will be attached to.
These empties can then be animated to move in a circular motion, maybe follow a path with different offsets.
A quick linear point to point test -
Another way is to use combination of modifiers:
- Create a plane, offset its origin;
- Hook the whole plane to a new empty object (CtrlH);
- Add a Screw modifier, set step to 4, rotate the two objects 45° along global Z;
- Add a Lattice, which is used to tweak the shape;
- Add a Wireframe modifier;
- Animate by rotating along local X (or Y, Z) of that empty object.
Have you tried adding empty's to curves using the path constraint?
I think the paths should be wider towards the outsides instead of elliptical like I made them, maybe something more like this.
It also looks like the points move faster as they reach the outer radius and then slowest when they are at the point where they form the small cube in the center.
I imagine you'll need at least a driver for that. Maybe another null at the center so you can test for distance with the other nulls. The further away from the center the other nulls are the faster they go.
First you can create the 8-cell stationary model by adding a solidify modifier to a cube. Set the thickness to 1.00. Apply the modifier. From now on the original cube will be called the outer cube and the cube created by the modifier will be called the inner cube.
Form a face between all 12 edges of the inner and the corresponding edge opposite it in the outer cube.
The 8-cell model is now constructed- we move into the animation of the tesseract. It can be accomplished with one shape key, but for ease of adjustment, we will use four.
Move the inner cube to the front of the tesseract
Grow the front face of the inner cube
Move front face of the outer cube to the back of the tesseract
Move the back face of the outer cube to the previous location of the back face of the and scale it to the same size that the inner cubes faces were (one shape key)
When all of the shapes are played simultaneously, it will complete one cycle of movement in the tesseract. A looping animation will make the tesseract's actions play seamlessly.
As of this first writing, I am still working on a way to make the face's work right.
Here is an example .blend to help.
A tesseract is a 4 dimensional object. To get it to rotate in 4 dimensions you need to do 4 dimensional rotations, which is not really part of Blender as far as I understand. However, you can probably accomplish this via the Python API.
First read about 4 dimensional rotations here - http://en.wikipedia.org/wiki/Rotations_in_4-dimensional_Euclidean_space.
I'm just learning the Python API now. However, since it gives you access to mesh data, you should be able to use NumPy (http://www.numpy.org), which is included with Blender's Python to easily implement the 4 dimensional rotations, extract the 3 dimensional projection and use that to form/modify mesh vertices. Then you can skin or do whatever else gets the affect you want.
Everything is just a small matter of programming. ;-)