2
$\begingroup$

I am trying to make a rotating hypercube in blender but can't figure it out. I have made one using after effects but the texts can't be attached to each face perfectly, so I started using blender to see if it works.

Can anyone give me some insights into building it? Thank you very much!

link of the animation: https://drive.google.com/file/d/1j_p-LhzPVkbsshU7r0SR0PnRg6m9pvFq/view?usp=sharing

$\endgroup$
2
$\begingroup$

I Think you can do it with bones:

  • Create a cube, give it this inner geometry (I've hidden the 6 outer faces):

enter image description here

  • Create an armature with one bone by horizontal face. Parent the cube With Empty Groups to the armature, it automatically create as many vertex groups as bones, assign each face to the vertex group that has the name of the bone that is supposed to move it:

enter image description here

  • Move and scale the bones so that they follow what happens in your video:

enter image description here

enter image description here

enter image description here

and so on... which gives:

enter image description here

  • For the image texture, you need to create an image with 20 squares, each with its text, then select your object in Edit mode, unwrap with the Smart UV Project option, in the UV Editor, select all and UV > Pack Islands, then rearrange all the UV islands so that they match the squares.
$\endgroup$
14
  • $\begingroup$ For some reason reminds me of blender.stackexchange.com/questions/56994/… $\endgroup$ – batFINGER Sep 18 '20 at 7:47
  • $\begingroup$ @batFINGER, no please! : ) $\endgroup$ – lemon Sep 18 '20 at 8:07
  • 1
    $\begingroup$ you just need to create an image with as many squares as you have faces, unwrap, then make each face of your UV map fit with each face of the image $\endgroup$ – moonboots Sep 18 '20 at 8:51
  • 1
    $\begingroup$ you must not move the cube, you need to create one unique armature, create 4 bones within this armature, give them names like bone1 etc... each bone aligned with each horizontal face, then parent the cube to the armature with the Withe Empty Group option, it will automatically create 4 vertex groups, select the cube, go in Edit mode, and in the Properties panel > Object Data > Vertex Group, assign each vertex group to each face by selecting the vertices then clicking Assign. Now each face should be controlled by each bone, open the Dope Sheet window to create keyframes for the bones. $\endgroup$ – moonboots Sep 18 '20 at 19:56
  • 1
    $\begingroup$ I've edited my answer, I hope it helps $\endgroup$ – moonboots Sep 20 '20 at 8:02
2
$\begingroup$

To avoid the texts to be stretched on the cube faces, you can use separate objects (either text objects or planes with textures and transparency) and parent them to the vertices of the cube:

enter image description here

For the cube animation, have used 4 empties that move up down and are scaled to simulate the 4d effect. This could have been done with bones too. This is the same principle:

Each of these 4 empties is hook (modifier) for the corresponding horizontal face of the 4d cube.

For the texts objects (that, again, could be planes with textures intead), I used two cases:

For the 4 horizontal planes, the texts are simply parented to the corresponding empties. This is easier.

For the other ones that "rotate" on sides, vertex parenting is used. To do it:

Place the text along the face.

Shift select the cube, so that the cube is active and the text still selected.

Enter edit mode, select 3 vertices of the plane the text is aligned to, and use CtrlP to make vertex parent.

enter image description here

This parenting could give a good result, or not. To check that, animate the cube and look how the text behaves.

If the rotation is not good, make vertex parent again but choose 3 other vertices.

You can enhance the setting adjusting the texts positions and envetually give the texts some animation (scale up or down for instance).

$\endgroup$
4
  • 1
    $\begingroup$ I think the trick is that the child will remain parallel to the edge of the parent triangle running from the lowest selected vertex-index, to the next lowest. (anticlockwise, looking down the normal) Been working on a little driver script to scale the text proportionately to the area of that triangle? $\endgroup$ – Robin Betts Sep 20 '20 at 10:08
  • $\begingroup$ @RobinBetts,yes, woulr be around that for vertex parenting. Finally considered trial and error was the quickest way... $\endgroup$ – lemon Sep 20 '20 at 10:14
  • $\begingroup$ Thanks for sharing @lemon! I have added colors and changed texts. The next question is how to change the opacity of outer faces in order to show the inner cube as the original design. Any ideas? very much appreciate it! $\endgroup$ – Haimeng Sep 21 '20 at 22:54
  • $\begingroup$ I've used transparency (look at the blend file). But was not sure about the final design you want. If close to the screenshots you shared probably use a base texture to do it. $\endgroup$ – lemon Sep 22 '20 at 6:36

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.