1
$\begingroup$

From this code, how could I animate (speed given by the user) this cube at random so that each face shows me a different image.

EDIT(The idea is that the cube rotates at random and shows different images on each face, it is understood now :(

 $Graphics3D[
 GraphicsComplex[
 Tuples[{0, 1}, 3],
 MapThread[
 {Texture[
 Graphics[ImportString[ExportString[#1, "PDF"], "PDF"][[1, 1]],       Background -> #3]],
 Polygon[#2, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]} &,
{Characters["ABCDEF"],
 {{1, 2, 4, 3}, {1, 5, 6, 2}, {1, 3, 7, 5}, {8, 6, 5, 7}, {8, 7, 
   3, 4}, {8, 4, 2, 6}},
 Table[Hue[i/6], {i, 6}]}
]
   ],
 Lighting -> "Neutral"]$

here some example image to put on the faces

enter link description here enter link description here enter link description here enter link description here enter link description here enter link description here

$\endgroup$
3
$\begingroup$

Update 4: Rotations around x axis followed by rotations around y axis followed by rotations around z axis:

faces = Polygon[#, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0,  1}}] & /@ 
  {{1, 2, 4, 3}, {1, 5, 6, 2}, {1, 3, 7, 5}, {8, 6, 5, 7}, {8, 7, 3, 4}, {8, 4, 2, 6}};

images = Import /@ 
 {"https://images-na.ssl-images-amazon.com/images/I/51ZQiVNDYPL._SX425_.jpg",
  "https://images-na.ssl-images-amazon.com/images/I/51S7cvjbrqL._SX425_.jpg", 
  "https://images-na.ssl-images-amazon.com/images/I/61acUMNLNvL._SX425_.jpg", 
  "https://images-na.ssl-images-amazon.com/images/I/51xRMocaTKL._SX425_.jpg"};

{one, six} = Texture[Graphics[
      ImportString[ExportString[#1, "PDF"], "PDF"][[1, 1]], 
      Background -> #2]] & @@@ Transpose[{{"1", "6"}, {Red, Yellow}}];
textures2 = Join[Texture /@ images, {one, six}];

Animate[Graphics3D[
  Rotate[GraphicsComplex[Tuples[{0, 1}, 3],Transpose[{textures2, faces}]], t, 
   IdentityMatrix[3][[1 + Quotient[t, 2 Pi]]], {1, 1, 1}/2], 
  Lighting -> "Neutral", SphericalRegion -> True, 
  PlotRange -> {{-1/2, 3/2}, {-1/2, 3/2}, {-1/2, 3/2}}, 
  Boxed -> False], {t, Range[0, 6 Pi - Pi/120, Pi/120]}]

enter image description here

Update 3: Rotations by a random angle around a randomly selected axis:

Animate[Graphics3D[Rotate[GraphicsComplex[Tuples[{0, 1}, 3], 
     Transpose[{textures, faces}]], t, RandomChoice[IdentityMatrix[3]]], 
   Lighting -> "Neutral",  SphericalRegion -> True,  Boxed -> False],
 {t, RandomSample[Range[0, 2 Pi, Pi/60]]}]

enter image description here

frames2 = Table[Graphics3D[
    Rotate[GraphicsComplex[Tuples[{0, 1}, 3], Transpose[{textures, faces}]], t, 
     RandomChoice[IdentityMatrix[3]]], Lighting -> "Neutral", 
     SphericalRegion -> True,  Boxed -> False],
  {t, RandomSample[Range[0, 2 Pi, Pi/60]]}];

Export["cube2.gif", frames2]

enter image description here

Update 2: Rotating a cube with images on its faces:

faces = Polygon[#, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}] & /@
  {{1, 2, 4, 3}, {1, 5, 6, 2}, {1, 3, 7, 5}, {8, 6, 5, 7}, {8, 7, 3, 4}, {8, 4, 2, 6}};

images = Import /@ 
  {"https://images-na.ssl-images-amazon.com/images/I/51ZQiVNDYPL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/51S7cvjbrqL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/61acUMNLNvL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/51xRMocaTKL._SX425_.jpg"};

{one, six} = Texture[Graphics[
      ImportString[ExportString[#1, "PDF"], "PDF"][[1, 1]], 
      Background -> #2]] & @@@ Transpose[{{"1", "6"}, {Red, Yellow}}];
textures2 = Join[Texture /@ images, {one, six}];

Animate[Graphics3D[
  GraphicsComplex[Tuples[{0, 1}, 3], Transpose[{textures2, faces}]], 
  Lighting -> "Neutral", 
  ViewVector -> 6 { Cos[t], Sin[t], 3 Sin[t]/6 + 1/12}, 
  SphericalRegion -> True], {t, 0, 2 Pi, Pi/60}]

enter image description here

You can control the speed using the second and third buttons.

See also: this answer by halirutan to a related question

Update: Using some of the images from the links in OP:

images = Import /@ 
  {"https://images-na.ssl-images-amazon.com/images/I/51ZQiVNDYPL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/51S7cvjbrqL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/61acUMNLNvL._SX425_.jpg", 
 "https://images-na.ssl-images-amazon.com/images/I/51xRMocaTKL._SX425_.jpg"};

{one, six} = Texture[Graphics[
      ImportString[ExportString[#1, "PDF"], "PDF"][[1, 1]], 
      Background -> #2]] & @@@ Transpose[{{"1", "6"}, {Red, Yellow}}];

Just wrap your images with Texture (and add the missing 1 and 6):

textures2 = Join[Texture /@ images, {one, six}];


frames = Table[Graphics3D[GraphicsComplex[Tuples[{0, 1}, 3], 
     Transpose[{RandomSample[textures2, 6], faces}]], Lighting -> "Neutral"], {30}];
ListAnimate[frames]

enter image description here

Original answer:

textures = Texture[Graphics[ImportString[ExportString[#1, "PDF"], "PDF"][[1, 1]], 
      Background -> #2]] & @@@ 
   Transpose[{CharacterRange["A", "Z"], Hue[#/26] & /@ Range[26]}];

faces = Polygon[#, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}] & /@
  {{1, 2, 4, 3}, {1, 5, 6, 2}, {1, 3, 7, 5}, {8, 6, 5, 7}, {8, 7, 3, 4}, {8, 4, 2, 6}};

frames = Table[Graphics3D[GraphicsComplex[Tuples[{0, 1}, 3], 
    Transpose[{RandomSample[textures, 6], faces}]], Lighting -> "Neutral"], {30}]

ListAnimate[frames]

enter image description here

Export["cube.gif", frames]

enter image description here

$\endgroup$
  • $\begingroup$ @ kglr ,ok , thanks , the idea is correct, but as insert pictures on the cube faces no letters (for example the images of the links that you leave) $\endgroup$ – zeros Jul 15 at 18:50
  • $\begingroup$ @ kglr ,,first of all, thanks for your time, is much better, but it seems that you understood me the other way round, it is the cube that rotates at random with images on their faces $\endgroup$ – zeros Jul 15 at 22:05
  • $\begingroup$ @ kglr sorry It is in the title How to animate a cube with images on their faces? ,(maybe I express myself badly) From this code, how could I animate (speed given by the user) this cube at random so that each face shows me a different image $\endgroup$ – zeros Jul 15 at 22:14
  • $\begingroup$ @zeros, please see update 2. $\endgroup$ – kglr Jul 15 at 22:27
  • $\begingroup$ now works fine, thanks for your time $\endgroup$ – zeros Jul 15 at 23:53

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.