Skip to content
Back to skills

Threejs Webgl

ASecurity

3D/WebGL con Three.js: modelos GLB, heros 3D, configuradores, partículas, shaders, scroll 3D. TresJS (Vue/Inertia), R3F (Next), vanilla (Astro); assets, rendimiento móvil, dispose, fallback. No para charts, 2D ni animación DOM (gsap).

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 8, 2026
ai-agentsgoreactvuenextjsnodeapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned October 8, 2026

npx -y skills add petersonsenadevs/senzu --skill threejs-webgl --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Threejs Webgl?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Threejs Webgl
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/petersonsenadevs-threejs-webgl/badge)](https://www.skillsdirectory.com/skills/petersonsenadevs-threejs-webgl)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: threejs-webgl
description: "3D/WebGL con Three.js: modelos GLB, heros 3D, configuradores, partículas, shaders, scroll 3D. TresJS (Vue/Inertia), R3F (Next), vanilla (Astro); assets, rendimiento móvil, dispose, fallback. No para charts, 2D ni animación DOM (gsap)."
---

# threejs-webgl (capa Senzu, en español)

Skill upstream (inglés): `SKILL.upstream.md` (fundamentos, WebGPU, materiales, postprocesado, patrones),
`references/api_reference.md`, `references/materials_guide.md`, `references/optimization_checklist.md`,
`assets/starter_scene/`, `scripts/setup_scene.py`. Capa Senzu (español): `references/es/` y `templates/`.
Para React declarativo existe además la skill `react-three-fiber`; para combinar 3D + GSAP + Motion, `web3d-integration-patterns`.

Construyes 3D **útil y rápido**: refuerza el producto, carga en < 2 s, no rompe el LCP, funciona en móvil y desaparece
con elegancia sin WebGL o con `prefers-reduced-motion`. Estética y tono salen del `senzu/design-system/*/MASTER.md`
(skill `ui-ux-pro-max`); el movimiento ligado al scroll se coordina con `gsap-scrolltrigger`.

## 1. Detectar el stack e integrar
| Stack (perfil Senzu) | Integración | Referencia | Plantillas |
|---|---|---|---|
| Vue 3 (SPA o Laravel + Inertia) | TresJS (`@tresjs/core` + `@tresjs/cientos`) | `references/es/tresjs-vue.md` | `templates/HeroScene.vue`, `HeroContent.vue`, `useWebGLSupport.ts` |
| Next.js / React | React Three Fiber + drei, `next/dynamic` `ssr:false` | `references/es/r3f-next.md` (+ skill `react-three-fiber`) | `templates/HeroScene.tsx` |
| Astro | clase vanilla + `<script>` con View Transitions | `references/es/vanilla-astro.md` | `templates/scene.ts`, `scene-astro.ts`, `loading-overlay.html` |
| Vanilla / otros | clase `Scene` (init/resize/loop/dispose) | `SKILL.upstream.md`, `references/es/fundamentals.md` | `templates/scene.ts` |

Comprueba versiones instaladas (`@tresjs/cientos` cambió la API de `useGLTF`; nombres de `@tresjs/post-processing`
dependen del release): lee `node_modules/@tresjs/*/dist/*.d.ts` si dudas. No inventes APIs.

## 1b. Lectura mínima por tarea
| Tarea | Lee solo |
|---|---|
| Hero 3D con modelo GLB | referencia ES de tu stack (§setup + §GLTF) + plantilla `HeroScene.*` + `references/es/assets-loaders.md` §optimizar |
| Configurador de producto | referencia ES de tu stack + `references/es/fundamentals.md` §materiales/luces |
| Partículas / shader / distorsión de imagen | `references/es/shaders-basics.md` (sección del efecto) |
| Scroll-driven 3D | `references/es/gsap-three.md` |
| Va lento / consume memoria | `references/es/performance.md` §presupuesto + §dispose |
| Se ve lavado, negro o no aparece | `references/es/pitfalls.md` (Grep por el síntoma) |
| API concreta de Three.js | `references/api_reference.md` upstream (Grep) o `SKILL.upstream.md` por sección |

## 2. Flujo
1. **Objetivo y presupuesto**: qué aporta el 3D, dispositivo objetivo, peso del asset (hero ≤ 2 MB, texturas ≤ 2048 px,
   draw calls < 100 en móvil), tiempo de carga aceptable.
2. **Asset** (`references/es/assets-loaders.md`): GLB con transforms aplicados, `gltf-transform optimize in.glb out.glb
   --texture-compress webp` (+ Draco/Meshopt), verificado en un visor; en `public/models/`.
3. **Renderer correcto**: `outputColorSpace = SRGBColorSpace`, `toneMapping = ACESFilmicToneMapping`,
   `setPixelRatio(Math.min(devicePixelRatio, 2))`, sombras solo si aportan.
4. **Carga progresiva**: canvas lazy (`defineAsyncComponent` / `next/dynamic` / `client:visible`), overlay de progreso
   accesible, placeholder estático que mantiene el LCP.
5. **Interacción**: `Raycaster` o eventos de TresJS/R3F; `OrbitControls` con damping y límites; sin zoom por rueda en heros.
6. **Rendimiento y limpieza** (`references/es/performance.md`): pausar fuera del viewport y con pestaña oculta;
   `dispose()` de geometrías/materiales/texturas/renderer al desmontar (las SPA navegan sin recargar).
7. **Fallbacks**: sin WebGL → imagen/vídeo; reduced-motion → escena estática; `webglcontextlost` gestionado.
8. **Verificar**: FPS ≥ 50 en móvil medio (CPU 4x), memoria estable tras navegar 5 veces, consola limpia, Lighthouse ≥ 85.

## 3. Reglas duras
- Nada de Three.js en SSR: importar solo en cliente. Un solo `WebGLRenderer` por página.
- Siempre `dispose` al desmontar. Pixel ratio ≤ 2 (1,5 en móvil si hace falta).
- Color space correcto (`texture.colorSpace = SRGBColorSpace` solo en mapas de color).
- Sin modelos > 5 MB sin aprobación; texturas KTX2/WebP, geometría Draco/Meshopt.
- El 3D no bloquea el contenido: texto y CTA son HTML accesible encima del canvas.
- Sin `Stats`, Leva, helpers ni `markers` en producción.
- Errores frecuentes y solución: `references/es/pitfalls.md` (40 casos).

## 4. Decisiones rápidas
| Necesidad | Solución |
|---|---|
| Hero con modelo que gira y sigue al ratón | TresJS/R3F + `useGLTF` + loop con lerp hacia el puntero |
| Producto configurable | Un GLB, `material.color.set(token)`, `Environment` HDRI, `ContactShadows` |
| Scroll-driven 3D (cámara por secciones) | GSAP timeline con labels + ScrollTrigger `scrub` (`references/es/gsap-three.md`) |
| Fondo de partículas ligero | `Points` + shader (`references/es/shaders-basics.md`), ≤ 20k puntos en móvil |
| Distorsión de imagen al hover | plane + `ShaderMaterial` con `uHover`/`uTime` |
| Escena hecha en Spline | exportar GLB e integrarlo aquí (evita el runtime de Spline) — ver skill `spline-interactive` |
| Muchas copias del mismo objeto | `InstancedMesh` |
| Vidrio/reflejos realistas | `MeshPhysicalMaterial` + `transmission` + `Environment` (solo desktop) |

## 5. Salida esperada
Antes del código: objetivo, presupuesto, integración elegida, fallback y limpieza. Después: código + pasos de
optimización del asset + verificación (FPS, memoria, consola).

Files in this skill

  • SKILL.md5.7 KB
  • references/es/assets-loaders.md14.8 KB
  • references/es/fundamentals.md18.6 KB
  • references/es/gsap-three.md11.6 KB
  • references/es/performance.md15.3 KB
  • references/es/pitfalls.md11.4 KB
  • references/es/r3f-next.md15.5 KB
  • references/es/shaders-basics.md18.7 KB
  • references/es/tresjs-vue.md15.7 KB
  • references/es/vanilla-astro.md9.9 KB
  • templates/HeroContent.vue4.2 KB
  • templates/HeroScene.tsx8.1 KB
  • templates/HeroScene.vue4.5 KB
  • templates/loading-overlay.html5.8 KB
  • templates/scene-astro.ts4.8 KB
  • templates/scene.ts13.7 KB
  • templates/useWebGLSupport.ts3.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.