Obsah
1. Bodové a úsečkové prvky kostry implicitních ploch
2. První demonstrační příklad: jeden bodový a tři úsečkové prvky kostry
3. Použití záporných „sil“ při tvorbě povrchů s vytlačenými částmi či otvory
4. Druhý demonstrační příklad: použití prvku kostry se zápornou „silou“
5. Třetí demonstrační příklad: animace vlivu postupné změny síly jednoho prvku kostry
6. Změna individuálních vlastností jednotlivých prvků kostry implicitní plochy
7. Čtvrtý demonstrační příklad: nastavení individuálních vlastností prvků kostry
8. Obsah dalšího pokračování seriálu
1. Bodové a úsečkové prvky kostry implicitních ploch
V předchozí části tohoto seriálu jsme si řekli, jakým způsobem se v POV-Rayi vytváří základní typy implicitních ploch a na jakém teoretickém základě je postaveno jejich vykreslování a způsob modelování (především organických tvarů) s využitím jejich specifických vlastností. Dnes téma implicitních ploch dokončíme popisem různých variant prvků kostry, způsobem použití prvků kostry se zápornou „silou“ (intenzitou), změnou individuálních vlastností jednotlivých prvků kostry (například jejich barvy, textury či měřítka) a nakonec si ukážeme dva velmi jednoduché způsoby animování implicitních ploch pomocí průběžné změny některých jejich vlastností. Minule jsme si také uvedli zjednodušený způsob zápisu implicitní plochy v souborech určených pro vykreslování (rendering) pomocí POV-Raye. Zápis jednoduché implicitní plochy se třemi bodovými prvky kostry a texturou společnou pro celou implicitní plochu vypadal následovně (výsledek je zobrazen na prvním obrázku):
blob { // definice implicitní plochy s využitím původní syntaxe
threshold 0.6 // hraniční hodnota
component 1.0, 1.0, < 0.750, 0, 0> // prvek kostry: síla, poloměr, souřadnice v prostoru
component 1.0, 1.0, <-0.375, 0.64952, 0> // druhý prvek kostry
component 1.0, 1.0, <-0.375, -0.64952, 0> // třetí prvek kostry
texture {
pigment {
color red 0 green 0 blue 1 // barva materiálu povrchu implicitní plochy
}
finish { // optické vlastnosti materiálu povrchu
ambient 0.2
diffuse 0.4
specular 0.6
phong 0.6
phong_size 3
reflection 0
}
}
}
Obrázek 1: Implicitní plocha složená ze tří bodových prvků kostry
Tento způsob zápisu implicitních ploch je sice stále podporován i v nejnovějších verzích POV-Raye, má však některé nevýhodné vlastnosti, mezi které patří nemožnost určení typu prvku kostry (všechny elementy component jsou považovány za bodové prvky kostry, což odpovídá tomu, že se po dlouhou dobu jednalo o jediné podporované typy) a také to, že jednotlivým prvkům kostry není možné přiřazovat individuální vlastnosti, protože takto zapsaná implicitní plocha je považována za neměnnou a jednolitou, i když ve skutečnosti může být složena z několika navzájem izolovaných tvarů v závislosti na velikosti, vzdálenosti a silách jednotlivých prvků kostry. Postupným vývojem možností POV-Raye se došlo k novějšímu způsobu zápisu implicitních ploch, ve kterém jsou elementy component nahrazeny relativně samostatnými poduzly, z nichž každý obsahuje vlastnosti jednoho prvku kostry. Před popisem novějšího způsobu zápisu si však řekněme základní informace o úsečkových prvcích kostry, kvůli nimž se vlastně syntaxe POV-Raye rozšiřovala.
Obrázek 2: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na hodnotu 1,5)
Základní tvary prvků kostry, které byly použity v demonstračních příkladech v předchozí části tohoto seriálu, jsou definovány jako osamocené body tvořící středy pomyslných koulí. Každý prvek kostry je v původním zápisu představován jedním elementem component. V POV-Rayi verze 3 (a samozřejmě v jakékoli verzi vyšší) je však možné použít i úsečkový prvek kostry. Jeho použití je podobné jako v případě bodových prvků kostry, pouze se liší tvarem vykreslené implicitní plochy nebo její části. Úsečkový prvek kostry je zadán, jak již jeho název napovídá, úsečkou (v případě POV-Raye dvěma koncovými body úsečky, i když je obecně možný například i parametrický zápis) a intenzitou, tj. mírou slévání tohoto prvku kostry s ostatními částmi implicitní plochy.
Obrázek 3: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na hodnotu 1,0)
Při vykreslení samostatného prvku se okolo úsečky vytvoří válec se zaoblenými podstavami, které mají tvar polokoule. Při interakci více prvků opět dochází k „lepení“ jednotlivých prvků k sobě. Výška válce závisí na délce úsečky, jeho poloměr (a poloměr polokoulí, které válec z obou stran uzavírají) je závislý na zadané intenzitě. Kombinace bodových a úsečkových prvků kostry bude vysvětlena v navazujících kapitolách.
Obrázek 4: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na hodnotu 0,5)
Nový způsob zápisu (syntaxe) implicitních ploch stále zůstává jednoduchý. Jediná změna spočívá v náhradě elementu component za poduzly s názvy sphere a cylinder. Poduzlem s názvem sphere se specifikuje bodový prvek kostry, který má při svém vykreslení skutečně tvar koule (nesmí však dojít ke slévání s dalšími částmi implicitní plochy, protože pak samozřejmě dojde ke změně celkového tvaru). U tohoto uzlu se zadávají nejméně tři údaje: souřadnice středu prvku kostry (z hlediska syntaxe se jedná o vektor), hraniční poloměr prvku kostry (zde je intenzita či „síla“ prvku kostry nulová) a vlastní intenzitu/„sílu“ prvku kostry, která ovlivňuje jeho skutečnou velikost a tvar při vykreslení. Poduzlem s názvem cylinder je specifikován úsečkový prvek kostry, protože ten má, jak jsme se dozvěděli v předchozích odstavcích, při vykreslení tvar válce se zaoblenými podstavami. Tento prvek kostry je zadán čtveřicí hodnot: dvojicí vektorů určujících středy obou podstav válce, hraničním poloměrem prvku kostry a intenzitou/„silou“.
Obrázek 5: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na zápornou hodnotu –1,0)
Následuje jednoduchá ukázka implicitní plochy složené z bodového a úsečkového prvku kostry:
blob { // definice implicitní plochy s využitím nové syntaxe
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<-2, 0, 0> // souřadnice středu
1.0, // poloměr
2.0 // síla
}
cylinder { // úsečkový (válcový) prvek kostry
<-2, 0, 0> // střed první podstavy
< 2, 0, 0> // střed druhé podstavy
0.5, // poloměr
1.0 // síla
}
interior { // vlastnosti "vnitřku" implicitní plochy
caustics 1.0
ior 1.5
}
texture { // textura - povrch implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color blue 0.90 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesku
phong_size 300
reflection 0.15 // odrazivost
}
}
rotate <15,15,0>
scale 1.8
}
2. První demonstrační příklad: jeden bodový a tři úsečkové prvky kostry
V dnešním prvním demonstračním příkladu je ukázána tvorba složitější implicitní plochy, která je vymodelována pomocí čtyř prvků kostry. Jedná se o tři úsečkové prvky kostry, které tvoří trojrozměrný kříž (všechny úsečkové prvky kostry se protínají v jednom bodě a jejich osy jsou na sebe kolmé) a čtvrtým prvkem kostry této implicitní plochy je prvek bodový, jehož střed leží na konci jednoho z úsečkových prvků kostry. Materiál implicitní plochy je vytvořen z modrého skla a pomocí voleb caustics a ior je povolena tvorba „prasátek“ a lomů světelného paprsku na hranici mezi implicitní plochou a okolním prostředím. Následuje výpis zdrojového kódu prvního demonstračního příkladu:
// ------------------------------------------------------------
// Jednoduchá scéna s jednou implicitní plochou vymodelovanou
// pomocí čtyř prvků kostry - jednoho bodového prvku kostry a
// tří úsečkových prvků kostry.
//
// rendering lze spustit příkazem:
// povray +W800 +H600 +B100 +FN +D +Iblobs1.pov +Oblobs1.png
// (pro náhled postačí zadat povray blobs1.pov)
// ------------------------------------------------------------
// globální nastavení parametrů scény
global_settings {
assumed_gamma 2.2
max_trace_level 5
}
// načtení všech potřebných externích souborů
#include "colors.inc"
#include "stones.inc"
#include "glass.inc"
// nastavení kamery (pozorovatele)
camera {
location <1.65, 5.5, -5.0> // pozice kamery
up <0.0, 1.0, 0.0> // vektor směřující vzhůru
right <4/3, 0.0, 0.0> // vektor směřující doprava
look_at <0, 1.8, -1.0> // bod, na který kamera směřuje
}
// tři světelné zdroje
light_source {
<-30, 11, 20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 31, 12, -20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 32, 11, -20> // pozice světelného zdroje
color LightGray // barva světla
}
// první objekt - implicitní plocha
blob {
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<-2, 0, 0>, // souřadnice středu
1.0, // poloměr
2.0 // síla
}
cylinder { // úsečkový (válcový) prvek kostry
<-2, 0, 0>, // střed první podstavy
< 2, 0, 0>, // střed druhé podstavy
0.5, // poloměr
1.0 // síla
}
cylinder {
<0, 0, -2>,
<0, 0, 2>,
0.5,
1.0
}
cylinder {
<0, -2, 0>,
<0, 2, 0>,
0.5,
1.0
}
interior { // vlastnosti "vnitřku" implicitní plochy
caustics 1.0
ior 1.5
}
texture { // textura - povrch implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color blue 0.90 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
rotate <15,15,0>
scale 1.8
}
// druhý objekt - nekonečná rovina
plane {
y, // orientace roviny
-2.5 // vzdálenost od počátku
texture { // textura - vlastnosti povrchu
T_Stone1 // definováno v externím souboru
pigment { // vlastní vzorek textury
octaves 3 // modifikace procedurálního vzorku
rotate 90*z
}
finish { // optické vlastnosti materiálu
reflection 0.10
}
}
}
// ------------------------------------------------------------
// finito
// ------------------------------------------------------------
Obrázek 6: Výsledek výpočtu prvního demonstračního příkladu POV-Rayem
3. Použití záporných „sil“ při tvorbě povrchů s vytlačenými částmi či otvory
V předchozí části tohoto seriálu jsme si uvedli Blinnův vztah, kterým se vyjadřovala intenzita „síly“ v daném bodu (x,y,z) ležícím v prostoru v závislosti na vzdálenosti tohoto bodu od jednotlivých prvků kostry a také v závislosti na jejich maximálních intenzitách (silách). Jedná se o následující vztah, který je sice pro potřeby urychlení vykreslování implicitních ploch v POV-Rayi poněkud zjednodušen, ale principiálně k žádné významné změně nedošlo:
D(x,y,z)=∑i=0n bi e-airi2=T
Parametr bi odpovídá maximální intenzitě i-tého prvku kostry. Tato intenzita postupně klesá se vzrůstající vzdáleností od bodu či úsečky, která tento prvek kostry reprezentuje. Prozatím jsme předpokládali, že parametr bi je kladný, nic nám však nebrání použít i zápornou intenzitu. To má za následek to, že se prvek kostry se zápornou intenzitou neslévá s ostatními prvky kostry, ale naopak ve vytvářené implicitní ploše tvoří vytlačené části a při vyšší intenzitě dokonce otvory.
Obrázek 7: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na zápornou hodnotu –1,5)
Pokud bychom pro modelování pomocí implicitních ploch hledali analogii z reálného světa, mohlo by se například jednat o tvorbu modelů pomocí plastelíny. Použití prvků kostry s kladnou silou odpovídá „splácání“ několika hrudek plastelíny dohromady a použití prvků kostry se silou zápornou je podobné vytlačení důlku do plastelínového modelu pomocí kulového nebo válcového předmětu.
Obrázek 8: Obrázek vytvořený pomocí třetího demonstračního příkladu (síla úsečkového prvku kostry je nastavena na zápornou hodnotu –2,5)
4. Druhý demonstrační příklad: použití prvku kostry se zápornou „silou“
V dnešním druhém demonstračním příkladu je ukázána implicitní plocha vytvořená pomocí dvou prvků kostry. První prvek je bodový, což znamená, že po jeho vykreslení (a bez interakce s dalšími částmi implicitní plochy) by vznikla koule, a druhý prvek je válcový, přičemž osa válce prochází středem bodového prvku. Ovšem u druhého prvku kostry je definována záporná síla, která je tak velká, že v původní kouli vytvoří otvor procházející středem koule. Aby byl tvar otvoru jasně patrný, zvolil jsem pro materiál tohoto objektu opět sklo, tentokrát ovšem fialové. Následuje výpis zdrojového kódu druhého demonstračního příkladu:
// ------------------------------------------------------------
// Jednoduchá scéna s jednou implicitní plochou vymodelovanou
// pomocí dvou prvků kostry - jednoho bodového prvku kostry a
// jednoho úsečkového prvku kostry se zápornou silou.
//
// rendering lze spustit příkazem:
// povray +W800 +H600 +B100 +FN +D +Iblobs2.pov +Oblobs2.png
// (pro náhled postačí zadat povray blobs2.pov)
// ------------------------------------------------------------
// globální nastavení parametrů scény
global_settings {
assumed_gamma 2.2
max_trace_level 5
}
// načtení všech potřebných externích souborů
#include "colors.inc"
#include "stones.inc"
#include "glass.inc"
// nastavení kamery (pozorovatele)
camera {
location <1.65, 5.5, -5.0> // pozice kamery
up <0.0, 1.0, 0.0> // vektor směřující vzhůru
right <4/3, 0.0, 0.0> // vektor směřující doprava
look_at <0, 0.8, -1.0> // bod, na který kamera směřuje
}
// tři světelné zdroje
light_source {
<-30, 11, 20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 31, 12, -20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 32, 11, -20> // pozice světelného zdroje
color LightGray // barva světla
}
// první objekt - implicitní plocha
blob {
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<0, 0, 0>, // souřadnice středu
2.0, // poloměr
2.0 // síla
}
cylinder { // prvek kostry se zápornou silou
<0, -2, 0>,
<0, 2, 0>,
0.5,
-2.0
}
interior { // vlastnosti "vnitřku" implicitní plochy
caustics 1.0
ior 1.5
}
texture { // textura - povrch implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color blue 0.80 red 0.80 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
rotate <15,105,0>
scale 2.1
}
// druhý objekt - nekonečná rovina
plane {
y, // orientace roviny
-2.5 // vzdálenost od počátku
texture { // textura - vlastnosti povrchu
T_Stone2 // definováno v externím souboru
pigment { // vlastní vzorek textury
octaves 3 // modifikace procedurálního vzorku
rotate 90*z
}
finish { // optické vlastnosti materiálu
reflection 0.10
}
}
}
// ------------------------------------------------------------
// finito
// ------------------------------------------------------------
Obrázek 9: Výsledek výpočtu druhého demonstračního příkladu POV-Rayem
5. Třetí demonstrační příklad: animace vlivu postupné změny síly jednoho prvku kostry
Ve třetím demonstračním příkladu si ukážeme techniku, o které jsme si ještě příliš mnoho informací neřekli. Jedná se o tvorbu animací, jež je v POV-Rayi podporována mj. i pomocí proměnné clock, kterou je možné průběžně při renderingu jednotlivých snímků měnit. Pokud se při spuštění POV-Raye zadají parametry +KFI0 +KFF100, znamená to, že se má vytvořit 101 snímků (samostatných rastrových obrázků), přičemž u prvního obrázku bude proměnná clock nastavena na hodnotu 0.0 a u obrázku posledního na hodnotu 1.0. Této vlastnosti speciální proměnné clock je využito při změně intenzity (síly) úsečkového prvku kostry – intenzita postupně klesá z hodnoty 1.5 až na hodnotu –4.5, což je zajištěno výrazem (1.0-clock)*6.0–4.5. Následuje výpis zdrojového kódu třetího demonstračního příkladu, výsledná animace je uložena pod tímto odkazem:
// ------------------------------------------------------------
// Jednoduchá scéna s jednou implicitní plochou vymodelovanou
// pomocí dvou prvků kostry - jednoho bodového prvku kostry a
// jednoho úsečkového prvku kostry se silou odvozenou od
// proměnné "clock".
//
// rendering lze spustit příkazem:
// povray +W800 +H600 +B100 +FN +D +KFI0 +KFF100 +Iblobs3.pov +Oblobs3.png
// (pro náhled postačí zadat povray blobs3.pov)
// ------------------------------------------------------------
// globální nastavení parametrů scény
global_settings {
assumed_gamma 2.2
max_trace_level 5
}
// načtení všech potřebných externích souborů
#include "colors.inc"
#include "stones.inc"
#include "glass.inc"
// nastavení kamery (pozorovatele)
camera {
location <1.65, 5.5, -5.0> // pozice kamery
up <0.0, 1.0, 0.0> // vektor směřující vzhůru
right <4/3, 0.0, 0.0> // vektor směřující doprava
look_at <0, 0.8, -1.0> // bod, na který kamera směřuje
}
// tři světelné zdroje
light_source {
<-30, 11, 20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 31, 12, -20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 32, 11, -20> // pozice světelného zdroje
color LightGray // barva světla
}
// první objekt - implicitní plocha
blob {
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<0, 0, 0>, // souřadnice středu
2.0, // poloměr
2.0 // síla
}
cylinder { // prvek kostry se zápornou silou
<0, -2, 0>,
<0, 2, 0>,
0.9,
// rozsah 1.5 až -4.5 (rozdíl 6.0, delta -4.5)
(1.0-clock)*6.0-4.5
}
interior { // vlastnosti "vnitřku" implicitní plochy
caustics 1.0
ior 1.5
}
texture { // textura - povrch implicitní plochy
pigment {
agate
agate_turb 0.7
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
}
scale 0.3
}
rotate <20,140,0>
scale 2.1
}
// druhý objekt - nekonečná rovina
plane {
y, // orientace roviny
-2.5 // vzdálenost od počátku
texture { // textura - vlastnosti povrchu
pigment {
checker
}
finish { // optické vlastnosti materiálu
reflection 0.10
}
}
}
// ------------------------------------------------------------
// finito
// ------------------------------------------------------------
6. Změna individuálních vlastností jednotlivých prvků kostry implicitní plochy
V první kapitole jsme si řekli, že nová syntaxe zápisu implicitních ploch umožňuje, aby se pro každý prvek kostry nastavovaly individuální vlastnosti. Týká se to samozřejmě i materiálů povrchu. Pokud například každému prvku kostry přiřadíme odlišnou texturu, dojde při vykreslení implicitní plochy k zajímavému jevu – celá plocha je pokryta několika texturami, které se vzájemně prolínají, a to tak, že je vždy zvolena ta textura (popř. jejich mix), která odpovídá nejbližšímu prvku kostry. Přesněji řečeno se při výpočtu textury v daném místě povrchu berou v úvahu intenzity všech prvků kostry a na základě těchto intenzit se provádí jednoduchý blending, což je patrné z následujícího obrázku, který byl vytvořen pomocí tohoto kódu:
blob {
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<-3.5, 0, 0>, // souřadnice středu
1.5, // poloměr
2.0 // síla
texture { // individuální textura
T_Wood1
}
}
cylinder { // úsečkový (válcový) prvek kostry
<-2, 0, 0>, // střed první podstavy
< 2, 0, 0>, // střed druhé podstavy
0.8, // poloměr
1.0 // síla
texture { // individuální textura
T_Stone1
}
}
cylinder {
<0, 0, -2>,
<0, 0, 2>,
0.8,
1.0
texture {
pigment {
agate
agate_turb 0.3
}
}
}
cylinder {
<0, -2, 0>,
<0, 2, 0>,
0.8,
1.0
texture {
pigment {
crackle
}
scale 0.3
}
}
rotate <15,15,0>
scale 1.8
}
Obrázek 10: Každému prvku kostry je přiřazena jiná textura
7. Čtvrtý demonstrační příklad: nastavení individuálních vlastností prvků kostry
Ve čtvrtém a současně i posledním demonstračním příkladu je ukázána tvorba implicitní plochy složené ze čtyř prvků kostry, kde je každému prvku přiřazen odlišný materiál. V tomto případě se jedná o čtyři typy skel, které se odlišují svou barvou. Ze zdrojového kódu tohoto demonstračního příkladu je patrné, že je možné použít jak společné vlastnosti, tak i vlastnosti individuální – jednomu prvku kostry není explicitně přidělen materiál, což znamená, že se pro něj zvolí materiál platný pro celou implicitní plochu.
// ------------------------------------------------------------
// Jednoduchá scéna s jednou implicitní plochou vymodelovanou
// pomocí čtyř prvků kostry - jednoho bodového prvku kostry a
// tří úsečkových prvků kostry. Každému prvku kostry je přiřazen
// jiný materiál povrchu.
//
// rendering lze spustit příkazem:
// povray +W800 +H600 +B100 +FN +D +Iblobs4.pov +Oblobs4.png
// (pro náhled postačí zadat povray blobs4.pov)
// ------------------------------------------------------------
// globální nastavení parametrů scény
global_settings {
assumed_gamma 2.2
max_trace_level 5
}
// načtení všech potřebných externích souborů
#include "colors.inc"
#include "woods.inc"
#include "glass.inc"
// nastavení kamery (pozorovatele)
camera {
location <1.65, 5.5, -5.0> // pozice kamery
up <0.0, 1.0, 0.0> // vektor směřující vzhůru
right <4/3, 0.0, 0.0> // vektor směřující doprava
look_at <0, 1.8, -1.0> // bod, na který kamera směřuje
}
// tři světelné zdroje
light_source {
<-30, 11, 20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 31, 12, -20> // pozice světelného zdroje
color White // barva světla
}
light_source {
< 32, 11, -20> // pozice světelného zdroje
color LightGray // barva světla
}
// první objekt - implicitní plocha
blob {
threshold 0.5
sphere { // bodový (kulový) prvek kostry
<-2, 0, 0>, // souřadnice středu
1.0, // poloměr
2.0 // síla
texture { // textura - povrch části implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color green 1.00 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
}
cylinder { // úsečkový (válcový) prvek kostry
<-2, 0, 0>, // střed první podstavy
< 2, 0, 0>, // střed druhé podstavy
0.5, // poloměr
1.0 // síla
}
cylinder {
<0, 0, -2>,
<0, 0, 2>,
0.5,
1.0
texture { // textura - povrch části implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color red 0.90 green 0.90 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
}
cylinder {
<0, -2, 0>,
<0, 2, 0>,
0.5,
1.0
texture { // textura - povrch části implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color red 0.90 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
}
interior { // vlastnosti "vnitřku" části implicitní plochy
caustics 1.0
ior 1.5
}
texture { // textura - povrch části implicitní plochy
T_Glass1 // definováno v externím souboru
pigment {
color blue 0.90 filter 0.85 // barva povrchu
}
finish { // optické vlastnosti materiálu
phong 1 // velikost a síla odlesků
phong_size 300
reflection 0.15 // odrazivost
}
}
rotate <15,15,0>
scale 1.8
}
// druhý objekt - nekonečná rovina
plane {
y, // orientace roviny
-2.5 // vzdálenost od počátku
texture { // textura - vlastnosti povrchu
T_Wood10 // definováno v externím souboru
finish { // optické vlastnosti materiálu
reflection 0.10
}
}
}
// ------------------------------------------------------------
// finito
// ------------------------------------------------------------
Obrázek 11: Výsledek výpočtu čtvrtého demonstračního příkladu POV-Rayem
8. Obsah dalšího pokračování seriálu
V následující části tohoto seriálu se zaměříme na další typy těles (jako by jich už nebylo dost), které jsou v raytraceru POV-Ray podporovány. Ukážeme si například tvorbu parametrických ploch, rotačních i tzv. vytahovaných ploch a v neposlední řadě si popíšeme také tělesa tvořená pomocí výškových polí (heightfields). Ty mají velký význam například při modelování různých typů terénů.