Saltar al contenido principal
Diseño web 3D con WebGL y Three.js: cuándo funciona
Volver al Blog
Diseño web 21 de diciembre de 2025 9 min de lecturapor Matthias Meyer

Diseño web 3D con WebGL y Three.js: cuándo funciona

De tarjetas 3D sutiles a escenas WebGL completas. Dónde tiene sentido el 3D en webs, dónde mata el rendimiento, con ejemplos de código.

Contenido

Un configurador de productos donde los clientes pueden rotar, colorear e inspeccionar su producto deseado desde todos los ángulos en tiempo real. Una web de arquitectura donde los visitantes recorren virtualmente un edificio antes de que se coloque el primer ladrillo. Un portfolio cuyos proyectos flotan como tarjetas tridimensionales en el espacio. El 3D en la web hace tiempo que dejo de ser un capricho -- es una ventaja competitiva medible.

Los sitios web con elementos 3D interactivos registran un promedio de 40% mas engagement y 27% mayor duración de sesión comparado con sus homólogos puramente bidimensionales. La tecnología esta madura, el soporte de navegadores es universal, y la barrera de entrada -- gracias a herramientas como Spline y React Three Fiber -- nunca ha sido tan baja.

Three.js: El fundamento del 3D en la web#

Three.js es la biblioteca JavaScript que hace accesible WebGL. WebGL en si es una API de bajo nivel -- renderizar un simple cubo requiere cientos de lineas de código para shaders, buffers y matrices. Three.js lo abstrae a unas pocas lineas.

Que ofrece Three.js#

  • Escena, Cámara, Renderizador: La configuración básica para cualquier escena 3D
  • Geometrías: Cubos, esferas, cilindros, planos -- o modelos 3D importados (glTF, OBJ, FBX)
  • Materiales: Desde superficies de color solido hasta materiales PBR físicamente correctos
  • Iluminación: Luces puntuales, direccionales y ambientales
  • Animaciones: Animaciones keyframe, morph targets, animaciones esqueléticas
  • Post-procesado: Bloom, profundidad de campo, SSAO, viñeta
  • Física: Integración con Cannon.js o Rapier para simulaciones físicas realistas

Cuando Three.js es la elección correcta#

  • Control total sobre cada aspecto de la escena 3D
  • Interacciones y animaciones complejas
  • Aplicaciones criticas en rendimiento (configuradores de producto, juegos)
  • Integración en proyectos JavaScript/TypeScript existentes

React Three Fiber: 3D para desarrolladores React#

React Three Fiber (R3F) trae Three.js al mundo React. En lugar de construir escenas imperativamente, las describes declarativamente con componentes JSX.

Por que R3F para proyectos web modernos#

  • Basado en componentes: Cada elemento 3D es un componente React con props y state
  • Hooks: useFrame (bucle de renderizado), useThree (acceso a escena/cámara/renderizador), useLoader (carga de assets)
  • Ecosistema: drei (componentes utilitarios), react-spring (animaciones basadas en física), zustand (gestión de estado)
  • Integración: Incrustación fluida en Next.js, Vite o cualquier otro framework React
  • Soporte Suspense: Cargar assets 3D con React Suspense y UI de fallback

Un setup típico#

La estructura básica de una escena R3F consiste en Canvas, elementos de escena, iluminación y controles de cámara. Lo que requiere 50-100 lineas en Three.js puro se puede expresar en 15-20 lineas en R3F -- y es mas mantenible.

Drei: La biblioteca de utilidades#

La biblioteca drei (pronunciada como la palabra alemana para "tres") complementa R3F con componentes preconstruidos:

  • OrbitControls: Rotación de cámara controlada por ratón/táctil
  • Environment: Iluminación ambiental HDR con un solo prop
  • Text3D: Tipografía 3D
  • Html: Superposiciones HTML que se mueven con la escena 3D
  • Float: Flotación suave de objetos
  • Sparkles: Efectos de partículas

Spline: Diseno 3D sin código#

Spline es el Figma del 3D. Los diseñadores pueden crear escenas visualmente, animarlas y incrustarlas directamente en sitios web -- sin una sola linea de código.

Para quien es Spline#

  • Diseñadores sin experiencia en código: Editor visual, arrastrar y soltar, materiales predefinidos
  • Prototipos rápidos: De la idea a la escena 3D incrustada en horas en lugar de días
  • Interacciones simples: Efectos hover, animaciones de clic, rotaciones controladas por scroll
  • Sitios web de marketing: Secciones hero, visualizaciones de productos, elementos interactivos

Limitaciones#

  • Rendimiento: Las exportaciones de Spline no están tan optimizadas como Three.js escrito a mano
  • Complejidad: Para interacciones avanzadas y lógica, Spline encuentra sus limites
  • Tamaño del bundle: El código de runtime de Spline se suma al bundle
  • Personalizable: Menos control sobre detalles de renderizado que Three.js/R3F

Nuestra recomendación#

Spline para sitios web de marketing y prototipos. Three.js/R3F para configuradores de producto, interacciones complejas y aplicaciones criticas en rendimiento.

Optimización de rendimiento: La disciplina maestra#

El 3D en la web es intensivo en rendimiento. Un modelo 3D sin optimizar puede llevar un sitio web de 60fps a 15fps. Aquí están las técnicas de optimización mas importantes.

Level of Detail (LOD)#

No todos los objetos necesitan el nivel de detalle mas alto siempre. LOD cambia automáticamente entre diferentes versiones del modelo según la distancia a la cámara:

  • Cerca: Modelo completo (50.000 polígonos)
  • Medio: Modelo simplificado (10.000 polígonos)
  • Lejos: Muy simplificado (2.000 polígonos) o sprite

Instancing#

Cuando la misma geometría aparece multiples veces en la escena (arboles, partículas, edificios), instancing crea solo una copia en la GPU y la renderiza con diferentes transformaciones. Miles de objetos idénticos cuestan apenas mas que uno.

Texturas comprimidas#

  • Basis Universal (.basis/.ktx2): Texturas comprimidas para GPU que son 4-8x mas pequeñas que PNG/JPEG
  • Compresión Draco: Para modelos 3D -- reduce el tamaño de archivo un 70-95%
  • Optimización glTF: gltf-transform o gltfpack para tamaño optimo de archivo

Técnicas adicionales#

  • Frustum culling: No renderizar objetos fuera del campo de vision (Three.js lo hace automáticamente)
  • Shadow maps: Sombras solo para objetos importantes, baja resolución para distantes
  • Renderizado bajo demanda: No renderizar cada frame, solo cuando hay cambios
  • Offscreen canvas: Ejecutar renderizado pesado en un Web Worker

Progressive Enhancement: 3D en escritorio, fallback 2D en móvil#

La regla mas importante para el 3D en la web: Nadie debería perderse contenido porque su dispositivo no puede con 3D. La mejora progresiva es obligatoria.

Estrategia de implementación#

  1. Capa base: Todo el contenido es accesible sin 3D (texto, imágenes, ilustraciones 2D)
  2. Capa de mejora: En dispositivos capaces, se carga la escena 3D
  3. Detección de características: Verificar soporte WebGL, estimar rendimiento GPU
  4. Degradación elegante: Si el 3D no es posible, se muestra la version 2D

Estrategia móvil#

  • Escenas simplificadas: Menos polígonos, materiales mas simples, sin post-procesado
  • Optimización táctil: Patrones de interacción diferentes al escritorio (pellizcar en lugar de scroll, tap en lugar de hover)
  • Consciencia de batería: El renderizado 3D consume batería -- ofrecer reducción o desactivación opcional
  • Volumen de datos: Los assets 3D pueden ser de varios megabytes -- el lazy loading es obligatorio

Casos de uso por nivel de complejidad#

Nivel 1: Elementos 3D sutiles (Entrada)#

  • Tarjetas 3D con transform de perspectiva: Puramente basado en CSS, sin WebGL necesario. Las tarjetas se inclinan al hover creando impresión 3D.
  • Elementos flotantes: Objetos flotando suavemente en el espacio (animación float con CSS o GSAP)
  • Efectos tilt: La posición del ratón influye en la perspectiva de un elemento

Esfuerzo: 2-4 horas | Impacto en rendimiento: Mínimo

Nivel 2: Escenas 3D incrustadas (Intermedio)#

  • Visor de producto: Un solo modelo 3D que se puede rotar y hacer zoom
  • Logos 3D animados: Revelaciones de logo con Three.js o Spline
  • Infografias interactivas: Visualización de datos en 3D

Esfuerzo: 1-3 días | Impacto en rendimiento: Moderado

Nivel 3: Experiencias 3D completas (Avanzado)#

  • Configuradores de producto: Cambiar color, material, tamaño en tiempo real
  • Visualización arquitectónica: Modelos de edificios transitables
  • Experiencias de storytelling: Mundos 3D controlados por scroll

Esfuerzo: 1-4 semanas | Impacto en rendimiento: Alto

Nivel 4: Vanguardia#

  • Gaussian splatting: Escenas 3D fotorrealistas a partir de fotos -- la ultima revolución en tecnología 3D web
  • WebXR: Realidad aumentada y virtual directamente en el navegador
  • Neural Radiance Fields (NeRF): Escenas 3D generadas por IA

Esfuerzo: Semanas a meses | Impacto en rendimiento: Muy alto

Gaussian Splatting para la web#

Quizás el desarrollo mas emocionante en el mundo del 3D web: Gaussian splatting. En lugar de crear modelos 3D manualmente, las escenas fotorrealistas se reconstruyen a partir de una colección de fotos o videos.

Como funciona#

  1. Captura de datos: 50-200 fotos de un objeto o espacio desde diferentes ángulos
  2. Entrenamiento: Una red neuronal calcula una representación 3D como millones de elipsoides gaussianos
  3. Renderizado: La escena se renderiza en tiempo real en el navegador -- con calidad fotorrealista

Limitaciones actuales#

  • Archivos grandes (50-200MB por escena)
  • Altos requisitos de GPU para renderizado fluido
  • Soporte de navegador aun no amplio para todas las características
  • Editar objetos individuales en la escena es difícil

Para que ya sirve#

  • Showrooms virtuales (inmobiliaria, museos, retail)
  • Visualización de productos para objetos únicos o artesanales
  • Documentación arquitectónica
  • Turismo y hostelería (tours virtuales)

Conclusion: 3D como herramienta, no como fin en si mismo#

El 3D en diseno web no es una característica que se anade porque impresiona. Es una herramienta que se despliega cuando resuelve un problema concreto: hacer un producto tangible, contar una historia espacialmente, presentar datos complejos visualmente.

La tecnología esta madura. Three.js y React Three Fiber permiten construir experiencias 3D que son performantes, accesibles y utilizables en todos los dispositivos. Spline democratiza el acceso para diseñadores. Y Gaussian splatting abre posibilidades completamente nuevas para representaciones fotorrealistas.

La clave esta en la gradación: elementos 3D sutiles para todos, experiencias complejas para proyectos donde aportan valor real.

En StudioMeyer, desarrollamos experiencias web 3D en todos los niveles de complejidad -- desde tarjetas 3D basadas en CSS hasta configuradores de producto completos. Combinamos experiencia técnica con sensibilidad de diseno para crear elementos 3D que no solo impresionan, sino que convierten.

Matthias Meyer

Matthias Meyer

Founder & AI Director

Founder & AI Director de StudioMeyer. Construye sitios web y sistemas de IA desde hace más de 10 años. Vive en Mallorca desde 2011 y dirige allí un estudio de IA y diseño web: diseño web, conectores IA, sistemas de IA y modelos propios, además de tres servidores MCP de autoservicio.

3dwebglthreejsinteraktivDiseño web
Crear webs

Tres posts más del mismo cluster temático que muestran cómo encaja el cuadro:

Visión general del cluster: WordPress vs. Desarrollo Custom: La Comparación Honesta para 2026