+-

Animación de Shaders WebGL Vinculada al Progreso del Desplazamiento

Aportación por BarbaraEberle, Ago 07, 2024

Tema anterior - Siguiente tema

BarbaraEberle

Requisitos Previos
Asegúrate de tener instalados los siguientes componentes:
- Node.js y npm
- Un entorno de desarrollo adecuado (por ejemplo, Visual Studio Code)

Paso 1: Configuración del Proyecto
1. Crea una nueva carpeta para tu proyecto y navega dentro de ella:
   
bash
    mkdir shader-scroll
    cd shader-scroll
   

2. Inicializa un nuevo proyecto de Node.js:
   
bash
    npm init -y
   

3. Instala las dependencias necesarias:
   
bash
    npm install pug sass three gsap
   

Paso 2: Configuración de Pug
1. Crea una carpeta llamada `src` dentro de tu proyecto.
2. Dentro de `src`, crea una carpeta llamada `views` y dentro de ella un archivo llamado `index.pug`.
3. En `index.pug`, agrega el siguiente código:
   
pug
    doctype html
    html(lang="en")
      head
        meta(charset="UTF-8")
        meta(name="viewport" content="width=device-width, initial-scale=1.0")
        title Shader Scroll
        link(rel="stylesheet" href="styles.css")
      body
        main
          each section in sections
            section(id=section.id class=section.class)
        script(src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js")
        script(src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js")
        script(src="scripts.js")
   

Paso 3: Configuración de Sass
1. Dentro de `src`, crea una carpeta llamada `styles` y dentro de ella un archivo llamado `styles.scss`.
2. En `styles.scss`, agrega el siguiente código:
   
scss
    body {
      margin: 0;
      padding: 0;
      font-family: Arial, sans-serif;
    }
    main {
      height: 300vh;
    }
    section {
      height: 100vh;
      display: flex;
      justify-content: center;
      align-items: center;
      background: #333;
      color: white;
      font-size: 2rem;
    }

3. Compila el archivo `styles.scss` a `styles.css` utilizando Sass:
   
bash
    sass src/styles/styles.scss src/styles/styles.css

Paso 4: Configuración de Three.js y GSAP
1. Dentro de `src`, crea un archivo llamado `scripts.js`.
2. En `scripts.js`, agrega el siguiente código:
   
js
    import * as THREE from 'three';
    import gsap from 'gsap';

    const sections = document.querySelectorAll('section');
    const renderer = new THREE.WebGLRenderer();
    const scene = new THREE.Scene();
    const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

    document.body.appendChild(renderer.domElement);
    renderer.setSize(window.innerWidth, window.innerHeight);
    camera.position.z = 5;

    const geometry = new THREE.PlaneGeometry(2, 2, 20, 20);
    const material = new THREE.ShaderMaterial({
      vertexShader: `...`, // Aquí va tu shader de vértices
      fragmentShader: `...`, // Aquí va tu shader de fragmentos
      uniforms: {
        u_time: { value: 0.0 },
        u_scroll: { value: 0.0 }
      }
    });

    const plane = new THREE.Mesh(geometry, material);
    scene.add(plane);

    function animate() {
      requestAnimationFrame(animate);
      renderer.render(scene, camera);
    }

    animate();

    window.addEventListener('scroll', () => {
      const scrollY = window.scrollY;
      const scrollMax = document.body.scrollHeight - window.innerHeight;
      material.uniforms.u_scroll.value = scrollY / scrollMax;
    });
   

Paso 5: Ejecutar el Proyecto
1. En el archivo `package.json`, agrega un script para compilar Pug y Sass:
    json
    "scripts": {
      "build": "pug src/views/index.pug --out dist && sass src/styles/styles.scss dist/styles.css"
    }
   

2. Ejecuta el script para compilar los archivos:
bash
    npm run build


3. Abre el archivo `dist/index.html` en tu navegador para ver tu animación.

Aportación rápida

Nota: este mensaje no se mostrará hasta que sea aprobado por un moderador.

Nombre:
Correo electrónico:
Atajos: ALT+S para publicar/enviar o ALT+P para previsualizar

Open Access

Únete a nosotros en nuestro compromiso de promover el acceso abierto y la difusión del conocimiento. Tu apoyo financiero nos permite continuar con nuestros proyectos de Open Access. Además, como agradecimiento, recibirás una hermosa página web como regalo. ¡Juntos podemos hacer la diferencia en el mundo del conocimiento abierto!

Powered by EzPortal