 Bueno, muy buenos restos del día. Aquí os presento a Rafael Bolíno, es compañero mío de espacio de trabajo, pero bueno, nos conocemos. Es un emprendedor nato, desarrollador de softwares de las personas. Más entusias, más que podéis conocer en vuestra vida a la hora de aprender y compartir su conocimiento. Así que... Lo intentaré, a ver qué tal. Bueno, gracias por venir. Voy a hablar hoy de cómo... Ay, sí, perdona, perdona, sí, no. Bueno, ya está que la charla es mía, o sea, poco, está bien. Lo que decía es que voy a enseñaros cómo podemos añadir modelos 3D dentro de WordPress o de nuestros productos, ¿vale? Preparando la presentación, me vine arriba y, aparte de añadir el fichelo 3D, lo que haremos será que lo podamos configurar también, ¿vale? Entonces, lo que vamos a hacer, ahora os lo enseñaré, es vamos a crear un sofá en 3D y vamos a poder cambiar la tapicería, ¿vale? Entonces, antes de nada, me presento... Me llamo Rafa y me dedico a hacer tecnología para joyería, ¿vale? Es decir, desarrollo de tecnología para joyería. Quiero que se me... ¿Vale? Entonces, ¿qué aprenderemos hoy? Os voy a enseñar lo que vamos a acabar de hacer hoy. ¿Vale? Si os fijáis, en cada página le pongo la URL... ¿Vale? Por si lo queréis probar vosotros ahora. Lo que vamos a hacer es vamos a crear una página y vamos a poner un sofá y vamos a poder cambiarle la tapicería, ¿vale? Esto es lo que vamos a hacer. Esto, obviamente, es una página web hecha en WordPress y lo vamos a hacer a través de shortcuts, ¿vale? Voy a intentar no utilizar muchos tecnicismos igualmente si hay algo que no quede claro o decírmelo, ¿vale? También lo que es interesante es que tenéis un repositorio con todo el código que vamos a hacer hoy, ¿vale? Está bajo licencia Meet, ¿vale? Que la licencia Meet permite que podáis hacer uso comercial y demás, ¿vale? Si alguien se anima a usar el código, encantadísimo, ¿vale? En mi GitHub. Entonces, antes de nada, las primeras presentaciones vamos a hablar mucho de conceptos, ¿vale? Para que al menos entendáis qué es lo que vamos a hacer. Alguien conoce WebGL o suena WebGL, ¿vale? Son unas librerías gráficas, unas APIs que nos permiten hacer cosas de 3D, ¿vale? Hace un montón de años que está, ¿vale? Sobretodo OpenGL y hace unos últimos años WebGL es el estándar para navegador, ¿vale? Básicamente, es unas librerías que nos permiten hacer cosas en 3D, ¿vale? Aun así, es muy abajo en nivel, es muy, muy complejo, ¿vale? Por eso vamos a usar una librería que se llama 3JS. Es un proyecto que empezó, digo, un chico, pero bueno, ya tiene mi edad, el chico, creo un poquito menos, en Bilanóvela de Genturo en Barcelona. Ahora está a nivel internacional, ¿vale? 3JS es unas librerías muy, muy bestias. Entonces, lo que me permite es no tener que bajar a tan bajo nivel, sino que me da funcionalidades, ¿vale? Para poder cargar ficheros y, ¿vale? Cámaras y demás. Entonces, para poder ver un fichero 3D, tenemos que crear un fichero 3D, ¿vale? Entonces, para ello hay unos softwares que se llaman CAT, ¿vale? Que nos permiten modelar en 3D. Hay diferentes tipos, ¿vale? Pero básicamente es un software que nos permite crear un 3D para después visualizarlo. Yo voy a hablar de dos hoy. Uno es Rino, Rino es un software que se usa, se creó en Seattle para el sector naval, pero se usan en un montón de otros sectores. Es una estándar en joyería, ¿vale? Por eso lo conozco. Pero también Sagrada Familia se está haciendo con Rino por la complejidad de Gaudí, que era un loco de las mates, pues tienen que usar Rino por el tema de complejidad, pero también lo usa a vidas, a frangueris, a jadid, o sea, arquitectura también es una estándar, ¿vale? Entonces, para crear el producto está muy guay. Es comercial, pero hay una demo que podéis bajar y crear el modelo, ¿vale? O digo, porque si os animáis a modelar algo, esta es una opción. La siguiente opción es Blender, ¿vale? Blender es un CAT open source que los últimos años ha despegado un montón. Es un poco más duro que Rino, a nivel de complejidad modelada y demás, pero es una pasada también, ¿vale? Entonces, este modelo que vamos a enseñar hoy, que también lo utilicen en el repositorio, está hecho en Blender, ¿vale? Hasta aquí vamos bien. Entonces, al igual que en la música hay formatos o en ficheros de texto hay formatos y demás, en 3D hay un montón de formatos, ¿vale? Normalmente todos los catch tienen su propio formativo, pero hay diferentes formatos que nos permiten el intercambio entre software de catch. Entonces, vamos a hablar de un formato que se llama GLTF, que es el que se está usando ahora para web. La gracia es que te permite compactar no solamente la geometría, sino ponerle imágenes para texturas y demás, ¿vale? Entonces, vamos a usar este formato que se llama GLTF. Lo podéis crear en Rino, en Blender, ¿vale? Es un estándar, ¿vale? Entonces, con el CAT hacemos el 3D y lo exportamos, ¿vale? a GLTF. Entonces, yo para crear la prueba, me instalo a un local, ¿vale? y he empezado a crear un plugin, ¿vale? Esto es la plantilla estándar. Veréis que todo el proyecto son dos ficheros, ¿vale? El plugin, la estructura completamente básica, esto es estándar, ¿vale? Entonces, una vez lo tenemos hecho, ya podemos activarlo. Y lo que voy a hacer servir aquí es un shortcode, ¿vale? Supongo que todos estéis familiarizados con lo que es el shortcode, o sea, un código que le puedo poner en cualquier parte de WordPress, ¿vale? Entonces, lo defino así. Lo que he hecho ha sido definirme que cuando ponga producto 3D, ¿vale? en el shortcut, mirá una template, un fichero, ¿vale? donde va a tener el HTML con el JavaScript y todo lo demás, ¿vale? Hasta aquí bien, ha creado un plugin, hago el shortcut para después ponerlo donde yo quiera. Después, claro, en la charla anterior se hablaba de JavaScript y qué renderizamos en servidor y qué renderizamos en cliente para los que no hay... ya he estado, ¿sabéis la diferencia entre renderizar en servidor o renderizar en cliente? Es el tope raro esto, ¿eh? O sea, por ejemplo, PHP, lo que hace es tú le pides al servidor y él te da un HTML, ¿vale? Pero la interacción siempre tienes que ir al servidor. Esto para 3D, que tiene un alto nivel de interacción, no sería viable. Entonces, por eso tenemos que ir a tecnologías que una vez carga en cliente no vuelve a hacer peticiones, ¿vale? Servidor y JavaScript es una de... ¿vale? Por eso se usa. Entonces, todo lo que vamos a hacer aquí es aunque el fichero empiece por PHP, todo lo demás, y es un módulo de JavaScript. En este caso, uso JavaScript Standard, ¿vale? Hasta aquí vamos bien. Entonces, la idea es, primero de todo, me voy a cargar unas librerías, ¿vale? Pensad que por tema de performance 3JS es grande, ¿vale? Entonces, lo que te permite es cargarte en módulos básicos y empezar a cargarle librerías adicionales, ¿vale? ¿Y por qué se hace eso? Porque para la tema de móviles y demás, ¿vale? Que sea rápido hoy, ¿vale? Entonces, primero de todo, importamos, repito, este código está en GitHub, ¿vale? Importamos la librería básica y me tengo que cargar dos cosas. Una es el GLTF Loader, o sea, es una librería que lo que me haces es me carga, tiene una función para cargar el fichero, ¿vale? Y después el Orbit Controls, que cuando tú cargas un fichero 3D no puedes interaccionar con él. Está en 3D, entonces el Orbit lo que me permite es hacer zoom y demás, ¿vale? Esto que vemos aquí, ¿vale? El poder coger, girar, ¿vale? hacer zoom, ¿vale? Todo esto son los Orbit Controls, ¿vale? Que están preparados ya para mobile, o sea, lo cargáis y ya os va bien para móvil para cualquier dispositivo, ¿vale? ¿Bien? Entonces, lo siguiente de todo es crear una escena. Entonces, en 3DS en WebGL las mismas librerías, todas las librerías es el mismo concepto. Tú querás una escena, ¿vale? Y en la escena es como una habitación oscura y ahí le empiezas a poner cosas, ¿vale? Entonces, primero de todo quedamos una escena y veréis que nos sale un cuadrado negro perfecto, precioso, ¿vale? Entonces, tenemos que empezar a ponerle cosas. En este caso le voy a poner dos luces para que se vea, ¿vale? O sea, es muy lógico cuando lo entiendes, pero básicamente, en este caso le pongo una luz ambiental, ¿vale? Una luz ambiental para que se vea bien y después le quiera una luz direccional. ¿Por qué? Porque si os fijáis en el sofá se calcula las sombras proyectadas. O sea, el cogín cuando... ¿vale? A ver si se llega a ver bien. ¿Vale? O sea, se ve como va proyectando el mismo sombras en el mismo, ¿vale? Entonces, con una luz ambiente esto no se puede hacer, por lo cual le añadí una luz direccional un foco de arriba a abajo, ¿vale? Si lo ponéis un poco más girado, pues al de lado, ¿vale? También es muy importante que parece una obviedad, pero puedo poner color a las luces. Entonces, el problema es que normalmente se suele tirar a blanco porque si no verás el objeto, pues bueno, obviamente la luz es roja, el objeto sale más rojo, ¿vale? ¿Está claro? ¿Hasta aquí bien o qué? ¿Sí? Entonces, luz ambiental luz direccional. Entonces, lo siguiente es una cámara por definición, tengo que definir una cámara, ¿vale? Esta habitación, ¿vale? ¿Desde dónde, desde qué punto lo miramos? ¿Vale? Entonces, hay varias tipos de cámara, por defecto la perspectiva es la más natural, ¿vale? Pero hay diferentes tipos de cámara, ¿vale? Y bueno, básicamente la cámara, lo que le digo es la distancia, ¿vale? y la posición ¿Y a qué punto mira? ¿Vale? O sea, le digo, oye, la cámara está aquí pero quiero que mires para allí, o mires para allí, o mires, ¿vale? Entonces, lo que hago es que mira al centro de la escena, que es donde está el sofá, ¿vale? Entonces, en juegos y demás, que también se usan esta librería, lo que hacen es van cambiando hacia donde mira la cámara, ¿vale? Entonces, tenemos escena, le ponemos luces, le ponemos una cámara y lo siguiente es le pongo el control ¿Vale? Para poder rotarlo y demás. Por defecto, si cargáis la web veréis que el objeto se empieza a mover, se anima, va rotando porque queda más bonito, ¿vale? O sea, cuando... si no toco nada, veis que va girando, ¿vale? Entonces, esto es porque he puesto ya en el control que tengo una auto selección, ¿vale? Entonces, digamos que si lo pusieran en la página de producto, ¿vale? Queda más bonito que se vaya moviendo que no que esté estático, ¿vale? Bueno, entonces ahora que tenemos la escena básica creada, vamos a tener que modelar un sofá, ¿vale? En este caso, voy a Blender y voy a dibujar el sofá y le voy a aplicar texturas y demás, ¿vale? Eh... Ahora es lo que tiene más... más coste esto a nivel de tiempo, ¿no? El modelado del 3D, ¿vale? Igualmente, Blender tiene unas librerías espectaculares. Entonces, una vez modelado lo que quiero, lo exporto, ¿vale? A GLTF y lo que voy a hacer es, y eso quizás no es la forma más óptima de pasar la producción, yo lo que he hecho es por simplicidad de código, he hecho cuatro sofás, ¿vale? Tengo cuatro ficheros que cada uno tiene sus tapicelías, ¿vale? Entonces, lo que hago es en el material puedo cargar una imagen entonces, lo que hago es le cambio esta imagen al material y voy teniendo, ¿vale? ¿Bien? Entonces, de una forma óptica, si fuese a producción aquí lo que haces, cada vez que le dais al botón para cambiar la tapicería ¿vale? Cada vez que le dais a un botón para cambiar la tapicería lo que está haciendo es volver a cargar el fichero GLTF ¿vale? Son cinco megas. Entonces ¿vale? Seguramente que en alguna parte del planeta se muere un cerdito cada vez que alguien hace algo de esto, porque, digamos, a nivel de performance no tiene ningún sentido, la textura pesará 20K y estoy cargando cinco megas cada vez que alguien cambia, ¿vale? Entonces, ahora por simplicidad de código he hecho que cada vez que le haga click me vuelva a cargar el modelo, pero la vida real lo que tendría que hacer es coger y cambiar el material del modelo, ¿vale? ¿Vamos bien de momento? Todo se complica, ¿eh? Todo es susceptible de complicarse ¿vale? Entonces, tenemos los cuatro sofás ¿vale? Veréis en el repositorio que hay los cuatro sofás sofás, gris, sofás, ¿vale? Entonces, esta es la función que he hecho para cargar el sofá Entonces, básicamente, esto es puro JavaScript, me define un objeto Loader y le digo que me cargue ¿vale? por la URL ¿vale? Lo que hago es me cojo estos ficheros y me los pongo en el día de WordPress, ¿vale? ¿Bien? Entonces, uno de los problemas es que WordPress no reconoce los ficheros GLTF y no te los deja subir Entonces, sé que hay plugins y demás que puedes coger para autorizar y demás. Yo lo que he hecho es meter esta línea de código o estas líneas de código que lo que hace ya es que al cargar mi plugin ya me permita subir ficheros GLTF ¿vale? para no tener dependencia de otros plugins Entonces, básicamente, lo que hace esto es defino los tipos Esto es WordPress puriduro ¿vale? y defino que permito que carguen los dos formatos ¿vale? ¿bien? No he entrado mucho en detalle, pero el formato este hay en binario y hay en formato JSON El formato JSON es que se puede leerlo los humanos pueden leerlo, el binario no se puede leer pero es más óptimo ¿vale? Entonces, una vez ha cargado el plugin puedo cargar los cuatro sofás que, repito, no es lo óptimo ¿vale? Y bueno, entonces por ejemplo yo lo que he hecho es me he quedado una web de ejemplo con Elementor y lo que voy a hacer es meter el shortcut con el producto pero claro, tengo que hacer la interacción con los botones ¿vale? entendéis que si yo ahora cojera el shortcut y pusiera el shortcut de producto me saldría el sofá pero no podría interaccionar con él Entonces, ¿cómo hago que un botón le haga click y haga cosas? Entonces, lo que lo que he hecho es me añado los botones y puedo definirle una ID ¿vale? en HTML también puedo HTML ponerle en el tag una ID y ese nombre le pondré un level in watcher para cuando alguien le dé un click detectar que alguien la ha dado click lo bueno es que eso está fuera de mi código yo puedo hacer los botones como quiera solamente le tengo que decir que el ID es un botón gris botón base, botón azul y botón rojo ¿se entiende esto? ¿si? ¿vale? ¿a donde voy que podéis poner cualquier objeto para interactuar? ¿vale? Entonces, lo que hago es me voy a poner el shortcut y le pongo producto ¿vale? 3D y lo pongo donde quiera él por defecto se me va a adaptar a lo que le dé ¿vale? ¿si? ¿vale? y el resultado es este que ¿vale? es que no se si se ve, mirá si lo voy a hacer un poquito más grande ¿vale? Entonces, cada cambio que hago ahora está en caché, os fijáis, ahora va super rápido porque la primera vez que que carga por rodicargar los 5 megas de cada sofá ¿vale? y ya está, entonces claro, la gracia es que este shortcut lo podéis meter dentro de productos incluso para poder añadirlo en el carrito con la configuración que han cogido y demás ¿vale? hay varias cosas más que veréis en el en el código no tengo tan mal gusto con Visual Studio ¿vale? le paso el opuesto en blanco para que se vea mejor ¿vale? es horrible ¿vale? pero si, por eso le he puesto este tan pero Dios, como puede tener tan mal gusto el tío este no ¿vale? entonces, lo que os decía antes, ahora lo vamos a ver si un poco ¿vale? me cargo las librerías quiero la escena le pongo las luces le pongo la cámara ¿vale? después hay un tema de rendizador que es el que pinta todo y demás que no voy a entrar, pero básicamente ahí puedo poner color color de fondo, si quiero que bueno, un montón de cosas ¿vale? aquí los controles de Orbit ¿vale? y aquí lo que hago es por defecto cargo el gris ¿vale? yo quiero la escena y yo cargo el gris y después le pongo otros eventos ¿vale? esto es puro JavaScript ¿vale? pero no sé si ¿vale? entonces, lo que hago es por ejemplo me quedo le añado un listener ¿vale? para resize ¿vale? ¿sais para qué es esto? para cuando el navegador cambia ¿vale? entonces, cada vez que el navegador cambia tengo que adaptar la escena al tamaño ¿vale? entonces, cada vez que alguien toca el navegador ¿vale? bueno calcula la proporción de nuevo ¿vale? y si os fijáis un poco más abajo tenemos todos los eventos puros de JavaScript de cuando alguien le dé un color azul cargame el sofá ¿vale? aquí esta función quizás no se ve muy claro porque está debajo pero me he hecho una muy sencilla que es cargame sofá ¿vale? entonces lo que le doy el nombre y lo único que hace es cargar un sofá o otro ¿vale? para no tener que se entiende porque me hecho la función parece más ágil ¿vale? cada vez que quiera cambiar de sofá ya hemos la función le pongo el nombre de sofá que quiero cambiar y lo que hace es define el nombre y lo vuelvo a cargar ¿bien? y prácticamente es esto básicamente lo que tengo de HTML todo lo que tengo de HTML aquí es un canvas, le defino un canvas que es como un dip normal a la práctica le pongo el ID para que el 3JS sepa donde tiene que pintar y se adapte a lo máximo que le dé entonces por ejemplo si en este caso en Elementor cuando empiezo a hacer las columnas o los containers y demás donde le ponga el va a coger lo máximo que pueda ¿vale? y muy a grandes rasgos así podemos poner un modelo 3D ¿bien? alguna pregunta y cambiando las texturas yo cargaría el modelo gris y una vez cuando cargáis el modelo estos objetos se meten dentro de la escena si yo puedo ir a la escena dame el sofá y la escena tiene el sofá ¿qué material tiene el sofá? el material 3 y lo que hago es cargarme al material 3 la textura de lo que sea sí sí se tiene que hacer así se tiene que hacer así ¿hay alguna manera de bajar el peso de los 5M de un modelo normal por ejemplo un anillo, lo que es lo que tú trabajes sí a ver, lo puedes hacer hay una cosa que se llama decimación la decimación es una técnica que lo que hace es una geometría 3D no deja de ser triangulitos lo único que pintan nuestros dispositivos son triangulitos entonces cuando yo cargo el GLTFS es una colección de triangulitos hay algoritmos matemáticos que lo que hacen es que tienes muchos triangulitos pequeños y puedes interpolar más grandes perdiendo precisión entonces la gracia aquí es si puedes reducirlo pero el juego aquí es no pasarte para que no no puede ser bastante menos bastante menos o sea de lo que más es de anillos y de cosas de joyería pero estamos viendo a 700K entonces es nada probablemente tres imágenes que pongas van a pesar más que vale gracias por compartir la información disculpa que no tengo voz al hilo de lo que ha dicho la compañera el tema de las texturas imagínate que tenemos los colores dentro del archivo entiendo que el decirle cambia el material no deja de ser una variable cambia el material 3 que será el de la tapicería y las texturas irían precargadas lo que se suele hacer es al igual que tenemos el GLTF loader tengo el textura loader es otra librería loader y lo que hace es te cargas la textura esta es la textura 25 voy al material de sofá y le digo ahora ponme y esos archivos de textura van dentro del archivo o van también como los archivos de sofá en el caso de GLTF los puedes enbeber dentro a la práctica quizás sea mejor que los tengas externos por peso también y claro si quieres editar cualquier cosa de la textura básicamente es el jpeg si no tienes que ir a blender, editarlo tienes incluso añadir nuevas texturas exactamente, escalarlo perfecto entonces lo que hago en joyería aparte de esto es poder cambiar geometría quiero el sofá de 2 plazas o de 3 plazas entonces ahí si que tienes que jugar con diferentes fichones de sofá no te lo quitan nadie eso y con texturas bueno lo primero muchas gracias muy interesante la ponencia mi pregunta va cuando cambias de modelo la rotación sigue exactamente en el mismo punto donde estaba pero en el código no he visto ninguna cosa de que estés cambiando offset de la rotación, eso lo hace el propio 3JS o sea la jugada es, tú tienes una escena tienes una habitación donde tú pones el sofá cuando yo cambio el sofá todos los sofás están en la misma posición entonces si la cámara está animada y va girando yo lo que hago es hacer el sofá a la escena pero lo que se mueve es la cámara siempre o sea se puede hacer de las dos maneras mal y bien, se puede mover el sofá yo podría mover el sofá pero es por si quiero interaccionar con los dos objetos pero normalmente cambias la cámara siempre es la cámara entonces como cambia el sofá y está en la misma posición tú no ves altos de nada porque te podría decir que son horas de desarrollo pero te viene solo no tienes que hacer nada el sofá está en la misma posición va moviéndose la cámara y cuando le doy vale en el fichuero que le pasas para importarlo las texturas en el programa de 3D tienes que ir con unas UV para que se adapte la textura se importa entiendo que se importa automáticamente lo que se puede hacer es cambiar el tapizado y ampliar el tamaño de la textura se podría cambiar la textura o se podría cambiar las UV puedes hacer los dos es lo que está diciendo cuando tú tienes un objeto 3D veis que el tapizado se ve a escala bien veis el tapizado se ve a proporción bien pero yo esta misma imagen que se repite en todo el sofá es una imagen que se va copiando en el sofá lo que puedo hacer es definirle cómo quiero que la imagen se ponga en la geometría vale aquí es todo muy cuadrado pero si fuera un cilindro quieres que el tapizado vaya así es la forma con la que pondremos el tapizado esto se hace en blender tu pones la textura y lo vas viendo y vas tocando hay una cosa que es la escala puede hacer que la imagen se me alargue más o se me alargue menos esto lo puedes tocar en blender o si no te me lo puedes tocar aquí en el material se llama la escala de UV podría jugar con diferentes escalas de tapizado imaginemos que cambio un material y la imagen de ese material tiene que ser una proporción para que sea más real mimbre igual tendría que adaptar el tamaño de la textura se entiende esto es duro es duro yo tengo una imagen y como quieres que te la ponga el mapeado es como yo le digo no habéis visto sobre todo en caras en caras la geometría es muy básica y poner una textura que parece superreal pero lo que da realidad es la imagen yo tengo que decirle como quiero que me ponga la foto de la cara para que no salga los ojos de abajo o arriba y eso es lo que es el mapeado ya es para freaky's level pro sin animo de meterte en un problema no sé si es posible ver algún ejemplo aunque sea de joyería que tengas algo de lo que te sientas orgulloso que podamos ver si se puede si no nos lo creemos hay una cosa que es una fricada pero hice que no hay joyeros aquí ni es mi business ni nada no voy a sacar nada de esto pero cogí que leí una versión del software y me fui en junio a la feria de joyería de las vegas y una de las cosas que me decía todo el mundo me decían muchas cosas pero una de ellas es que no se veía real una de las complejidades de todo esto digamos que el sofá es textura estela es más fácil de que se vea real en el caso de la joyería los diamantes es una jodienda porque se ve bien un diamante porque la luz entra y rebota entonces cuanto más rebota dentro del diamante la luz más real se ve entonces fui a las vegas y me decían sí, sí, muy chulo, esto no se ve real todos me decían no se ve real entonces lo que esto quiere decir no a ver que saldrá aquí porque esto no está esta es una nueva versión de lo que estoy haciendo lo que hago es veis esto sí que tengo que ir directamente a calcular el material esto es vale entonces por ejemplo si le pongo le voy a poner una mano la voy a poner más oscurita vale va a ser el internet es un poquito lento pero vale pero veis esto es lo que lo que pasa que la complejidad lo que me siento orgulloso de 5.000 líneas de código 5.000 líneas de código es para hacer que el diamante este se ve así porque realmente lo que estoy haciendo es por GPU calculo varios rayos y como el diamante por propiedades físicas de los cristales se rebotan para afuera vale esto ya es lo más complejo pero esto el metal este es vale y lo que os comentaba de la textura fijaros una cosa veis es que no sé si se aprecia bien pero veis que tiene arruga veis que le brilla le brilla las uñas vale esto es una textura veis el modelo 3D y el modelo 3D pesa 50 casas es que es cosa más fea pero con la textura le damos vale la realidad no, el LEDO pesa 700 casas es decir también está muy decimado y demás pero digamos no es osea pensar una cosa una cosa que no hemos hablado aquí es que yo puedo definirle a cada material que tenga un entorno diferente vale entonces claro el problema de los metales en el caso del sofá podría ser el mismo yo puedo cargarle si yo le pongo una luz y ya está en el sofá se ve bien por las texturas pero cuando vas a cosas metálicas y tal es fake porque no existe una habitación sin reflexiones y nada es fake entonces el ojo humano lo veis esto es mentira entonces para ello puedo cargar unos ficheros de entorno que se llaman H de Reis que lo que me permite y es muy cachondo es decir hay cámaras que me permiten sacar una foto de aquí vale y me quiere un entorno 3D perdón me quiero una imagen esférica de este entorno y esta imagen por defecto se refleja en el objeto entonces aquí lo que hago es la reflexión que necesito para ah mira si es esto por ejemplo aquí si voy a entornos yo tengo cargados diferentes entornos entonces fijaros fijaros en el anillo si cambio el entorno me cambia por completo porque es un objeto metálico y refleja el entorno mucho más que el sofá de textura pero realmente no es textura como tal sino que si le digo al material hoy eres muy reflectante entonces reflejas más el entorno y lo puedo como entorno lo bueno es que puedo poner diferentes entornos puedo poner un entorno solamente para un material porque normalmente un entorno para todos no queda bien hola buenos días Rafael muchas gracias quería gozuntarte cuando pones un fichero el GLTF en un dispositivo con menos potencia como puede ser un móvil relativamente antiguo el solo se adapta para que se vea igual un poco peor pero no pienso una cosa la suerte que hemos tenido la gente que hacemos 3d históricamente es por los friques de los juegos digamos la industria del 3d industrial ha sido avanzada por los videojuegos a donde voy es cualquier juego de estos va a coger mucho más performance de lo que te pide entonces no vas a tener problema es más pruebalo con cualquier teléfono el ejemplo este y si te va te va a ir cualquier cosa en la vida porque son 5 megas de fichero no hay problema piensa que cualquier juego carga millones de triangulos y nosotros estamos usando 3000 no tengas problemas de dispositivos no tengas nada hay algún banco de modelos los que somos unos ineptos si osea blender tiene uno yo uso no sé de muy buena calidad pero google tiene el google waterhouse vale que el google waterhouse es una librería de modelos hay miles de millones de webs ponen modelos 3d vale aquí sobre todo hay tema de arquitectura productos, modelos de diquea queréis montarlos en habitación en 3d aquí tristos los modelos de diquea entonces este es un banco que está super bien es gratuito todo esto pasa que claro si te viene un cliente de grifos es altamente probable que le tengas que modelar el grifo también es verdad que si el cliente fabrica el grifo tendrá el 3d del grifo ya entonces solamente tendrá que darte en el formato que sea no importa si hablan de lo rino y a facturar muchas gracias la última pregunta la pregunta más gracias por haber venido