7.5.2.1        Blob



I blob sono oggetti versatili ed interessanti. Matematicamente sono superfici equipotenziali di un campo scalare, cioè, la loro superficie è definita dalla forza del campo in ciascun punto. Se la forza in un punto è uguale al valore di soglia, quel punto si trova sulla superficie, negli altri casi no. Immagina ogni componente di un blob come un oggetto che galleggia nello spazio. Quest'oggetto è riempito da un campo che ha il suo massimo al centro dell'oggetto e che decade a zero sulla superficie. La forza del campo di tutte le componenti viene sommata per formare il campo complessivo del blob. POV-Ray cerca i punti dove il campo ha un valore predefinito (cioè quello del valore di soglia, detto threshold). Tutti questi punti formeranno la superficie dell'oggetto. Punti con un valore della forza maggiore del valore di soglia sono all'interno dell'oggetto, mentre i punti con un valore di forza minore di quello di soglia, si trovano all'esterno. C'è un modo più semplice di immaginarsi i blob. Si possono considerare come unioni di componenti flessibili che si attraggono o si respingono l'un l'altro. La superficie dei componenti si estende gradualmente fino a congiungerli, come se fossero fatti di miele, o di una qualche sostanza vischiosa.
Un blob è costituito da componenti sferiche e cilindriche, ed è definito come segue :

blob {
threshold VALORE_DI_SOGLIA
cylinder { <ESTREMITA'1>, <ESTREMITA'2>, RAGGIO, [ strength ] FORZA }
sphere { <CENTRO>, RAGGIO, [ strength ] FORZA }
[ component FORZA, RAGGIO, <CENTRO> ]
[ hierarchy on/off]
[ sturm ]
}

La parola chiave threshold determina il valore totale della forza del campo ricercato da POV-Ray. Seguendo il raggio di luce nello spazio, ed osservando come questo è influenzato da ogni componente, POV-Ray determina i punti dello spazio in cui la forza del campo è uguale al valore di soglia. Il seguente elenco mostra alcuni aspetti importanti del valore di soglia :

1) Il valore di soglia
threshold deve essere positivo.
2) Un componente scompare se il valore di soglia è maggiore della sua forza.
3) Più grande è il valore di soglia, più la superficie sarà vicina al centro dei componenti.
4) Minore è il valore di soglia, più la superficie sarà vicina alla superficie dei componenti.

I componenti cilindrici sono specificati dalla parola chiave
cylinder che definisce un cilindro formato dalle estremità nei punti <ESTREMITA'1> ed <ESTREMITA'2> e dal raggio. Le estremità del cilindro sono emisferiche. I componenti sferici sono invece specificati dalla parola chiave sphere che definisce il centro ed il raggio. Ciascun componente può essere spostato, ruotato, scalato, e gli può essere assegnata una texture. La sintassi completa per i componenti sferici e cilindrici è :

sphere { <CENTRO>, RAGGIO, [strength] FORZA
[ translate <VETTORE> ]
[ rotate < VETTORE > ]
[ scale < VETTORE > ]
MODIFICATORI_DI_TEXTURE
}

cylinder { <END1>, <END2>, RAGGIO, [strength] FORZA
[ translate < VETTORE > ]
[ rotate < VETTORE > ]
[ scale < VETTORE > ]
MODIFICATORI_DI_TEXTURE
}

Scalando lungo uno o due assi un componente sferico, si possono creare componenti ellissoidali. La parola chiave component dà un componente sferico ed è usata solo per mantenere la compatibilità con le precedenti versioni di POV-Ray. Il parametro strenght è un valore decimale che specifica la forza del campo nel centro dell'oggetto. La forza può essere positiva o negativa. Un valore positivo farà sì che un componente attragga gli altri componenti, una forza negativa glieli farà respingere.
I componenti di blob diversi non si influenzano a vicenda.
Si deve tenere a mente che :

1) Il valore della forza può essere positivo o negativo. Zero non è un valore accettabile perché in questo caso non ci sarebbe alcun campo di forza, e quindi è come se il componente non fosse stato aggiunto.
2) Se il valore della forza è positivo, POV-Ray aggiunge la forza del componente allo spazio attorno al suo centro. Se la forza aggiunta è maggiore del valore di soglia, la superficie del componente è visibile.
3) Se il valore della forza è negativo, POV-Ray sottrae il campo del componente dallo spazio circostante. Questo ha effetto solo se ci sono componenti positive vicine. Quello che succede è che la superficie delle componenti positive che lo circondano viene respinta a partire dal centro del componente negativo.

I componenti di ogni blob sono delimitati automaticamente da una gerarchia di sfere, per accelerare i test di intersezione raggio/oggetto e le altre operazioni. Usando la parola chiave facoltativa
hierarchy si può disattivare questa funzione.
Un esempio di un blob a tre componenti è :

blob {
threshold 0.6
sphere { <.75, 0, 0>, 1, 1 }
sphere { <-.375, .64952, 0>, 1, 1 }
sphere { <-.375, -.64952, 0>, 1, 1 }
scale 2
}

Se il tuo blob è costituito da un unico componente, allora la superficie visibile è come quella del componente, cioè una sfera o un cilindro la cui superficie si trova all'interno i quella specificata. L'esatta posizione della superficie può essere determinata usando l'equazione del blob che si trova qui sotto (probabilmente non avrai mai bisogno di saperla, i blob sono più utili per il loro aspetto che per modellazione precisa).
Per quelli più portati per la matematica, questa è la formula che POV-Ray usa per creare i blob. Non è necessario capirla per usarli. La formula usata per un blob composto da un unico componente è :

densità = forza*(1-raggio^2)^2