POV-Ray

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Grafika stworzona w programie POV-Ray

POV-Ray (Persistence of Vision Ray-Tracer) – program służący 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 wolnej licencji GPL.

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]