Introducción a mundos 3D

Objetivo

  • Enteder conceptualmente la técnica de ray marching

  • Divertirse dibujando

Slides

Script: raymarching simple

Esfera simple

Notas

  • En ray marching, "disparamos" rayos desde la cámara (origen) hacia la escena para determinar lo que la cámara "ve".

  • Cada rayo corresponde a un píxel en la pantalla, y su dirección determina hacia dónde apunta en el espacio 3D.

  • La dirección del rayo:

    • necesitas proyectar el plano 2D (coordenas uv()) en el espacio 3D para determinar hacia dónde va cada rayo.

    • la componente z determina que tan cerca/lejos esta la proyección del espacio 2D.

    • normalizamos la dirección del rayo para que las direcciones sean consistentes, es decir, midan lo mismo a la hora de empezar a marchar.

Script: BloBs!

Notas

  • Vimos como hacer distorciones:

    • rotando al rayo antes de calcular la forma.

    • luego de calcular el valor numérico de la forma, agregar una sinusoidal (sin())

  • Para poder describir varios objetos tomamos el mínimo valor entre las distancias de las figuras

  • smin(d1,d2,v) es una manera suave (smooth) de unir ambas figuras. Qué tan suave sea depende del valor de v, a mayor v "más unión".

Script: Blobs + Canvas

Notas

  • En vez de describir la escena a través de definir SDFs matemáticamente, usamos un canvas para dibujar.

    • Leemos de la textura como si fuese una grilla 10x10, cada celda dibuja una esfera en caso de ser pintada de blanco.

    • Usamos las metaballs para dibujar blobs.

  • Bonus: llamando las funciones repeat(), y repeatLimit() reproducimos el espacio(sistema de coordenadas) haciendo que nuestra sdfCanvas se repita infinitamente, o dentro de límites definidos. Esto nos permite crear patrones repetitivos o estructuras periódicas en la escena sin necesidad de definir manualmente cada instancia.

Extra

Visualizacion de la funcion que usamos para acumular color

Last updated