Skip to main content
  1. Computer_graphics/

Shadowing

·418 words·2 mins· ·
Fondamenti di computer graphics - This article is part of a series.
Part 9: This Article

Lo shadowing e la pratica di computare le ombre dato un oggetto, una fonte luminosa e un osservatore, un punto e in ombra se la fonte luminosa non lo raggiunge ed e visibile dall’osservatore

Le ombre variano molto a seconda delle dimensioni dell’oggetto, le condizioni di illuminazione e la posizione dell’osservatore, risultano perciò molto complesse da computare

Ombra vs penombra
#

L’ombra e quella che una fonte luminosa proietta nei punti non direttamente raggiungibili da essa, mentre la penombra e una zona di punti non raggiunti completamente dalla luce

❗ Warning

Per poter avere condizioni di penombra la fonte luminosa non deve essere puntiforme!

ℹ️ Important

se la posizione relativa della fonte luminosa e dell’osservatore varia e necessario computare di nuovo tutte le ombre (molto costoso)

Ombre su piani
#

Algoritmo che punta a disegnare data una fonte luminosa e un oggetto una geometria piana da poter colorare con il colore ombra, questo viene fatto per mezzo di una proiezione su piano

Ombre su piani cartesiani
#

IN questo caso speciale e sufficiente trovare la coordinata $X$ sul piano del punto $P$ ottenuto come proiezione e lo si può fare con una similitudine fra triangoli:

si ha quindi che i triangoli di lati $L,V$ e $L,P$ sono paragonabili

$$ \frac{P_x- L_x}{V_x -L_x} = \frac{L_y}{L_y-V_y} \Rightarrow $$

$$ P_x = \frac{L_yV_x -L_xV_y}{L_y-V_y} $$

Nel caso in cui il piano non sia cartesiano e necessario proiettare i vertici del poligono sul piano arbitrario

Ombre nello z-buffer: shadow-buffer
#

Per implementare le ombre nello z-buffer si ricorre a un algoritmo detto shadow-buffer

Lo shadow buffer e un buffer in memoria che computa l’algoritmo z-buffer ma dal punto di vista della sorgente luminosa

flowchart TD A[compute shadow buffer value] B{shadowbuffer
<
z-buffer} C[cast shadow] D[visible point] A --> B B --yes--> C B --no --> D

❗ Warning

Lo shadow buffer risulta fattibile solo per scene con singole fonti di luce in quanto per poter computare multiple fonti si necessita di una fonte di luce per ognuna di esse

Gestire l’aliasing
#

Quando si computano le ombre si hanno sempre problemi di aliasing dovuti al fatto che l’algoritmo shadow buffer compie una decisione netta sul mettere in ombra o meno un pixel, in questo caso si applicano tecniche simili a quanto visto per le textures

Luci non puntiformi
#

Nella realtà le luci non sono mai puntiformi, questo porta a ombre morbide come visto in precedenza in questo caso si adottano tecniche di blur delle ombre per simulare l’effetto di una luce non puntiforme

Matteo Longhi
Author
Matteo Longhi
I’m a software engineer with a passion for Music, food, dogs, videogames and open source software, i’m currently working as a devops engineer
Fondamenti di computer graphics - This article is part of a series.
Part 9: This Article