# Three.js Progressive Visualization Specification ## Core Challenge Create **progressively sophisticated Three.js 3D visualizations** that demonstrate mastery of modern WebGL/WebGPU techniques through web-based learning. Each iteration fetches and learns from official Three.js resources, examples, and documentation to create increasingly advanced 3D experiences. ## Output Requirements **File Naming**: `threejs_viz_[iteration_number].html` **Content Structure**: Self-contained HTML file with Three.js visualization ```html Three.js - [Visualization Name]

[Visualization Title]

Technique: [Main technique demonstrated]

Learning: [What was learned from web source]

Web Source:
[URL]
Applied: [Specific technique from source]
``` ## Progressive Learning Dimensions ### **Foundation Level (Iterations 1-5)** Learn and apply basic Three.js concepts: - **Scene Setup**: Camera, scene, renderer initialization - **Basic Geometries**: BoxGeometry, SphereGeometry, PlaneGeometry - **Materials**: MeshBasicMaterial, MeshStandardMaterial, MeshPhongMaterial - **Lighting**: AmbientLight, DirectionalLight, PointLight - **Basic Animation**: Rotation, position changes, simple movements **Web Sources:** Official Three.js Getting Started, Basic Examples ### **Intermediate Level (Iterations 6-12)** Build on fundamentals with more complex techniques: - **Textures**: TextureLoader, UV mapping, normal maps - **Controls**: OrbitControls, FlyControls, user interaction - **Particle Systems**: Points, PointsMaterial, BufferGeometry - **Groups & Hierarchies**: Object3D grouping, parent-child relationships - **Advanced Geometry**: Custom geometries, geometry manipulation - **Post-Processing**: Basic effects, bloom, blur **Web Sources:** Three.js Examples, Intermediate Tutorials ### **Advanced Level (Iterations 13-18)** Master complex 3D programming: - **Custom Shaders**: ShaderMaterial, vertex & fragment shaders - **GLSL Programming**: Uniforms, attributes, varyings - **Advanced Lighting**: Shadow mapping, environment maps, IBL - **Physics Integration**: Collision detection, realistic motion - **Procedural Generation**: Noise functions, algorithmic geometry - **Advanced Materials**: Custom materials, multi-pass rendering **Web Sources:** Shader Examples, Advanced Three.js Techniques ### **Expert Level (Iterations 19+)** Push boundaries with cutting-edge techniques: - **WebGPU**: Modern GPU API, compute shaders - **Ray Marching**: SDF rendering, volumetric effects - **GPU Particles**: Millions of particles with compute shaders - **Complex Shaders**: Water simulation, atmospheric scattering - **Performance Optimization**: Instancing, LOD, frustum culling - **Advanced Effects**: Ocean waves, realistic materials, weather systems **Web Sources:** WebGPU Examples, Expert Shader Tutorials, Research Papers ## Inspiration from Ocean Examples The provided ocean examples demonstrate several key techniques to learn: **From webgl_shaders_ocean.html:** - Water shader with normal maps - Sky system with atmospheric scattering - Environment mapping with PMREM - Dynamic sun positioning - Shader uniforms for real-time control - GUI integration for parameter tweaking **From webgpu_ocean.html:** - WebGPU renderer setup - Modern shader syntax - WaterMesh and SkyMesh objects - Inspector integration - Advanced tone mapping ## Quality Standards ### **Technical Excellence** - **Clean Code**: Well-structured, commented, readable - **Modern APIs**: Use latest Three.js features and best practices - **Performance**: 60fps minimum, optimized render loops - **Responsive**: Works on different screen sizes - **Browser Support**: Modern browsers with WebGL/WebGPU support ### **Web Learning Integration** - **Source Attribution**: Clearly document the web source URL - **Specific Application**: Identify exact technique learned and applied - **Demonstrable Learning**: Code shows clear evidence of web-sourced knowledge - **Progressive Building**: Later iterations reference earlier learnings - **Unique Implementation**: Don't copy-paste; adapt and innovate ### **Visual Quality** - **Aesthetic Appeal**: Beautiful, engaging visualizations - **Smooth Animation**: No stuttering or jank - **Proper Lighting**: Realistic or artistically intentional lighting - **Color Harmony**: Thoughtful color palettes - **Camera Work**: Interesting viewpoints and movement ### **Documentation** - **Clear Info Panel**: Explains what the visualization demonstrates - **Web Source Citation**: Links to source with specific technique noted - **Learning Documentation**: What was learned and how it was applied - **Inline Comments**: Code explains complex techniques ## Three.js-Specific Requirements ### **Import Strategy** Use CDN-based imports for self-contained files: ```javascript ``` ### **Common Addons to Explore** - **Controls**: OrbitControls, TrackballControls, FlyControls - **Loaders**: GLTFLoader, OBJLoader, TextureLoader - **Post-Processing**: EffectComposer, RenderPass, UnrealBloomPass - **Objects**: Water, Sky, Lensflare - **Helpers**: AxesHelper, GridHelper, DirectionalLightHelper - **Utils**: VertexNormalsHelper, BufferGeometryUtils ### **Shader Resources** - GLSL syntax and built-in functions - Vertex shader transformations - Fragment shader effects - Uniform passing and updating - Texture sampling techniques ## Progressive Complexity Strategy ### **Iteration 1-5: Foundations** - Single object with basic material and lighting - Simple animations (rotation, scaling) - Basic camera positioning - One or two lights - Solid colors or simple textures ### **Iteration 6-12: Expanding Skills** - Multiple objects with different materials - Particle systems - User controls (OrbitControls) - Advanced lighting setups - Texture mapping and normal maps - Simple post-processing ### **Iteration 13-18: Advanced Techniques** - Custom shaders (vertex and fragment) - Procedural geometry generation - Complex animations and physics - Multi-pass rendering - Advanced materials (refraction, reflection) - Dynamic environments ### **Iteration 19+: Expert Mastery** - WebGPU implementations - Compute shaders - Advanced shader effects (water, fire, atmosphere) - Massive scenes with optimization - Cutting-edge techniques from research - Complex simulations (fluids, physics) ## Web Research Integration ### **Research Process for Each Iteration** 1. **Fetch Assigned URL**: Use WebFetch to retrieve Three.js documentation or example 2. **Deep Analysis**: Study the code, identify key techniques 3. **Extract Learnings**: Note 1-3 specific techniques to apply 4. **Plan Application**: Design how to use the technique in visualization 5. **Implement**: Code the visualization using learned technique 6. **Document**: Clearly show what was learned and from where ### **Quality Web Sources** - **Official Docs**: threejs.org/docs - **Official Examples**: threejs.org/examples - **Three.js Manual**: threejs.org/manual - **GitHub Wiki**: github.com/mrdoob/three.js/wiki - **Observable Notebooks**: observablehq.com/@mrdoob - **Community Tutorials**: discoverthreejs.com, threejs-journey.com ### **Learning Evidence** Each iteration must demonstrate: - Clear understanding of the web source - Proper implementation of learned technique - Original application (not copy-paste) - Comments explaining the technique - Visual proof that it works ## Ultra-Thinking Directive Before each Three.js visualization, deeply consider: **Web Learning Strategy:** - What specific Three.js technique does this URL teach? - How can I extract the most valuable knowledge from this source? - What code patterns or concepts are most important? - How does this build on previous iterations' learnings? **Technical Implementation:** - What's the most effective way to apply this technique? - How can I ensure smooth 60fps performance? - What Three.js APIs are most appropriate? - How should shaders or materials be structured? **Visual Design:** - What makes this visualization aesthetically compelling? - How does lighting enhance the scene? - What camera angle best showcases the technique? - How can animation improve the experience? **Progressive Building:** - How does this iteration advance beyond previous ones? - What new complexity is introduced? - Can I combine techniques from earlier iterations? - What's the next logical step in the learning path? **Quality Assurance:** - Does the code clearly demonstrate the learned technique? - Is the web source properly attributed? - Would someone learn from viewing this example? - Is the implementation unique and creative? ## Success Criteria A successful Three.js iteration: - **Runs Perfectly**: No errors, smooth 60fps animation - **Demonstrates Learning**: Clear application of web-sourced technique - **Looks Beautiful**: Visually engaging and well-crafted - **Is Self-Contained**: Single HTML file works standalone - **Documents Sources**: Clear attribution and learning explanation - **Shows Progression**: Builds on previous iterations appropriately - **Teaches Others**: Code quality that others can learn from Generate Three.js visualizations that showcase the power and beauty of modern 3D web graphics while demonstrating genuine progressive learning from web resources.