Tesseract, an interesting analog of a hypercube type. How to animate it like this?

  • $\begingroup$ Maybe vertex hooks animated along an elliptical curve? BTW, the linked GIF is extremely mesmerizing . . . $\endgroup$ – VRM Jan 29 '15 at 14:27
  • 2
    $\begingroup$ The problem with asking which way is 'better' is that it is opinion based and could be closed for that reason. Might be worth a slight rewording to simply ask for any way of animating a hypercube. $\endgroup$ – Ray Mairlot Jan 29 '15 at 15:02
  • $\begingroup$ @RayMairlot First, I was trying to make the question not too short. Second, I got my way to make it but not quite satisfied with it. That's why the word "better" came from. Last, the better one among multiple answers would surely be accepted in the end. :) Anyway, updated. $\endgroup$ – Leon Cheung Jan 29 '15 at 15:24
  • $\begingroup$ Basically, this is just a centripetal rotation. Like if you had a spring, wound aaaaall the way into a circle, you could spin the center out endlessly/ you want to do the same thing with a cube, we just have to deal with changing scales and faces disappearing (or, in our case going to alpha 100) lemme make one real quick and i'll tell you how it goes. $\endgroup$ – Scalia Jan 29 '15 at 16:08
  • $\begingroup$ Use shape keys, one for the moving backward of the front face, one for the moving forward of the middle faces, one for the shrinking down of the back ace, and one for the growing of the forward center face. Worked for me. will post Gif when I can. $\endgroup$ – Scalia Jan 29 '15 at 16:30

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.

enter image description here

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 -

enter image description here

Sample file

  • $\begingroup$ For anyone interested I rendered this as a short video with a little soap bubble on the faces. $\endgroup$ – sambler Jan 30 '15 at 16:08

Another way is to use combination of modifiers:

  1. Create a plane, offset its origin;
  2. Hook the whole plane to a new empty object (CtrlH);
  3. Add a Screw modifier, set step to 4, rotate the two objects 45° along global Z;
  4. Add a Lattice, which is used to tweak the shape;
  5. Add a Wireframe modifier;
  6. Animate by rotating along local X (or Y, Z) of that empty object.

enter image description here

Example File

  • 1
    $\begingroup$ That would be the easiest way. $\endgroup$ – sambler Jan 30 '15 at 18:35
  • $\begingroup$ Maybe. But hard to control accurately. solutions from all guys here got pros and cons of each own. Anyway, I prefer yours, thanks. $\endgroup$ – Leon Cheung Jan 31 '15 at 3:01

Have you tried adding empty's to curves using the path constraint?

enter image description here

enter image description here

I think the paths should be wider towards the outsides instead of elliptical like I made them, maybe something more like this.

enter image description here

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.

  • $\begingroup$ Indeed, it works. Just... the Offset of the constraint can hardly be set accurately, and more clicks needed. But I have to admit this is a very nice idea. Thanks MarcClintDion. :) $\endgroup$ – Leon Cheung Jan 31 '15 at 3:05
  • $\begingroup$ it was an awful amount of tedious repetitive work once I started adding and hooking cylinders to the empties. (Never finished that part.) The above part was straight forward enough since I duplicated the curves and null for the first one. $\endgroup$ – MarcClintDion Jan 31 '15 at 5:34

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.

  • $\begingroup$ Nice. I think we share similar thought. However, shape key interpolation is taking the shortest path, which makes the movement "linear". I wonder if it is possible to make points moving along a curve path without having to add so many intermedate shapekeys. $\endgroup$ – Leon Cheung Jan 30 '15 at 5:53
  • $\begingroup$ @LeonCheung I think MarcClintDion's answer might do just that when set up properly. $\endgroup$ – Scalia Jan 30 '15 at 15:17

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. ;-)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.