Najnowsza grafika |
 |
|
|
2012-04-24 |
Najnowsza tapeta |
 |
|
|
2011-09-15 |
|
Modelowanie kubka
Dla kogo jest przeznaczony ten tutorial?
Dla osób, które dopiero niedawno zaczęły zabawę z POV-Ray'em - mają opanowane jego podstawy, wiedzą, co to jest cylinder i mają ochotę poznać nową funkcje, jaką jest blob.
Co znajdziesz w tym tutorialu?
- Podstawy modelowania [teksturami zajmiemy się w innym tutorialu].
- Obsługa funkcji blob [główne parametry i możliwości].
Zaczynamy:
Krok 1: Założenia podstawowe:
Na samym początku trzeba stworzyć nową scenę [jak to zrobić jest już chyba oczywiste].
Do naszej sceny użyjemy:
- pliku z gotowymi pre-definiowanymi kolorami
#include "colors.inc"
- światła:
light_source { < 0.00, 50.00, -50.00> color White }
- kamery:
camera { location < 0.00, 15.00, -20.00> look_at < 0.00, 0.00, 12.50> }
- podłogi:
plane {y, 0.00 texture {pigment {Gray45}} }
- tła:
background { color Gray45}
Cały kod powinien wyglądać następująco:
#include "colors.inc"
camera {
location < 0.00, 15.00, -20.00>
look_at < 0.00, 0.00, 12.50> }
light_source { < 0.00, 50.00, -50.00> color White }
plane {y, 0.00 texture {pigment {White}} }
background { color White }
Krok 2: Stworzenie kubka z cylindrów [cylinder]:
Teraz, gdy już mamy założenia początkowe można zacząć coś modelować, w naszym przypadku będzie to kubek z uchem.

To, co widać na rysunku trzeba uzyskać, aby funkcja blob mogła poprawnie zadziałać. Aby to uzyskać należy stworzyć 7 cylindrów:
- cylinder 1 [główna bryła kubka]:
cylinder { < 0.00, 0.00, 0.00> < 0.00, 8.50, 0.00> 3.50 texture {pigment{White}} }
- cylinder 2 [wycięcie wnętrza kubka]:
cylinder { < 0.00, 0.50, 0.00> < 0.00, 10.00, 0.00> 3.30 texture {pigment{White}} }
- cylinder 3:
cylinder { < 3.45, 7.00, 0.00> < 4.40, 7.50, 0.00> 0.50 texture {pigment{White}} }
- cylinder 4:
cylinder { < 4.40, 7.50, 0.00> < 5.45, 7.00, 0.00> 0.50 texture {pigment{White}} }
- cylinder 5:
cylinder { < 5.45, 2.55, 0.00> < 5.45, 6.95, 0.00> 0.50 texture {pigment{White}} }
- cylinder 6:
cylinder { < 4.40, 1.00, 0.00> < 5.45, 2.50, 0.00> 0.50 texture {pigment{White}} }
- cylinder 7:
cylinder { < 3.45, 1.50, 0.00> < 4.40, 1.00, 0.00> 0.50 texture {pigment{White}} }
Cały kod powinien wyglądać następująco:
#include "colors.inc"
camera { location < 0.00, 15.00, -20.00> look_at < 0.00, 0.00, 12.50> }
light_source { < 0.00, 50.00, -50.00> color White }
plane {y, 0.00 texture {pigment {Gray45}} }
background { color Gray45}
 cylinder { < 0.00, 0.00, 0.00> < 0.00, 8.50, 0.00> 3.50 texture {pigment{White}} }
 cylinder { < 0.00, 0.50, 0.00> < 0.00, 10.00, 0.00> 3.30 texture {pigment{White}} }

 cylinder { < 3.45, 7.00, 0.00> < 4.40, 7.50, 0.00> 0.50 texture {pigment{White}} }
 cylinder { < 4.40, 7.50, 0.00> < 5.45, 7.00, 0.00> 0.50 texture {pigment{White}} }

 cylinder { < 5.45, 2.55, 0.00> < 5.45, 6.95, 0.00> 0.50 texture {pigment{White}} }

 cylinder { < 4.40, 1.00, 0.00> < 5.45, 2.50, 0.00> 0.50 texture {pigment{White}} }
 cylinder { < 3.45, 1.50, 0.00> < 4.40, 1.00, 0.00> 0.50 texture {pigment{White}} }

A tak wygląda efekt po renderze:

Krok 3: Funkcja blob:
Gdy już mamy stworzony model z cylindrów możemy użyć funkcji blob. Zapewne nie wiecie, co to jest blob, do czego on służy i jakie ma parametry. Po kolei, blob jest to funkcja do "zaokrąglania" i "płynnego łączenia" pewnych brył, sphere i cylinder. Jest zapisywany następująco:
blob { threshold [parametr 1]
sphere { < [...], [...], [...]> [...],[parametr 2] }
sphere { < [...], [...], [...]> [...],[parametr 2] }
cylinder { < [...], [...], [...]> < [...], [...], [...]> [...],[parametr 2] } }
To, co znajduje się w [...] są to standardowe parametry brył i ich promienie, natomiast [parametr 1] i [parametr 2] są to współczynniki należące do funkcji blob.
[parametr 1] jest to liczba z zakresu [0.001 do 1 i w górę, ale czym więcej 1 tym efekt jest bardziej dziwny] jest to parametr odpowiadający za "płynne połączenie" całej bryły, wygładzenie wszystkich ostrych krawędzi i nadanie bryle ogólnie delikatnego kształtu.
[parametr 2] jest to liczba z zakresu [liczb naturalnych], odpowiada za "wygładzenie" danej bryły, czym większy tym stopień nadania obłości jest większy, rozróżnia się parametr dodatni i ujemny. Dodatni świadczy o tym, iż figura jest widoczna [przypadek B], natomiast ujemny świadczy o tym, że ta figura staje się odjemną przypadek C]. To, co napisałem jest tylko pomocą w zrozumieniu całej funkcji, najlepiej poznaje się, blob'a poprzez eksperymenty z parametrami i różne sposoby ustawienia brył.

Nasz kod kubka po przekształceniu na kod blob'a będzie wyglądał następująco:
blob { threshold 0.01
cylinder { < 0.00, 0.00, 0.00> < 0.00, 8.50, 0.00> 3.50, 3.00 texture {pigment{White}} }
cylinder { < 0.00, 0.50, 0.00> < 0.00, 10.00, 0.00> 3.30,-5.00 texture {pigment{White}} }
cylinder { < 3.45, 7.00, 0.00> < 4.40, 7.50, 0.00> 0.50, 2.00 texture {pigment{White}} }
cylinder { < 4.40, 7.50, 0.00> < 5.45, 7.00, 0.00> 0.50, 2.00 texture {pigment{White}} }
cylinder { < 5.45, 2.55, 0.00> < 5.45, 6.95, 0.00> 0.50, 2.00 texture {pigment{White}} }
 cylinder { < 4.40, 1.00, 0.00> < 5.45, 2.50, 0.00> 0.50, 2.00 texture {pigment{White}} }
 cylinder { < 3.45, 1.50, 0.00> < 4.40, 1.00, 0.00> 0.50, 2.00 texture {pigment{White}} }
 }

Na koniec cały projekt powinien wyglądać następująco:
#include "colors.inc"
camera { location < 0.00, 15.00, -20.00> look_at < 0.00, 0.00, 12.50> }
light_source { < 0.00, 50.00, -50.00> color White }
plane {y, 0.00 texture {pigment {Gray45}} }
background { color Gray45 }
 blob { threshold 0.01
 cylinder { < 0.00, 0.00, 0.00> < 0.00, 8.50, 0.00> 3.50, 3.00 texture {pigment{White}} }
 cylinder { < 0.00, 0.50, 0.00> < 0.00, 10.00, 0.00> 3.30,-5.00 texture {pigment{White}} }

 cylinder { < 3.45, 7.00, 0.00> < 4.40, 7.50, 0.00> 0.50, 2.00 texture {pigment{White}} }
 cylinder { < 4.40, 7.50, 0.00> < 5.45, 7.00, 0.00> 0.50, 2.00 texture {pigment{White}} }

 cylinder { < 5.45, 2.55, 0.00> < 5.45, 6.95, 0.00> 0.50, 2.00 texture {pigment{White}} }

 cylinder { < 4.40, 1.00, 0.00> < 5.45, 2.50, 0.00> 0.50, 2.00 texture {pigment{White}} }
 cylinder { < 3.45, 1.50, 0.00> < 4.40, 1.00, 0.00> 0.50, 2.00 texture {pigment{White}} }
 }

A tak wygląda efekt po renderze:

Mam nadzieję, że tutorial się przydał, tak jak pisałem najlepiej poeksperymentować i na pewno szybko się załapie, o co chodzi.
Pytania uwagi i komentarze kierujcie na forum temat Tutoriale.
Powodzenia w pracy.
|