Witamy na kursie języka VRML

[Jeżeli powyżej nie zostanie wywietlony świat VRML to znaczy, że nie masz zainstalowanego plug-ina VRML]
[Z kursu możesz korzystać off-line ściągając niniejszy ZIP]

Modelowanie światów wirtualnych nie jest tak proste jak tworzenie stron WWW i wymaga pewnej dozy samozaparcia w celu poznania skomplikowanej budowy węzłów, zasad działania czujników, tras i interpolatorów. Ale powoli. Spróbuję wam te wszystkie zagadnienia w miarę przystępny sposób przybliżyć, a napewno sami dojdziecie do tego jak zbudować niejeden rozbudowany świat wirtualny. Zagadnienia opisywane w niniejszym kursie dotyczą wersji 97 języka VRML - VRML97.

I. Co musisz mieć żeby móc stworzyć świat VRML: 

  1. Zakładamy, że skoro dostaliście się na tę stronę macie komputer i przeglądarkę WWW. Teraz musicie zaopatrzyć się w przeglądarkę VRML, która jako plug-in do twojej przeglądarki WWW będzie odpowiadała za wyświetlanie plików VRML.
  2. Następnie musicie wybrać sobie jakiś najprostszy edytor tekstu (typ windowsowego Notatnika), gdzie będziecie  tworzyć pliki VRML.
  3. Gdy otworzycie czysty dokument w swoim edytorze musicie zacząć od napisania linii, która mówi przeglądarce WWW, że ma załadować plik *.wrl i uruchomić przeglądarkę VRML. Wygląda ona następująco i jest absolutnie obowiązkowa:
  4. #VRML V2.0 utf8
     
  5. Ostatnią ważną rzeczą o jakiej powinniście pamiętać jest to, że język VRML jest tzw. językiem case-sensitive, czyli istotne są wielkości liter jakimi piszecie wszelkie komendy. Więc jeżeli coś będzie wam nie wychodzić to najpierw sprawdźcie pisownię a potem się denerwujcie.
  6. Teraz jesteście gotowi, przed rozpoczęciem kursu przeczytajcie jednak dalsze uwagi.
II. Zasady korzystania z kursu
  1. Podczas kursu spotkacie się z wyrażeniami języka VRML, których nie będziecie rozumieć, np. nazwami typów zdarzeń: eventIn, eventOut, exposedField; nazwami typów pól: SFNode, MFRotation, SFVec3f. Nie przejmuje się tym jednak. Najważniejsze dla danego zagadnienia pojęcia są wyjaśniane w dolnej ramce. Do pozostałych z pewnością wrócimy w dalszej części kursu.
  2. Każde zagadnienie opisuje właściwości jednego lub więcej węzłów. W opisie tym zawiera się: zasada działania węzła, zastosowanie, wypis interfejsu użytkownika danego węzła (patrz punkt IV), oraz przykład.
  3. Kurs docelowo składać się będzie z pięciu części, które stopniowo będą osiągalne na tej stronie.
  4. Pamiętajcie, żeby nie przechodzić do kolejnej części bez dobrego opanowania poprzedniej.
  5. Wszelkie uwagi proszę kierować do autora kursu - Kamila Dąbkowskiego.
 

III. Węzły, pola, zdarzenia

Podstawowymi elementami składowymi świata VRML są węzły. Język VRML umożliwia definiowanie kilku rodzajów węzłów. Większość z nich można podzielić na dwie grupy: węzły grupujące (grouping nodes) i węzły samodzielne (leaf nodes). Węzły grupujące, jak łatwo się domyśleć, służą do grupowania innych węzłów, co daje możliwość traktowannia ich jako pojedynczy obiekt. Węzły grupowane definiowane są w polu węzła grupującego o nazwie children (dzieci). Niektóre z węzłów grupujących mają możliwość kontroli nad tym, które z jego „dzieci" ma być aktualnie ukazane na scenie. Każdy węzeł grupujący traktuje swoje „dzieci" w inny sposób.

Węzły samodzielne nie mogą mieć „dzieci". Zawierają one informacje na temat kształtów obiektów, świateł, zdefiniowanych na stałe punktów patrzenia na wykreowany świat (viewpoints), dźwięków, skryptów, czujników, interpolatorów i innych węzłów, które przekazują informacje do przeglądarki.

Opis węzłów składa się z następujących części:

    Zdarzenia są szalenie ważnym, a przy tym złożonym, elementem świata VRML. Działanie zdarzeń opiera się na prostej zasadzie, że jeden węzeł wysyła zdarzenie a inny to zdarzenie przyjmuje zmieniając tym samym wartość, któregoś ze swoich pól. Za pomocą zdarzeń tworzymy animacje i wprowadzamy do naszego świata elementy interakcji.
 
 

IV. Sposoby zapisu właściwości węzłów

Podczas kursu spotkacie się z dwojakim zapisem właściwości węzłów. Pierwszy rodzaj zapisu, nazywany  interfejsem użytkownika, zawiera definicję pól, zdarzeń, nazw, typów i wartości domyślnych danego węzła. Drugi rodzaj zapisu nazywany składnią węzła w pliku źródłowym, zawiera on nazwę węzła i pola wraz z ich wartościami, które będziemy chcieli na danej scenie zdefiniować. Łatwo zauważyć, że składnia węzła w pliku jest mniej pojemna i zawiera się w definicji interfejsu użytkownika. Dlatego też przy opisie interfejsu użytkownika będziemy drukiem wytłuszczonym zaznaczali elementy, które mogą się potem znaleźć w pliku VRML.

Spójrzmy teraz na przykład definicji węzła Collision jako interfejsu użytkownika:

Collision {
      eventIn      MFNode   addChildren
      eventIn      MFNode   removeChildren
      exposedField MFNode   children        []
      exposedField SFBool   collide         TRUE
      field        SFVec3f  bboxCenter      0 0 0
      field        SFVec3f  bboxSize        -1 -1 -1 
      field        SFNode   proxy           NULL
      eventOut     SFTime   collideTime
}

I jako składni węzła, czyli te elementy interfejsu użytkownika, które znajdą się potem w pliku VRML: 

Collision { 
     children        [] 
     collide         TRUE 
     bboxCenter      0 0 0 
     bboxSize        -1 -1 -1  
     proxy           NULL 
} 
Powrót do czarnej dziury