Lyhyt historia
Perusteet
Työasema
Tunnisteet perusprimitiivit ja kommentti
Vapaamuotoiset kappaleet
Solmut (Nodes)
Värit ja textuurit
Siirto, kierto ja skaalaus
Solmujen monistaminen
Harjoitukset valmiina
VRML ei ole ohjelmointikieli. Se on HTML:n tavoin tulkattava kuvauskieli, jota on pyritty kehittämään mahdollisimman laitteistoriippumattomaksi tavaksi esittää vuorovaikutteisia 3D-mallinnoksia jaettavaksi samanaikaisesti usean käyttäjän kesken.
VRML- kielen määrityksiä kehittämässä oli alkujaan suuri joukko yksittäisiä henkilöitä, yhteisöjä ja yrityksiä, joiden työn tuloksena 26. toukokuuta 1995 valmistui VRML 1.0-kielen lopullinen määrittely ja se standardoitiin. Se syntyi Silicon Graphicsin OpenGL-määrityksiin perustuen muutamassa kuukaudessa.
1.0 standardi oli kielen kehittäjienkin mielestä puutteellinen jo julkaistaessa, mutta standardoinnin myötä kehitystyöhön mukaan haluttiin uusia, vaikutusvaltaisia tahoja.
VRML- kehittäjäjoukko kasvaa ja voimistuu. 20. -23. elokuuta 1995 järjestettiin VRML 1.0:n kehittämisestä kiinnostuneiden tutkijoiden ja kehittäjien tapaaminen jonka seurauksena VRML Architecture Group eli (VAG) perustettiin.
4 maaliskuuta 1996 aikaansaatiin VRML 2.0 standardi, joka antaa selvästi paremmat mahdollisuudet kappaleiden ja ympäristöjen vuorovaikutteisuuden lisäämiseen.
- Objektien animointi, jonka avulla voidaan luoda liikettä tilaan sekä käyttäjän mahdollisuus käynnistää tai lopettaa toiminta.
- Ympäristön jakaminen usean käyttäjän kesken.
- Laaja audiovisuaalisten tehosteiden lisääminen.
- Java / JavaScript-yhteensopivuus
Näinä aikoina alkunsa sai Moving Worlds-työryhmä, johon kuuluu mm. Silicon Graphics, Black Sun, Intervista Software, Macromedia sekä lukuisa joukko muita yhteisöjä sekä yksityishenkilöitä.
Tällä hetkellä kehitystyön tulos kantaa nimeä VRML 97 ( ISO/IEC 14772-1:1997)Käyttökohteita alunperin oli ja on edelleen, erilaiset IRC-tyyppiset kohtaamispaikat, joissa käyttäjä voi valita itselleen jonkin virtuaalihahmon. Nämä hahmot voivat sitten kohdata jonkun tahon ylläpitämässä ympäristössä ja vaihtaa kuulumisia. VRML:ää käytetään jonkun verran myös suunnittelussa mallinnuksen apuna.
Kaksiulotteisessa esityksessä, kuten esimerkiksi veb-sivulla, kappaleen sijainti määritellään horisontaali- (vaaka X) ja vertikaali- (pysty Y) -suuntaisesti.
Kolmiulotteisessa mallinnuksessa mukaan otetaan myös syvyysmäärittely (Z). Kappaleen sijainti ja asento tilassa ilmaistaan kolmiulotteisella koordinaatistolla.
Kolmiulotteisessa tietokonegrafiikassa, kappaleet ilmaistaan joukkona pisteitä, jotka sijaitsevat koordinaatistossa. Piirto-ohjelma muodostaa viivat näiden pisteiden välille, jolloin muodostuu rautalankamalli kolmiulotteisesta kappaleesta. Rautalankamallin muodostamat pintamuodot voidaan täyttää RGB-värimäärityksin tai textuuria käyttäen. Kappaleen kierto ilmoitetaan koodissa asteiden sijaan radiaaneina ja lasketaan vastapäivään.
VRML- kieli on "tulkattava", joten työasemaan on asennettava joku , yleensä web-selaimeen liitettävä laajennus, eli plugin. Niitä löytyy joka lähtöön ja kaikissa on hyvät ja huonot puolensa. Ainakin alussa on viisainta ottaa käyttöön laajennus, joka tulkkaa koodin ilman joutavia erikoisuuksia. Tarjolla on nimittäin sellaisiakin, jotka on tarkoitettu käytettäväksi jonkun tietyn vrml-mallintajaa valmistavan yhtiön selaimen kanssa. Hyvä valinta on esim. SGI:n CosmoPlayer. Kielen muokkaamiseen käy mikä tahansa tekstinkäsittelyohjelma, mukaan lukien yksinkertaisimmat ASCII-editorit. (Mac:n SimpleText, Unix: Pico, Win: WordPad ym.). Kielen tiedostotarkennin on .wrl. Itse koneeltakaan, näytönohjausta lukuunottamatta, ei homma paljoa vaadi. Plugin/selain imaisee kiintolevytilaa säästöliekillä (Cosmo noin 4mt.).
Isoja selainmöykkyjäkin on. Esim. Platinum technologyn Exploreriin tekemä WorldView2.1 (noin13mt.).
Suuri määrä suorittimen uumenissa lymyäviä megahertzejä saa poikkeuksetta tekijän nyökyttämään hyväksyvästi päätään, vaan vähälläkin pärjää. Sensijaan näytönohjain saisi mielellään olla rivakka toimissaan. OpenGl-tuki olisi hyvinkin suotava.PS. Cosmon laajennuksen ohjeet saat halutessasi näkyviin klikkailemalla panelin vasemmassa alalaidassa olevia kolmioita
VRML-kielen avulla voidaan muodostaa joitakin perusmuotoja, primitiivejä, joita yhdistämällä voidaan muodostaa uusia, monimutkaisempia kappaleita. Näitä perusmuotoja kutsutaan primitiiveiksi, ja ne kuuluvat kaikkien mallintajien ja myös kieltä tulkkaavien laajennusten kalustoon. Primitiivit ja niiden yhdistelmät pystytään tuottamaan lopputuloksen kannalta taloudellisesti (pieni tiedostokoko), kun taas vapaamuotoiset kappaleet, (fasetit) aikaansaavat helposti valtaisan tiedoston.
Primitiivit ovat seuraavat:
Box (laatikko/kuutio) Sphere (pallo/soikio) Cylinder (sylinteri) Cone (kartio)
Muotoa ennen tarvitaan tunniste. VRML 2.0 koodi alkaa aina rivillä...
#VRML V2.0 utf8
... josta selain tietää seuraavien rivien sisältävän laajennuksen avulla tulkattavaa kieltä.
tunnisterivin jälkeen voidaan kommentoida:
#VRML V2.0 utf8
#kommenttirivi alkaa risuaidallaYksi perusprimitiiveistä ilman mitään muotoiluja kirjoitetaan...
#VRML V2.0 utf8
#Rivit luovat kartion
Shape {
geometry Cone{}
}...joka muodostaa kartion. Jos muotosolmun (Shape), sisään kirjoitetaan joku muu primitiivi, muodostetaan kartion tilalle haluttu muoto.
VRML 1.0, 2.0 ja -97 version tiedostotarkennin on .wrl
Vapaasti muotoiltavien kappaleiden luonti VRML:ssä perustuu fasetteihin eli kolmen tai neljän pisteen ja niitä yhdistävien viivojen muodostamiin kolmioihin ja neliöihin, joita taas yhteisesti nimitetään polygoneiksi eli monikulmioiksi. Kielessä jokaisen fasettipisteen koordinaatit määritellään erikseen (IndexedFaceSet), eli vapaasti suomennettuna LähdeluetteloituNaamaSarja :-).
Tästäpä voi päätellä esimerkiksi muusinuijan, tai hillovasaran mallintamisen olevan suhteellisen helppoa primitiivivejä käyttäen, kun taas vaikkapa käkikello kaikkine yksityiskohtineen ilman mallintajan apua on ylivoimainen homma.Hyvät 3D-mallinnusohjelmat ovat kalliita, yleensä monimutkaisia käyttää eikä suoraa VRML-tallennusmahdollisuutta useinkaan ole, joten piirto-ohjelmia voi käyttää oikeastaan vain mallinsiirron apuvälineenä. Onneksi kuitenkin ahkerat alan harrastajat ovat vuosien mittaan kehittäneet talkootyönä melkoisen näppäriä "käntäjiä", joilla eri 3D-piirto-ohjelmien tuotoksia voidaan muokata VRML-koodiksi.
Suora VRML tallennusmahdollisuus on ainakin Autodeskin 3Dmaxissa. AutoCAD:iin sitä on lupailtu jo jonkin aikaa, vaan eipä ole ainakaan R14-versiossa.Yksi apuväline vapaamuotoisen kappaleen tekoon on Keith Rulen tekemä Crossroads, joka lukee ja kirjoittaa usean piirto-ohjelman tiedostomuotoa esim: 3Dstudion .3ds ja AutoCAD:in .dxf .
VRML 2.0 rakenne perustuu solmuihin. Solmu aloitetaan aina tyyppimäärittelyllä, jolla kerrotaan mihin ominaisuuteen halutaan vaikuttaa. Sen jälkeen kirjoitetaan aaltosulkujen { } sisään ominaisuuden arvot. Karkeasti jakaen solmujen päätyypit ovat:
- Appearance (Ulkoasu)
- Shape (Muotosolmut)
- Material ja ImageTexture (Materiaali)
- Transform (Siirto, rotaatio ja skaalaus)
- Group (Ryhmäsolmu)
Kokonaisuudet aikaansaadaan yksinkertaisesti sijoittamalla solmuja allekkain. Solmut vaikuttavat koodin loppuun asti jokaiseen myöhempään
solmuun ellei niitä erotella toisistaan esimerkiksi ryhmäsolmulla (Group). Noin yleensä ottaen solmut voidaan sijoittaa melko vapaavalintaisesti suhteessa toisiinsa. HTML:n tavoin selain lukee koodin ylhäältä alaspäin. Tällä on merkitystä, jos kopioit yhtä kappaletta moneen paikkaan. Silloin voidaan solmujen sijoittamisella vaikuttaa siihen, mikä kopio näkyy ensimmäisenä.
Värien määrittely tehdään Material-solmussa ja perustuu RGB-kanaviin. Osavärit vaihtelevat asteikolla 0-1. Nollalla kanava on kiinni ja ykkösellä täysin auki. Värin ja pinnan ulkonäköön vaikuttavat monet määritykset. Tärkein väriin vaikuttava määritys on diffuse color.
Textuureksi käyvät JPG, GIF ja PNG-kuvat. Sopiva koko suuren pinnan täytöksi on noin 100X100 pixeliä.Taulukosta löytyvät perusvärejä vastaavat RGB-arvot. Loput sekoittamalla.
R G B 0 0 0 musta 0.5 0.5 0.5 harmaa 1 1 1 valkoinen 1 0 0 punainen 0 1 0 vihreä 0 0 1 sininen 1 1 0 keltainen
Esim: sininen väri...
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 1
}
}
Ulkoasun ainoa arvo, sininen värikanava auki
Esim: materiaalina textuuri...
Shape {
appearance Appearance {
material Material {
texture ImageTexture {
url "hakemisto/tai/url/jokukuva.jpg"
}
}
Polku tai viittaus " " väliin
Siirto, rotaatio ja skaalaus tehdään Transform-solmulla. Määritykseen käytetään kolmea lukua, järjestyksessä X, Y ja Z. Tämä lisää koodia, koska kappaleen kuvauksen eteen lisätään children-kenttä . Kentän avulla määritellään, mihin objekteihin muutokset vaikuttavat.
Rotaatiossa ja siirrossa käytetään asteiden sijaan radiaaneja ja kierto lasketaan vastapäivään.Taulukossa joitakin suuntaa-antavia lukuja. Loput löytyvät kokeilemalla.
Asteluvut Radiaanit 0 0 30 0.175 45 0.785 90 1.571 180 3.142 270 4.712 360 6.283
Solmuja voidaan monistaa DEF ja USE avainsanoilla. Kuvantamisvaiheessa VRML-selain kopioi DEF-avainsanalla merkityn objektin Transform-
solmussa määrättyyn paikkaan.Esim:
#VRML V2.0 utf8
#kartion kopiointi
Transform {
children DEF KARTIO Transform {
children Shape {
appearance Appearance {
material Material {
}
}
geometry Cone {
}
}
translation 0.0294466 -2.08259 0.939986
scale 0.5 0.5 0.5
}
}
Transform {
children USE KARTIO
translation -1.17786 0.44273 -0.16114
}
...Kopioi kartion
Perusmuodoilla tehtävissä harjoituksissa jätskitötterössä käytetään vain kahta perusprimitiiviä, kartiota ja palloa.
Muusinuijassa on lisäksi sylinteri ja muutama kopioimalla muodostettu kartio.
Valmiina (ainakin melkein) ne ovat täällä | Jätski | muusinuijan osat |