Skip to main content

webgl-scene-wow

Use al crear escenas Three.js hiperrealistas con boids.

インストールへ移動

ソース情報

リポジトリ
Ntizar/MasterMind
ソースの最終更新活動
2026年8月31日 10:38
検出された SKILL.md の言語
スペイン語
スター
2
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
webgl-scene-wow
description
Use al crear escenas Three.js hiperrealistas con boids.
version
1.0.0
tags
["threejs","webgl","shaders","boids","agua","caustics","hiperrealismo"]
# Escenas "wow" con Three.js — estándar hiperrealista interactivo Referencia mental: el estanque koi visto desde arriba donde lanzas pan y los peces nadan a comerlo. Ese nivel se logra con 6 técnicas combinadas, no con un truco único. ## Las 6 técnicas (receta completa) 1. **Agua = render target + shader de superficie** - Textura de normales animada (2 capas desplazándose en direcciones distintas) o simulación de ripples en ping-pong FBO (`height[i] = (promedio vecinos)*2 - prev` — propagación de ondas real, no seno). - Caústicas: patrón de Voronoi animado multiplicado sobre el fondo, o shader con `pow(voronoi, 8.0)`. Referencia: threejs.org/examples `shader/ocean`; blog de Maxime Heckel (blog.maximeheckel.com) para caústicas. 2. **Boids para criaturas** (peces, pájaros, enjambres) - 3 fuerzas: separación, alineación, cohesión + atractor (la comida) + repulsor (toque = susto). - En GPU: FBO simulation (posición/velocidad en texturas float; referencia threejs `community/gpgpu-birds`). En CPU: <100 criaturas va sobrado. - Detalle que lo vende: los peces NO van rectos al atractor — `steer = normalize(desired - velocity) * maxForce`, y los más rápidos llegan primero (competencia realista). 3. **Interacción física plausible** - Click = soltar comida (partícula que flota y hunde lento, con drift). Los peces compiten por ella; al comerla desaparece con puf de burbujas. - Ripples donde tocas: perturbar el FBO de altura, no un efecto cosmético encima. 4. **Profundidad y luz** - Fog exponencial con color del agua; sombras suaves PCF; env map para reflejos (`PMREMGenerator`). - Fondo del estanque: rocas con textura + normal map + oclusión; profundidad = más oscuro/azul. 5. **Postprocesado** (lo que separa "demo" de "hiperrealista") - UnrealBloomPass sutil, vignette, grano. En móvil: desactivar bloom en GPUs flojas. 6. **Vida ambiental** - Partículas: burbujas, motas en suspensión, hojas (opacidad 0.1-0.3, pocas). - Sonido opcional solo tras interacción del usuario (autoplay bloqueado). ## Recetas por escena | Escena | Combina | |---|---| | Estanque koi (vista cenital) | ripples FBO + caústicas voronoi + boids CPU + comida que se hunde | | Océano desde playa | threejs Water shader + cielo Sky + Gerstner (ver skill oleaje-threejs) | | Enjambre/escuela 3D | GPGPU boids + instanced mesh + trail fade | | Terrario/jardín zen | caústicas + partículas polen + viento en shaders de vegetación | ## Pitfalls - **Móvil primero**: FBO float requiere `EXT_color_buffer_float` en WebGL2 — fallback (mitad de boids, sin bloom). - Ping-pong FBO: 2 render targets y SWAPEAR, no recrear (fuga de memoria). - Caústicas voronoi falsas si no se modulan por profundidad — multiplicar por `smoothstep` de profundidad. - Boids con dt variable explotan (NaN) — clamp dt a 1/30 máx. - En vertex shader: solo WebGL2, `texture` (no texture2D), `texelFetch` para grid. ## Verificación - Headless puppeteer + SwiftShader (patrón biblia Water3J): screenshot no negro. - FPS con `performance.now()` en 20 frames — <16ms promedio en desktop. - Interacción: lanzar comida → un boid debe acercarse (log distancia mínima < radio). ## Referencias - threejs.org/examples: `shader/ocean`, `community/gpgpu-birds`, `postprocessing/*` - Maxime Heckel — caústicas y shaders: blog.maximeheckel.com - m4ym4y/mayas-aquarium-3d — acuario react-three-fiber con feed fish - kucdinteractive koiPond — UX: tap corto=ripples, mantener=atraer peces - Skill hermano: `oleaje-threejs` (física de oleaje real, Water3J)
GitHubで見る