POV-Ray

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Grafika stworzona w programie POV-Ray

Persistence of Vision Ray-Tracer lub POV-Ray jest programem służącym do ray tracingu dla komputerów z systemami Windows, OS X lub GNU/Linux. Wykorzystywany jest głównie do tworzenia grafiki trójwymiarowej. Program udostępniany jest na zasadzie licencji freeware.

Cechą charakterystyczną programu jest wykorzystywanie zaawansowanego języka opisu sceny SDL (ang. Scene Description Language), który jest w zasadzie językiem programowania, zawierającym elementy takie jak m.in. zmienne, tablice, instrukcje warunkowe, pętle, funkcje. Geometrię obiektów definiuje się w nim w sposób parametryczny, dzięki czemu odwzorowanie ich kształtu jest bardzo dokładne, a także możliwe staje się uzyskanie obrazu powierzchni nieskończonych lub bardzo złożonych takich jak np. powierzchnie funkcyjne.

W programie wygląd sceny opisuje się w skrypcie, w którym umieszcza się informacje dotyczące:

  • położenia kamery
  • oświetlenia
  • obiektów w postaci brył i powierzchni

Program umożliwia wygenerowanie sekwencji obrazów do celów animacji.

POV-Ray wykorzystuje obecnie wiele nowoczesnych technik ułatwiających tworzenie sceny i podnoszących realizm obrazu:

  • caustics - symulacja załamania światła na nierównej powierzchni, np. na falującej wodzie
  • CSG (Constructive Solid Geometry) - wykonywanie operacji logicznych na bryłach
  • photon mapping - odwzorowanie przebiegu strumienia światła, pozwala na oddanie zjawisk takich jak np. refrakcja
  • radiosity - obliczanie światła rozproszonego

POV-Ray rozwijany jest stale od 1991 r. na bazie wcześniejszego programu o nazwie DKBTrace. Autorzy tworzą grupę POV Team, która dąży do ciągłego unowocześniania technik stosowanych w programie, zwiększenia jego wydajności i zachowania zgodności z poprzednimi wersjami, a także pomiędzy wersjami przeznaczonymi dla różnych systemów operacyjnych.

Przykładowy skrypt[edytuj | edytuj kod]

Wygenerowana scena na podstawie zamieszczonego obok skryptu
#include "colors.inc"
 
global_settings {
  assumed_gamma 1.0
  max_trace_level 5
}
 
camera {
  location  <0.0, 0.5, -4.0>                  //punkt umieszczenia kamery
  direction 1.5*z
  right     x*image_width/image_height
  look_at   <0.0, 0.0,  0.0>                  //punkt na który patrzy (jest skierowana)kamera
}
 
sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]                 //określenie koloru (składowe r-czerwony,g-zielony,b-niebieski)
      [0.7 rgb <0.0,0.1,0.8>]
    }
  }
}
 
light_source {              // wstawienie światła punktowego
  <0, 0, 0>                 // pozycja początkowa światła
  color rgb <1, 1, 1>       // kolor światła
  translate <-30, 30, -30>  // przemieszczenie x,y,z
}
 
plane {                     // podłoga w "szachownicę"
  y, -1
  texture
  {
    pigment {
      checker
      color rgb 1
      color blue 1
      scale 0.5
    }
    finish{
      diffuse 0.8
      ambient 0.1
    }
  }
}
 
sphere {                    // błyszcząca kulka
  0.0, 1
  texture {
    pigment {
      color rgb <0.8,0.8,1.0>
    }
    finish{
      diffuse 0.3
      ambient 0.0
      specular 0.6
      reflection {
        0.8
        metallic
      }
      conserve_energy
    }
  }
}

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]