VRML to format opisu interaktywnej grafiki 3D ukierunkowany na sieć WWW. Pozwala na wyświetlanie podstawowych kształtów takich jak sześcian, stożek lub sfera, ale umożliwia również bardziej wyszukane modelowanie obiektów przy pomocy grup punktów lub płaszczyzn. Obsługuje proste oświetlenie sceny bez rzucania cieni (światło typu ambient, direct, point, spot). Możliwe jest nakładanie tekstur na obiekty (również tekstur animowanych – plików w formacie MPEG) oraz ich transformacja. Modele mogą być wyświetlane z różną dokładnością – mechanizm level of details daje kontrole nad stopniem skomplikowania wyświetlanego obiektu, a co za tym idzie, nad szybkością i płynnością działania. Przy pomocy skryptów możliwe jest animowanie elementów sceny, także poprzez interpolacje klatek kluczowych (ang. keyframes) (link).
VRML był od początku tworzony z myślą o konkretnym celu – nawigacja w trójwymiarowym środowisko na wzór rzeczywistości wirtualnej. Posiada zatem pewne domyślnie zaimplementowane funkcje wspomagające interakcje z użytkownikiem i zapewniające większe „zanurzenie” w wirtualny świecie (większą imersję). Czujniki wykrywające kolizje, bliskości i widzialności obiektów, a także przeciągania (dragging – obiekt można przesuwać po scenie przy pomocy myszki). Zdarzenia uruchamiane mogą być w odpowiedzi na dane akcje (na przykład klikniecie w obiekt) lub kiedy użytkownik pojawi się w zdefiniowanym polu. Światy, w prosty sposób, wzbogacone być mogą również o efekty dźwiękowe, tło lub mgle (link).
Ponieważ VRML projektowany był jako „interfejs dla internetu” posiada pewne idee zaczerpnięte z HTML oraz pozwalające na jego integracje z tym językiem. Metafora hipertekstu realizowana jest tutaj poprzez odnośniki, które nie są tekstem, ale obiektami 3D. Po kliknięciu w taki obiekt użytkownik przenoszony jest do innego świata VRML (osobny plik .wrl) lub do dowolnej strony pod innym adresem URL. Podobnie jak pliki graficzne na stronie WWW, modele 3D mogą być przechowywane w osobnych plikach i „doładowywane” już w trakcie eksploracji sceny przez użytkownika. Większość przeglądarek VRML umożliwiało kilka typów nawigacji, miedzy innymi symulacje chodu (walk – poruszanie się jedynie w dwóch płaszczyznach) lub latania (fly – ruch możliwy w każdym z 3 kierunków).
Pliki VRML mają rozszerzenie .wrl, od angielskiego słowa world (świat) i kodowane powinny być w formacie UTF-8. Plik .wrl może zostać skompresowany aby zaoszczędzić miejsce – zyskuje wtedy rozszerzenie .wrl.gz. Pomimo tego, że VRML ma silne powiązania ze stronami internetowymi, jego struktura nie bazuje na znacznikach, tak jak w HTML. Składnia oparta jest na formacie Open Inventor, który służył jako podstawa do stworzenia VRML (link).
Najprostszy plik .wrl jaki możemy napisać i wyświetlić w przeglądarce, składa się z nagłówka, komentarzy oraz obiektów (tzw. węzłów).
- #VRML V2.0 utf8
- # Najprostszy plik VRML
- Shape {
- geometry Box {
- size 1 1 1
- }
- appearance Appearance {
- material Material { diffuseColor 1 0 0 }
- }
- }
Najprostszy plik VRML. W pierwszej linii nagłówek, druga linia zawiera komentarz. W pozostałej części pliku zdefiniowany jest czerwony prostopadłościan.
W pierwszej linijce musi znajdować się nagłówek informujący przeglądarkę, że ma do czynienia z plikiem w formacie VRML. Linia nagłówka, podobnie jak komentarze, rozpoczynają się od znaku #. Nic co znajduje się miedzy tym znakiem, a końcem linii, nie jest przetwarzane przez przeglądarkę.
W dalszej części zdefiniowano czerwony prostopadłościan. Mamy zatem węzeł Shape, który charakteryzowany jest przez dwa węzły: geometry oraz appearance. Geometry Box nadaje mu kształt prostopadłościanu o wymiarach 1 na 1 na 1. VRML korzysta z prawoskrętnego ortogonalnego układu współrzędnych – poszczególne liczby określają rozmiar bryły w kierunku X, Y oraz Z. Przyjmuje się, że jednostka miary są metry, ale jest to jedynie konwencja, której nie wszyscy twórcy przestrzegają. Wymiary mogą być liczbami dziesiętnymi (możemy zapisać 1.0 1.0 1.0).
Węzeł appearance Appearance definiuje materiał z którego jest zrobiony prostopadłościan. Wybrano matowy kolor (diffuseColor) o wartościach wyrażonych w substraktywnym modelu RGB (czerwony, zielony, niebieski). Każda liczba odpowiada jednej składowej i może przyjmować wartości od 0.0 do 1.0.
Węzły w pliku VRML są ułożone hierarchicznie w grafie. Wiele programów i technologii związanych z tworzeniem grafiki trójwymiarowej korzysta z takiej struktury. Po pierwsze, taki sposób uporządkowania elementów ułatwia ich późniejsze odwzorowanie na niższym poziomie generowania obrazu (OpenGL, Direct3D). Po wtóre, ułatwia to kontrole nad obiektami w obrębie sceny.
Idea grafu sceny (scene graph) polega na tym, że każdy element znajdujący się wyżej w hierarchii, wpływa na elementy będące niżej. Należy zaznaczyć, że nie tylko widzialne elementy (bryły lub modele) mogą być częścią grafu, ale również transformacje i materiały. W ten sposób, jeśli jakiś obiekt składa się z kilku prostszych obiektów, nie ma potrzeby, aby każdemu z osobna nadawać te same cechy. Można umieścić node nadający takie cechy na szczycie grafu i będzie on wpływał na wszystkie podległe mu obiekty.
Wiedząc na czym polega „metafora” grafu, łatwiej będzie zrozumieć kolejny plik .wrl, w którym wygenerujemy proste trójwymiarowe drzewo z gałązką. Istotną nowością w tym kodzie jest węzeł Transform. Jest on odpowiedzialny za zmianę położenia układu współrzędnych względem którego rysowane są obiekty. Należy pamiętać, że w VRML bryły rysowane są „od środka”. Oznacza to tyle, że jeśli stworzymy sferę o promieniu 1, to jej środek będzie się znajdował w punkcie 0 0 0.
- #VRML V2.0 utf8
- #Zielona korona
- Shape {
- geometry Sphere { radius 1.5 }
- appearance Appearance {
- material Material { diffuseColor 0 1 0 }
- }
- }
- #Brązowywy pień i gałązka
- Transform {
- translation 0 -2.5 0
- children [
- Shape {
- geometry Cylinder {
- radius 0.2
- height 2.0
- }
- appearance Appearance {
- material Material { diffuseColor 0.5 0.15 0.05 }
- }
- }
- Transform {
- translation -0.5 0.5 0
- rotation 0 0 1 1.0472
- children [
- Shape {
- geometry Cylinder {
- radius 0.1
- height 1.0
- }
- appearance Appearance {
- material Material { diffuseColor 0.5 0.15 0.05 }
- }
- }
- ]
- }
- ]
- }
Kod VRML za pomocą którego wygenerować można trójwymiarowe drzewo.
Na początku rysujemy kulę o promieniu 1.5 jednostki (linia 4) i nadajemy jej kolor zielony (linie 5-6) – będzie mogła udawać koronę drzewa. Następnie, przesuwamy nasz układ współrzędnych o 2,5 jednostki wzdłuż osi Y (linia 12) i rysujemy cylinder (linie 14-17) o kolorze brązowym (linie 19-20), który służyć ma jako pień drzewa. Ponownie przesuwamy (linia 24) układ współrzędnych, ale tym razem dodajemy również obrót (linia 25) – pozwoli nam to narysować boczną gałąź (linie 26-33).
Boczna gałązka utworzona jest o 0,5 jednostki w lewo (czyli wzdłuż osi X) i o 0,5 jednostki do góry (w rozumieniu, wzdłuż osi Y), względem środka pnia. Dzięki takiemu powiązaniu – gdybyśmy obrócili cały pień – gałąź obróciłaby się samoczynnie w odpowiedni sposób. Gdyby gałąź była niezależnym obiektem – należałoby samemu zadbać o to, aby narysowana została we właściwym położeniu. Oczywiście, w rzeczywistym zastosowaniu, należałoby również koronę drzewa umieścić w węźle Transform, aby móc całość traktować jako jeden obiekt. Jednak na potrzeby tego modelu nie zrobiono tego, dla zwiększenia przejrzystości.
Mam nadzieję, że ten krótki przykład, pozwala zaprezentować, jak potężnym, a zarazem prostym narzędziem był VRML. Poza modelowaniem, pamiętać należy o mechanizmach wspomagających interaktywność oraz multimedialność. Bez zdolności programistycznych, ani specjalistycznych narzędzi, można było kreować świat, który mógł nie tylko efektownie wyglądać, ale również reagować na akcje użytkownika. Jeśli podstawowe możliwości nie wystarczały twórcom, mogli zawsze skorzystać z skryptów napisanych w językach wyższego programowania, które znacznie rozszerzały możliwości VRML. W tym znaczeniu, standard ten mógł przynieść grafikę 3D „pod strzechy”. Rzeczywistość okazała się jednak zgoła odmienna…
VRML, w zamyśle jego twórców, miał zrewolucjonizować sposób w jakim poruszamy się po internecie. Miał też umożliwić wymianę grafiki trójwymiarowej poprzez sieć i wykorzystanie jej do budowania multimedialnych, interaktywnych scen, które wyświetlić można na zwykłych komputerach osobistych. Standard miał być przystępny dla każdego, kto chciał się zająć tego typu twórczością, a prawdopodobnie było wielu takich ludzi, gdyż wirtualna rzeczywistość była tematem bardzo modnym i chodliwym w latach gdy powstawał VRML.
- VRML Interactive Tutorial: http://www.few.vu.nl/~eliens/mma1/@archive/interactive/toc.html
- VRML Primer and Tutorial: http://tecfa.unige.ch/guides/vrml/vrmlman/
Komentowanie nieaktywne.