Foros del Web » Programando para Internet » Javascript »

Poner imágenes a cubo 3D

Estas en el tema de Poner imágenes a cubo 3D en el foro de Javascript en Foros del Web. Hola me encontré con este código de un cubo en 3D funciona bien y todo solo quisiera saber si alguien me puede decir en que ...
  #1 (permalink)  
Antiguo 20/02/2013, 13:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 138
Antigüedad: 13 años, 2 meses
Puntos: 6
Pregunta Poner imágenes a cubo 3D

Hola me encontré con este código de un cubo en 3D funciona bien y todo solo quisiera saber si alguien me puede decir en que linea del código tengo que modificar para poder poner 1 imagen a cada cara del cubo, cambiarle de color y como.

Lo que pasa es que no se casi nada de javascript ni html5 espero puedan ayudarme y si alguien pudiera explicarme todo el código para poder hacerle modificaciones de velocidad y esas cosas se lo agradecería mucho, de antemano gracias.

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <title>HTML5 Experiment: A Rotating Solid Cube</title>
  3.     <script type="text/javascript">
  4.         window.onload = startDemo;
  5.  
  6.         function Point3D(x,y,z) {
  7.             this.x = x;
  8.             this.y = y;
  9.             this.z = z;
  10.  
  11.             this.rotateX = function(angle) {
  12.                 var rad, cosa, sina, y, z
  13.                 rad = angle * Math.PI / 180
  14.                 cosa = Math.cos(rad)
  15.                 sina = Math.sin(rad)
  16.                 y = this.y * cosa - this.z * sina
  17.                 z = this.y * sina + this.z * cosa
  18.                 return new Point3D(this.x, y, z)
  19.             }
  20.  
  21.             this.rotateY = function(angle) {
  22.                 var rad, cosa, sina, x, z
  23.                 rad = angle * Math.PI / 180
  24.                 cosa = Math.cos(rad)
  25.                 sina = Math.sin(rad)
  26.                 z = this.z * cosa - this.x * sina
  27.                 x = this.z * sina + this.x * cosa
  28.                 return new Point3D(x,this.y, z)
  29.             }
  30.  
  31.             this.rotateZ = function(angle) {
  32.                 var rad, cosa, sina, x, y
  33.                 rad = angle * Math.PI / 180
  34.                 cosa = Math.cos(rad)
  35.                 sina = Math.sin(rad)
  36.                 x = this.x * cosa - this.y * sina
  37.                 y = this.x * sina + this.y * cosa
  38.                 return new Point3D(x, y, this.z)
  39.             }
  40.  
  41.             this.project = function(viewWidth, viewHeight, fov, viewDistance) {
  42.                 var factor, x, y
  43.                 factor = fov / (viewDistance + this.z)
  44.                 x = this.x * factor + viewWidth / 2
  45.                 y = this.y * factor + viewHeight / 2
  46.                 return new Point3D(x, y, this.z)
  47.             }
  48.         }
  49.  
  50.         var vertices = [
  51.             new Point3D(-1,1,-1),
  52.             new Point3D(1,1,-1),
  53.             new Point3D(1,-1,-1),
  54.             new Point3D(-1,-1,-1),
  55.             new Point3D(-1,1,1),
  56.             new Point3D(1,1,1),
  57.             new Point3D(1,-1,1),
  58.             new Point3D(-1,-1,1)
  59.         ];
  60.  
  61.         // Define the vertices that compose each of the 6 faces. These numbers are
  62.         // indices to the vertex list defined above.
  63.         var faces  = [[0,1,2,3],[1,5,6,2],[5,4,7,6],[4,0,3,7],[0,4,5,1],[3,2,6,7]];
  64.  
  65.         // Define the colors for each face.
  66.         var colors = [[255,0,0],[0,255,0],[0,0,255],[255,255,0],[0,255,255],[255,0,255]];
  67.  
  68.         var angle = 0;
  69.  
  70.         /* Constructs a CSS RGB value from an array of 3 elements. */
  71.         function arrayToRGB(arr) {
  72.             if( arr.length == 3 ) {
  73.                 return "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")";
  74.             }
  75.             return "rgb(0,0,0)";
  76.         }
  77.  
  78.         function startDemo() {
  79.             canvas = document.getElementById("thecanvas");
  80.             if( canvas && canvas.getContext ) {
  81.                ctx = canvas.getContext("2d");
  82.                 setInterval(loop,33);
  83.             }
  84.         }
  85.  
  86.         function loop() {
  87.             var t = new Array();
  88.  
  89.             ctx.fillStyle = "rgb(0,0,0)";
  90.             ctx.fillRect(0,0,400,250);
  91.  
  92.             for( var i = 0; i < vertices.length; i++ ) {
  93.                var v = vertices[i];
  94.                var r = v.rotateX(angle).rotateY(angle);
  95.                var p = r.project(400,250,200,4);
  96.                t.push(p)
  97.            }
  98.  
  99.            var avg_z = new Array();
  100.  
  101.            for( var i = 0; i < faces.length; i++ ) {
  102.                var f = faces[i];
  103.                avg_z[i] = {"index":i, "z":(t[f[0]].z + t[f[1]].z + t[f[2]].z + t[f[3]].z) / 4.0};
  104.            }
  105.  
  106.            avg_z.sort(function(a,b) {
  107.                return b.z - a.z;
  108.            });
  109.  
  110.            for( var i = 0; i < faces.length; i++ ) {
  111.                var f = faces[avg_z[i].index]
  112.  
  113.                ctx.fillStyle = arrayToRGB(colors[avg_z[i].index]);
  114.                ctx.beginPath()
  115.                ctx.moveTo(t[f[0]].x,t[f[0]].y)
  116.                ctx.lineTo(t[f[1]].x,t[f[1]].y)
  117.                ctx.lineTo(t[f[2]].x,t[f[2]].y)
  118.                ctx.lineTo(t[f[3]].x,t[f[3]].y)
  119.                ctx.closePath()
  120.                ctx.fill()
  121.            }
  122.            angle += 2
  123.        }
  124.    </script>
  125. </head>
  126.         <canvas id="thecanvas" width="400" height="250">
  127.         Your browser does not support the HTML5 canvas element. <a href=#>Click here</a> to watch the video.
  128.     </canvas>
  129.  
  130.     </body>
  131. </html>
  #2 (permalink)  
Antiguo 20/02/2013, 13:37
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Poner imágenes a cubo 3D

No amigo, esto no es cosa de editar una linea y listo, de echo sería modificar por mucho para hacer lo que requieres.

Si quieres que alguien te haga eso lo mejor es que lo pongas en la sección de ofertas de empleo, o que esperes a que alguien con tiempo libre lo haga (igual y con suerte). Si no, pues habrías que empezar a aprender algo de Javascript.

Otra opción es buscar algo ya hecho como lo necesitas. http://www.netmagazine.com/features/...-3d-transforms

Saludos
__________________
Grupo Telegram Docker en Español

Última edición por Carlangueitor; 20/02/2013 a las 13:48
  #3 (permalink)  
Antiguo 20/02/2013, 14:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 138
Antigüedad: 13 años, 2 meses
Puntos: 6
Respuesta: Poner imágenes a cubo 3D

Gracias, investigare un poco mas
  #4 (permalink)  
Antiguo 21/02/2013, 06:15
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Poner imágenes a cubo 3D

Básicamente se trata de aplicarle al script que tenés esto:
http://www.forosdelweb.com/3968535-post4.html

Última edición por Panino5001; 21/02/2013 a las 07:17

Etiquetas: html5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:29.