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 Answers 2

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
    Commented Sep 18, 2020 at 7:47
  • $\begingroup$ @batFINGER, no please! : ) $\endgroup$
    – lemon
    Commented Sep 18, 2020 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
    Commented Sep 18, 2020 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
    Commented Sep 18, 2020 at 19:56
  • 1
    $\begingroup$ I've edited my answer, I hope it helps $\endgroup$
    – moonboots
    Commented Sep 20, 2020 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
    Commented Sep 20, 2020 at 10:08
  • $\begingroup$ @RobinBetts,yes, woulr be around that for vertex parenting. Finally considered trial and error was the quickest way... $\endgroup$
    – lemon
    Commented Sep 20, 2020 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
    Commented Sep 21, 2020 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
    Commented Sep 22, 2020 at 6:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .