Forum graficzne Burning-Brushes.pl

Pov-ray podstawy

Sympatyk

  • VIP
  • *****
    • Master of science
      • Zobacz profil
      • Moje
    Najczęściej pierwszy programem w kursie jest "Hello World", tutaj jednak będzie inaczej.
    Najpierw trzeba sobie przypomniec jak wszystko funkcjonowało w układzie współrzędnych (x,y). Jeśli jakiś punkt miał współrzędne (x,y) to jednoznacznie mogliśmy go umieścic na układzie, chocby w taki sposób potrafimy narysowac sinusoide. Analogicznie zabawa odbywa się jeśli mamy układ współrzędnych (x,y,z).

    START
    Zauważmy, iż żeby umieścic prostopadłościan na układzie współrzędnych (x,y,z) to potrzebujemy jedynie DWÓCH jego punktów, te punktu łączy przekątna prostopadłościanu, czyli prostopadłościan będziemy wyznaczac tak (liczby oddzielamy przecinkiem i pamiętajmy, że 0.5 = 1/2 ale 0,5 NIE jest liczbą.)
    box
    {
            <0,0.5,0> <10,1,5>
    }

    Wyznaczanie cylidrów wygląda tak, podajemy współrzędne środków oby podstaw a potem promień oby podstaw czyli
    cylinder
    {
            <15.6,6,2.5> <15.6,6.5,2.5>,2
    }

    Stożek, jest bardzo podobny do cylindra, różni się tym, że podstawy mogą miec różne promienie
    cone
    {
            <15.6,8,1.5>,2.5,<15.6,13,2.5>,2
    }

    Kula analogicznie, podajemy współrzędne środka i potem promień
    sphere
    {
            <16.1,4,-0.1>,0.5
    }

    Ściany(plane), podajemy orientacje :) x-pion y-poziom i potem zasięg.
    plane
    {                     
            y,0



    OPERACJE NA FIGURACH - czyli suma, różnica, częśc wspólna itp..
    Najprostrzym jest suma czyli UNION, wynikiem jest połączenie wszystkich figur w jednośc i definiuje sie ją tak:
    union
    {
       box
       {
            <0,0.5,0> <10,1,5>
       }
       cylinder
       {
            <15.6,6,2.5> <15.6,6.5,2.5>,2
       }
    }

    Częśc wspólnia(intersection) działa tak samo jak suma i definiuje się
    intersection
    {
       box
       {
            <0,0.5,0> <10,1,5>
       }
       cylinder
       {
            <15.6,6,2.5> <15.6,6.5,2.5>,2
       }
    }

    Różnica(difference), wynikiem będzie DRUGI stożek, a ich częśc wspólna zostanie zanihilowana
    difference
    {
            cone {<15.6,8,1.5>,2.5,<15.6,13,2.5>,2} //PIERWSZY
             
             
            cone {<15.6,7.5,1.5>,2.45,<15.6,12,2.5>,1.9} //DRUGIE
    }

    Bardzo podobno do sumy(Union) jest scalanie(Merge) wyjątek jest taki, że Merge jest jakby dokładniejsze ale i wolniejsze przy renderowaniu. Chodzi generalnie o częśc wspólną w union się nią nie przejmują i na "chama" ją "wlepiają" ze sobą i jest tak jakby figura w figurze, w Merge tego nie ma, częśc wspólna jest usuwana. Generalnie Merge się nie używa, bo nie ma takiej potrzeby skoro każda figura ma swoją jakąs teksture, wyjątkiem właśnie są przeźroczyste tekstury chocby szyba.

    Pętla WHILE i zmienne
    Konstrukcja taka jak wszędzie, tylko, że na końcu trzeba wstawic end
    #while(WARUNEK)
    //ciało pętli
    #end
    Mamy już pętle while ale jak zrobic warunek, żeby np. coś powtórzyło 3 razy. Do tego użyjemy zmiennych.
    Definiujemy je tak:
    #declare polka=1; czyli pętla wygląda tak:
    #declare polka=1; 
    #while(polka<4)
            #declare polka=polka+1;
    #end
    Taka pętla wykona sie dokładnie 3 razy, ale nic więcej nie zrobi.
    Używamy jej do powtarzających się obiektów chocby półek szafki, są identyczne, powtarzają się cyklicznie a róznią się jedynie położeniem. Do tego celu potrzebujemy jeszcze jednem zmiennej
    #declare zmienna=4.5;Na takiej wysokości będzie umieszczona pierwsza półka, no i teraz uruchamiamy while
    #declare polka=1; 
    #declare zmienna=4.5;
    #while(polka<4)
            box
            {       
                    <0.5,zmienna,0> <10,5*polka,5>

            }
            #declare polka=polka+1;
            #declare zmienna=zmienna+5;
    #end
    Dzięki temu powstaną trzy identyczne prostopadłościany oddalone od siebie o 5

    TEKTURY
    Zaczynamu od includa na początku programu biblioteki z teksturami
    #include "textures.inc"
    #include "woods.inc"
    Ustawiamy tekstury podczas nadawania im współrzędnych:
    box
    {
            <0,0.5,0> <10,1,5>
            texture { T_Wood1 }
    }
    Testury znajdziemy tutaj

    Jednak zawsze możemy sobie ustawic jakiś kolor to wtedy inludujemy co innego.
    Kolory piszę ZAWSZE z wielkiej litery.
    #include "colors.inc"box
    {
            <0,0.5,0> <10,1,5> Brown
    }

    Kamera i światła
    Źródło światła ustawiamy tak: współrzędne i kolor
    light_source
    {
          <-10,10,-10> Brown
    }

    Ustawienie kamer. Podajemy współrzędne umieszczenie kamery a potem punkt na który jest skierowana
    camera
    {   
            location <15,3,-30>  // miejsce umieszczenia kamery
            look_at <5,5,0>      // punkt na który kamera jest skierowana
    }

    Dokumentacja znajduje się TUTAJ


    Abik

    • VIP
    • *****
      • Amerykański plastik
        • Zobacz profil
      Dzięki spoko tutek, powinien się wielu osobom przydać :D
      chociaż i tak spróbuję jeszcze zrobić "swoją wersję", dopisze parę innych rzeczy, skalowanie, obracanie, bloby, mapy wysokości, różne pierdy, trochę tego jest w povrayu :D
      ale jeszcze raz dzięki, dobra robota :*