Problem with cube rotations

I am trying to animate a Rubik’s cube and I have done it by adding armatures and parenting each of the individual cubes to it’s armature. Works sometimes, and sometimes it doesn’t. For some reason, I get some strange rotations of the individual cubes vice the nice smooth rotation of the entire group of 9 cubes. Also, as I rotate a group of 9 cubes, they sometimes seem to be in the middle of a different rotation and may pass through some of the remaining stationary cubes.

I started off the animation at the last frame (frame 250), selected all the bones and inserted a LcoRot key. Then I moved to the next frame, selected the bones for the side I wanted to rotate, rotated the cubes (by rotating the selected bones), and then selected all the bones again before inserting the next LocRot key. I continued this process down to frame 1. Am I missing something in the process that would give me the strange results?

I have attached a screenshot of the model and the output, both at the same frame, that shows what I am trying to describe.
Thanks.

Attachments



Anyone have any ideas on how I can fix this problem :confused:

Thanks.

Wow - no suggestions. I was really hoping that someone would be able to help.

Thanks.

It’s just that that looks overwhelmingly complicated. Could you post a blend? I have no idea how those bones are linked.

All the armatures come out from the origin, with each of the cubes parented to the bone running through it. Seemed like a simple way of doing it, except for the unexpected results.

Rubik’sCube is too complex object.Note that Rotation Center is median -point of Rubik,not median point of its sides.

All the armatures come out from the origin, with each of the cubes parented to the bone running through it. Seemed like a simple way of doing it, except for the unexpected results.
So…simple way of doing it…not perfect but works !

All the best!:eyebrowlift2:

Attachments

RubiksCube.blend (337 KB)

Uh, could it be the allways present issue of the polluted propertys of the cubes that you solve clearing rotation?.
What about programing the animation with Python?, could be pretty “easy” (yeah, right…) if you placed the
objectcenter of each cube in the middle of the ruby cube and apllied code to make them rotate from that point.

radopenev,

I looked at the .blend file you posted and it seems to only animate the three rows of cubes. I am trying to animate all the different rows/columns, so that at one animation frame a smaller cube may rotate with a column and then on the next frame, it may rotate with one of the rows. That is where the issue is coming up.

Thanks.

grotesque,

I actually have the center for each of the cubes at the center of the overall cube. I thought that would have solved all the problems, but apparently not. It just seems hard to believe that you actually have to ‘code’ the animation. Of all the animations that have been done with Blender, this can not even begin to match some of complex animations done.

Thanks.

I have been working on the exactly same project and face the exactly same problem since I came up with the exactly same solution. We have alike minds. ^^

Hi all, long time no see.
swonomo contacted me regarding this chalenge.
Almost 4 years Ago I posted a solution on CGtalk.
The Idea was to use an armature to move the little cubes. One bone for one cube. In the example the armature is binded to the rubik’s cube with a modifier using vertex grouping, but simple parenting could also work.
The armature serves 3 purposes:

  • Define a center or rotation for the animation( where all the root of the bones are).
  • Simplify animation by giving “Handle” to select when animating.
  • Taking avantage de the quaternion maths (w,x,y,z) behind the armature’s rotation to get precise Keying in space. Without it when keying animaton it’s very difficult to get good result.

In the cgtalk thread i posted a .blend wich work out of the box. Just select a row of bones with box select in pose mode then rotate using constraint (press x, y or z on keybord while rotating. With it you only need to insert a rot key every 45 degree and it should be fine.

Hope it help