05 Capítulo 5 · Lección 7

Meshes

Redactado por
Author Sebastian V.
Fecha de publicación

06/02/2026

Tiempo de lectura

6 min

Tema

Three.js

¿Qué es un Mesh?

Hasta este punto tenemos Geometrías (el esqueleto) y Materiales (la piel) como entes separados. Un Mesh (Malla) es el objeto final real y tangible. Es la fusión mágica entre una geometría y un material. Es el objeto que finalmente existe en la escena 3D.

El sistema TRS: Transform, Rotate, Scale

Una vez que tienes un Mesh, necesitas poder manipularlo en tu universo. Para ello, los Meshes heredan un conjunto de propiedades que te permiten manipularlos en los ejes X (izquierda/derecha), Y (arriba/abajo) y Z (adelante/atrás).

Position (Posición)

Donde está el objeto relativo al centro del mundo (0,0,0). Puedes moverlo de dos maneras:
mesh.position.x = 2; o mesh.position.set(2, 0, 0);

Rotation (Rotación)

Hacia dónde mira el objeto. CUIDADO: La rotación en Three.js NO usa grados (0 a 360). Usa Radianes. Medio giro (180 grados) es Math.PI. Un cuarto de giro (90 grados) es Math.PI / 2.

Scale (Escala)

El tamaño del objeto relativo a sí mismo. Por defecto es 1 en todos los ejes. Si pones mesh.scale.set(2, 2, 2) el objeto será el doble de grande. Usar escalas negativas (ej. -1) volteará el objeto como un espejo.

Grupos (La Organización del Mundo)

Imagina que tienes un coche hecho de varios meshes (llantas, chasis, vidrios). Si quieres mover el coche hacia adelante, ¿vas a mover los 10 meshes uno por uno? No. Creas un THREE.Group, metes todos los meshes allí, y solo mueves el grupo. Las piezas se moverán juntas relativas al grupo.

Consejo profesional

Math.PI es tu mejor amigo en rotaciones. Piensa en Math.PI como 180° y Math.PI * 2 como 360°. Te ahorrará muchos dolores de cabeza intentar convertir grados a radianes manualmente.

Posicionando Meshes y Grupos

> _
// 1. Unir esqueleto y piel
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshStandardMaterial({ color: 0xff0000 });
const cube = new THREE.Mesh(geometry, material);

// 2. Manipular TRS
cube.position.set(0, 1, 0);     // 1 unidad hacia arriba
cube.rotation.y = Math.PI / 4;  // Rotar 45 grados en Y
cube.scale.set(2, 0.5, 1);      // Estirar y aplastar

// 3. Agrupar objetos
const carGroup = new THREE.Group();
carGroup.add(chasisMesh);
carGroup.add(llantaMesh);

// Al rotar el grupo, las llantas y el chasis rotan juntos
carGroup.rotation.y = Math.PI;
scene.add(carGroup);
> _

Varios meshes contenidos en un mismo grupo giratorio.

Errores comunes

01
Gimbal Lock (Bloqueo de ejes) Al rotar objetos en varios ejes a la vez, puedes causar un "Gimbal Lock" donde los ejes se solapan. Three.js usa Euler order (XYZ). Si esto pasa, podrías necesitar usar Quaternions (matemáticas avanzadas).
02
Reutilizar Materiales mal Si tienes 100 cubos con el MISMO material y haces cube[0].material.color.set("red"), ¡los 100 cubos se volverán rojos! Los materiales se comparten por defecto por eficiencia. Usa clone() si necesitas materiales únicos.

Practica lo aprendido

Alinea tus objetos.

01 Instancia un Mesh que fusione SphereGeometry y BasicMaterial.
02 Desplaza el Mesh en el eje X usando .position.x = 2.
03 Créate un THREE.Group(), añade tu Mesh al grupo, y luego añade el grupo a la Scene.