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
![]() |
![]() |
![]() |