Mentalidad 3D para frontend: de la capa 2D a la escena en R3F

Aprende a pensar en escena, cámara, malla, geometría y material para dejar de tratar Three.js como un CSS con eje Z. Esta lección te da el vocabulario base y te lleva a una primera escena mínima en React Three Fiber.

El error más común al entrar en Three.js es pensar que una escena 3D es un layout 2D al que se le ha añadido profundidad. No funciona así. En 2D colocas cajas en un flujo visual; en 3D diriges una cámara dentro de un espacio con volumen, distancia, luz y materiales.

Por eso el vocabulario importa tanto. Si no distingues entre `mesh`, `geometry`, `material`, `camera` o `scene`, terminarás tocando cosas al azar. React Three Fiber no elimina esos conceptos: te obliga a expresarlos de forma declarativa y ordenada.

R3F es el puente correcto en 2026 porque te permite trabajar con mentalidad React sin esconderte de Three.js. Puedes componer escena con componentes, usar refs para animar y mantener una arquitectura legible cuando el proyecto crece.

En esta primera lección no buscamos hacer una web espectacular. Buscamos algo más importante: construir un modelo mental correcto para que todo lo que venga después tenga sentido técnico y visual.

  • En 2D colocas elementos. En 3D diriges percepción.
  • Un hero 2D se resuelve con composición, jerarquía tipográfica y spacing. Un hero 3D añade una variable nueva: el punto de vista. La misma malla puede parecer elegante, torpe o diminuta según la cámara, la luz y el material.
  • Eso obliga a pensar en distancia, escala relativa, ángulo de lectura y atmósfera. No basta con cargar un modelo. Hay que decidir cómo se ve, desde dónde se mira y qué historia visual cuenta.
  • Si estas piezas no te quedan claras, cada demo futura te parecerá magia negra.
  • La `scene` es el contenedor general. La `camera` define desde dónde miras. La `geometry` aporta la forma matemática y el `material` define la apariencia. Cuando unes geometría y material obtienes un `mesh`, que es lo que realmente añades a la escena.

Qué cambia al pasar de 2D a 3D web

En 2D colocas elementos. En 3D diriges percepción.

Un hero 2D se resuelve con composición, jerarquía tipográfica y spacing. Un hero 3D añade una variable nueva: el punto de vista. La misma malla puede parecer elegante, torpe o diminuta según la cámara, la luz y el material.

Eso obliga a pensar en distancia, escala relativa, ángulo de lectura y atmósfera. No basta con cargar un modelo. Hay que decidir cómo se ve, desde dónde se mira y qué historia visual cuenta.

Vocabulario esencial: escena, mesh, geometría y material

Si estas piezas no te quedan claras, cada demo futura te parecerá magia negra.

La `scene` es el contenedor general. La `camera` define desde dónde miras. La `geometry` aporta la forma matemática y el `material` define la apariencia. Cuando unes geometría y material obtienes un `mesh`, que es lo que realmente añades a la escena.

Esta separación no es teórica: te permite cambiar forma sin tocar apariencia, o apariencia sin reconstruir la geometría. Esa modularidad es exactamente lo que vuelve potente a Three.js dentro de proyectos reales.

  • `scene`: el contenedor del mundo 3D.
  • `camera`: el punto de vista y la perspectiva.
  • `geometry`: la forma base del objeto.
  • `material`: cómo se ve y cómo reacciona a la luz.
  • `mesh`: la unión entre forma y apariencia.

Por qué React Three Fiber es el puente correcto

R3F no sustituye a Three.js: lo hace más componible en un proyecto React.

En Three.js puro controlas manualmente escena, render loop y ciclo de vida. Eso da mucho poder, pero también dispersa responsabilidades rápidamente. R3F traduce los objetos 3D a componentes React y te deja pensar en composición, árbol de escena y responsabilidades por pieza.

Aun así, R3F no te ahorra entender Three.js. Si no sabes qué hace una cámara o por qué un material necesita luz, tampoco lo sabrás en React. La ventaja está en el puente, no en ocultar el motor.

La cámara no es un detalle: es dirección visual

El FOV y la posición no son números arbitrarios; son narrativa.

Una `PerspectiveCamera` con FOV muy amplio exagera profundidad y dramatiza el objeto, pero puede deformar. Un FOV más contenido resulta más elegante para producto. La posición también cambia el carácter: frontal para claridad, lateral para dinamismo, cenital para lectura técnica.

Muchos principiantes añaden más luces o cambian el modelo cuando lo que falla es una cámara mal decidida. En producción conviene ajustar cámara antes de animar nada.

Primera escena mínima con R3F

La meta no es lucirse; es ensamblar correctamente las piezas.

Una escena mínima útil ya te obliga a resolver cinco decisiones: dónde vive el `Canvas`, qué cámara usas, qué luz mínima necesita el material, qué malla renderizas y qué animación continua o puntual necesita.

En el ejemplo resuelto verás un cubo girando suavemente con `useFrame`. No es un efecto finalista. Es una forma controlada de entrenar escena, cámara y render loop sin contaminación conceptual.

  • Empieza con una sola malla y un solo material.
  • Usa `meshStandardMaterial` si quieres entrenar lectura de luz real.
  • No metas controles, HDR y postprocesado en la misma primera demo.
  • Si algo se ve mal, revisa antes cámara y luces que geometría.
Animaciones 3D en la Web
01

Mentalidad 3D para frontend: de la capa 2D a la escena en R3F

Aprende a pensar en escena, cámara, malla, geometría y material para dejar de tratar Three.js como un CSS con eje Z. Esta lección te da el vocabulario base y te lleva a una primera escena mínima en React Three Fiber.

Código del tema: Canvas · camera · mesh · material

📘 Teoría

Qué cambia al pasar de 2D a 3D web

En 2D colocas elementos. En 3D diriges percepción.

Un hero 2D se resuelve con composición, jerarquía tipográfica y spacing. Un hero 3D añade una variable nueva: el punto de vista. La misma malla puede parecer elegante, torpe o diminuta según la cámara, la luz y el material.

Eso obliga a pensar en distancia, escala relativa, ángulo de lectura y atmósfera. No basta con cargar un modelo. Hay que decidir cómo se ve, desde dónde se mira y qué historia visual cuenta.

1

En 2D

Trabajas sobre el plano de la pantalla con cajas, capas y composición visual.

2

En 3D

Trabajas dentro de un espacio con profundidad, perspectiva, luz y volumen.

3

Error típico

Intentar arreglar una mala cámara con más animación o más efectos.

4

Criterio profesional

Primero se decide la escena y la mirada; después se animan sus elementos.

Vocabulario esencial: escena, mesh, geometría y material

Si estas piezas no te quedan claras, cada demo futura te parecerá magia negra.

La `scene` es el contenedor general. La `camera` define desde dónde miras. La `geometry` aporta la forma matemática y el `material` define la apariencia. Cuando unes geometría y material obtienes un `mesh`, que es lo que realmente añades a la escena.

Esta separación no es teórica: te permite cambiar forma sin tocar apariencia, o apariencia sin reconstruir la geometría. Esa modularidad es exactamente lo que vuelve potente a Three.js dentro de proyectos reales.

  • `scene`: el contenedor del mundo 3D.
  • `camera`: el punto de vista y la perspectiva.
  • `geometry`: la forma base del objeto.
  • `material`: cómo se ve y cómo reacciona a la luz.
  • `mesh`: la unión entre forma y apariencia.
JSX mental correcto en R3F
Revisar
<mesh position={[0, 0, 0]}>
  <boxGeometry args={[1, 1, 1]} />
  <meshStandardMaterial color="#7c3aed" metalness={0.15} roughness={0.35} />
</mesh>

Por qué React Three Fiber es el puente correcto

R3F no sustituye a Three.js: lo hace más componible en un proyecto React.

En Three.js puro controlas manualmente escena, render loop y ciclo de vida. Eso da mucho poder, pero también dispersa responsabilidades rápidamente. R3F traduce los objetos 3D a componentes React y te deja pensar en composición, árbol de escena y responsabilidades por pieza.

Aun así, R3F no te ahorra entender Three.js. Si no sabes qué hace una cámara o por qué un material necesita luz, tampoco lo sabrás en React. La ventaja está en el puente, no en ocultar el motor.

1

`Canvas`

Es el punto de entrada a la escena 3D dentro del árbol React.

2

`useFrame`

Permite ejecutar lógica por frame sin convertir React en un infierno de re-renders.

3

`useRef`

Da acceso imperativo a mallas, grupos o luces cuando necesitas animarlas.

4

Drei

Aporta ayudas prácticas como cámaras, controles, entornos o loaders sin reescribir utilidades comunes.

La cámara no es un detalle: es dirección visual

El FOV y la posición no son números arbitrarios; son narrativa.

Una `PerspectiveCamera` con FOV muy amplio exagera profundidad y dramatiza el objeto, pero puede deformar. Un FOV más contenido resulta más elegante para producto. La posición también cambia el carácter: frontal para claridad, lateral para dinamismo, cenital para lectura técnica.

Muchos principiantes añaden más luces o cambian el modelo cuando lo que falla es una cámara mal decidida. En producción conviene ajustar cámara antes de animar nada.

Configuración mínima legible
Revisar
<Canvas shadows dpr={[1, 1.5]}>
  <PerspectiveCamera makeDefault position={[3.2, 1.8, 6]} fov={42} />
  <ambientLight intensity={0.45} />
  <directionalLight position={[4, 6, 3]} intensity={2.2} castShadow />
</Canvas>

Primera escena mínima con R3F

La meta no es lucirse; es ensamblar correctamente las piezas.

Una escena mínima útil ya te obliga a resolver cinco decisiones: dónde vive el `Canvas`, qué cámara usas, qué luz mínima necesita el material, qué malla renderizas y qué animación continua o puntual necesita.

En el ejemplo resuelto verás un cubo girando suavemente con `useFrame`. No es un efecto finalista. Es una forma controlada de entrenar escena, cámara y render loop sin contaminación conceptual.

  • Empieza con una sola malla y un solo material.
  • Usa `meshStandardMaterial` si quieres entrenar lectura de luz real.
  • No metas controles, HDR y postprocesado en la misma primera demo.
  • Si algo se ve mal, revisa antes cámara y luces que geometría.

🧭 Visuales clave

Mapa de una escena 3D en R3F

Sirve para fijar la relación entre contenedor de escena, punto de vista, luz y objeto visible antes de entrar en animación.

Diagrama de una escena 3D mostrando escena, cámara, luz y malla dentro de React Three Fiber

🧪 Aprende probando

Ejemplo Demo guiada: por qué la cámara cambia la lectura de un objeto Este preview usa JavaScript y canvas para aislar el concepto clave: la cámara y el FOV cambian la percepción del volumen. En la teoría verás el equivalente en R3F.
Ejemplo Demo visual: qué hace WebGL y qué simplifica Three.js Compara un triángulo dibujado con WebGL puro frente a una pieza equivalente en Three.js para fijar qué parte pertenece a la GPU y qué parte resuelve la librería.

🏁 Retos

Reto Reto 1: corrige una configuración de cámara No necesitas React para este reto: solo criterio. Ajusta los valores de cámara para pasar de una lectura agresiva a una lectura más elegante de producto.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .