Introducción a mundos 3D
Last updated
Last updated
Enteder conceptualmente la técnica de ray marching
Divertirse dibujando
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.
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".
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.