VRML
VRML adalah singkatan dari “Virtual Reality Modeling language” dan sering dibaca “vermel”. Meskipun demikian VRML tidak benar-benar menunjukkan “virtual reality”. VRML esensinya adalah bahasa pemrograman yang memperbolehkan pencipta Web site untuk membuat lingkungan yang interaktif, lingkungan Cyber space 3-Dimensi.
Visi awal dari VRML adalah perpotongan dari format file inventor (ASCII) dengan beberapa tambahan untuk memperbolehkan linking keluar ke Web dan memasukkan URL lainnya. Feature yang disebut linking out feature ini (WWW Anchor) menyediakan feature yang sama yang disediakan HREF anchors di HTML. Feature lain yang penting adalah LOD (Level of Detail) yang membolehkan sejumlah data berbasis objek untuk menentukan bagaimana kejelasan objek dalam pandangan, atau kecepatan render dari mesin browser.
BROWSER VRML
Sebelum kita mulai belajar menggunakan VRML-nya sendiri, ada baiknya kita tahu browser apa saja yang dapat digunakan untuk menampilkan VRML. File VRML biasanya mempunyai akhiran wrl, berasal dari world. Dalam bentuk terkompresi, akhiran ini bisa juga lain seperti wrz atau wrl.gz. Ini tidak bermasalah, sebab biasanya browser juga mendukung jenis file yang terkompresi. Untuk dapat menampilkan isi file ini, tentu saja dibutuhkan aplikasi yang bisa menginterpretasikan bahasa VRML. Dalam praktiknya, aplikasi ini sebagian besar dibuat dalam bentuk plugin yang berjalan di bawah kontrol browser seperti IE, Netscape, ataupun Opera. Situs Web www.vrml.org menyediakan banyak resource untuk VRML, termasuk browser dan plugin untuk VRML. Dalam bentuk plugin dapat disebutkan antara lain Blaxxun Contact, BlenderWeb Plugin, Cosmo Player, Viscape, dll. Biasanya plugin tersebut tidak hanya mampu untuk menampakkan VRML, melainkan juga format 3D lainnya.
Selain dalam bentuk plugin tentu saja ada juga browser dalam bentuk aplikasi standalone. Contohnya antara lain, OpenVRML, FreeWRL, VRWeb, VRMLView dari SIM, Cortona VRML, dan sebagainya. Beberapa aplikasi komersial seperti Open Inventor dari TSG bahkan telah mendukung VRML, tidak hanya dalam level konversi antarformat file, tapi sebagai tool authoring untuk VRML.
APLIKASI VRML
Beberapa aplikasi VRML yaitu :
1. Arsitektur : Digunakan untuk membuat bangunan mirip aslinya, di mana nda ingin menjelajahi setiap[ sudut bangunan seperti mengunjungi langsung.
2. Bisnis : Bagi usahawan VRML adalah ajang bagus untuk membuat promosi produknya dalam 3 dimensi.
3. Hiburan : Anda dapar berekreasi di komputer anda melalui VRML ini.
4. Homepage : Kini sudah banyak poerusahaan menggunakan VRML untuk membuat webpage atau homepage-nya jauh menarik.
5. Ilmu pengetahuan : Anda bisa membuat sebuah anatomi tubjuh 3D yang dapat diputar-putar, membuat struktur molekul, tata surya planet-planet , dan sebagainya.
6. Militer : Saat ini di bidang militer VRML digunakan untuk meletakan daerah-daerah operasi militer ,yang nantinya digunakan untuk meletakkan pasukan, atau bahkan digunakan sebagai panduan untuk smart missile (peluru kendali ).
7. Pendidikan : Bisa digunakan sebagai sarana pendidikan yang efisien.
8. Rekayasa : VRML digunakan untuk membuat atau merekayasa suatu rancangan seperti mobil, banguann pesawat terbang.
9. Sejarah : Semua bangunan sejarah masa lampau bisa direkayasa kembali secar 3D dengan VRML.
10. Seni : Kita dapat membuat sebuah museum virtual yang memiliki ruang berbagai macam benda seni.
11. Sosialisasi : VRML digunakan untuk dapat meninjau keadaan baik sekarang maupun yang akan datang.
DASAR VRML
VRML adalah singkatan dari Virtual Reality Modeling Language suatu bahasa pemrograman yang digunakan untuk membentuk objek 3D yang dapat dibaca oleh browser internet. VRML dipublikasikan pada Mei 1995 dan kemudian dilakukan standarisasi pada VRML97.
Konsep-Konsep VRML97
Bagian ini membahas tentang konsep-konsep dasar di dalam spesifikasi VRML97. Hal ini penting diketahui agar Anda mempunyai dasar pengetahuan yang kuat tentang VRML97 sebelum mengaplikasikannya ke dalam desain suatu lingkungan virtual 3D. Dari beberapa contoh program yang telah diberikan sebelumnya, tentunya Anda sudah mulai mengenal struktur file VRML97. Hal ini akan dibahas lagi dengan uraian lebih rinci. Pembahasan difokuskan pada topik-topik berikut:
· Struktur file VRML97
· Sintaks file UTF-8
· Struktur scenegraph
Pemahaman tentang struktur file VRML97 akan mempercepat Anda dalam mempelajari pemrograman dan pemodelan lingkungan virtual menggunakan spesifikasi VRML97. Anda akan melihat bahwa pembahasan lebih bersifat teoritis daripada praktis. Karena itu, sebaiknya Anda membaca secara cepat dan menangkap pengertian-pengertian dasar yang diberikan. Sintaks UTF-8 dibahas dengan maksud agar Anda mempunyai gambaran umum tentang aturan-aturan dalam penulisan pemyataan-pemyataan di dalam VRML97. Karena bagian ini tergolong sulit, Anda tidak harus mengerti sekali membaca. Anda dapat membaca lagi bagian ini sewaktu-waktu ketka -memerlukan, misalnya untuk memahami program-program VRML di dalam buku atau ketika ingin mengembangkan program yang tidak ada dalam buku. Dengan demikian, Anda dapat mengikuti
1. Struktur File VRML97
Struktur file VRML97 tidak rumit. Setiap file VRML97 selalu diawaii dengan header pada baris pertama, dan diikuti dengan perintah dasar VRML yaitu node-node pada baris berikutnya, seperb bentuk d bawah ini.
#VRML V2.0 utf8
# Komentar isi file
TipeNode
Ketika program VRML dibaca oleh suatu HTML browser yang dilengkapi dengan VRML browser, bagian header "#VRML." akan menjadi petunjuk bagi HTML browser untuk tidak memrosesnya sebagai file HTML tetapi file VRML. Atas dasar petunjuk ini, HTML browser mencari aplikasi yang tepat untuk menampilkan file VRML, yaitu dengan menjalankan VRML plug-in browser. Setelah VRML browser memegang kendaii atas file tersebut, mesin penedemah (parser) VRML akan membaca bagian "V2.0", dan mengartikan bahwa file itu adalah file yang dituliskan mengikuti spesifikasi VRML 2.0, bukan spesifikasi sebelumnya yaitu "VRML 1.0". Perlu diperhatikan bahwa Anda harus memberi jarak satu spasi antara “#VRML” dan "V2.0". Jika tidak, akan terjadi kesalahan.
Selanjutnya, bagian "utf8" akan dibaca oleh parser yang memberitahukan bahwa file VRML itu dituliskan menggunakan kumpulan karakter intemasional UTF-8. Menurut spesifikasi VRML97, Anda diharuskan memberi jarak satu spasi antara "V2.0" dan utf8 . Namun penulis memperoleh kenyataan, meskipun diberi jarak febih dari satu spasi program VRML masih dapat ditampilkan tanpa kesalahan. Meskipun demikian, pemberian satu spasi akan lebih baik, untuk menjaga kemungkinan suatu browser membeflakukan spesifikasi VRML-97 secara ketat. Dengan UTF-8, Anda dapat memberikan komentar dalam bahasa apapun, tanpa menimbulkan masalah bagi VRML parser.
Pada bada kedua Anda melihat penggunaan tanda "#". Kecuali pada header, tanda "#" pada bagian lain di dalam file VRML berfungsi sebagai awal suatu komentar hingga akhir baris. Anda boleh menggunakan tanda "#" di mana saja di dalam file, VRML. Pemakaian komentar sangat baik bagi Anda sendiri maupun orang lain yang berminat pada karya VRML Anda. Tentu saja Anda boleh tidak menggunakan fasilitas ini sama sekali. Namun semakin panjang suatu program VRML, maka akan semakin sulit memahami isi file VRML tersebut jika tidak diberikan penjelasan atau komentar sama sekai.
Setelah header, Anda meletakkan node-node VRML dengan menuliskan nama tipe node dan field-field yang dipakai untuk memberi sifat pada objek dengan memberikan suatu harga (value). Anda pun boleh tidak menggunakan sama sekali field suatu node. Jika demikian, ini berarti Anda telah memilih harga default bagi field-field node tersebut. Penjelasan rinci tentang node akan dibahas khusus pada Bab 4 dan Lampiran A. Penjelasan field diberikan pada Bab 4 dan Lampiran B. Yang perlu diperhatikan adalah, suatu node selalu diawali dengan tanda kurung kurawal buka "[" dan diakhiri dengan kur'ung kurawal tutup "]". Jika Anda lupa menuliskan salah satu, maka ini dianggap suatu kesalahan.
Dari penjelasan ini Anda dapat menyimpulkan bahwa struktur file VRML97 sangat sederhana, bukan? Untuk mengeksploitasi kemampuan spesifikasi VRML97 penggunaan node saja tidak cukup. Ada suatu mekanisme sangat penting (tidak ada pada VRML 1.0) yang dapat digunakan untuk menciptakan lingkungan dinamik (animasi) maupun sifat interaktif, yaitu event routing (lihat penjelasan berikut).
2. Sintaks File UTF-8
Sepeti telah dibahas, file VRML menggunakan kumpulan karakter intemasional UTF-8. Dengan demikian file VRML dapat dibaca oleh pengguna maupun oleh komputer. Bagian ini akan membahas pengeruan-pengertian penting di dalam penulisan (sintaks) spesifikasi VRML97. Beberapa ter-minologi baru diperkenalkan, demikian pula sintaks pernyataan (statement) yang digunakan.
2.1 Pengkodean UTF-8
Kita telah mengetahui bahwa tanda "#" di dalam suatu file VRML merupakan awal suatu komentar. Namun "#" pada baris pertama mempunyai peran khusus, yaitu sebagai header. Mesin penterjemah (parser) file VRML akan mengabaikan komentar dan hanya memproses (menterjemahkan) bagian lain file VRML yang merupakan pemyataan-pemyataan dan divisualisasikan sebagai lingkungan virtual. Selain tanda komentar "#", VRML97 menyediakan node khusus untuk mencantumkan informasi di dalam file VRML tentang pencipta, hak cipta (copyrights), atau keterangan lain melalui node Worldlnfo.
Spesifikasi VRML97 memberikan aturan yang ketat terhadap pemberian nama di dalam file VRML. Untuk menghindari kesalahan, maka nama-nama field, event, PROTO, EXTERNPROTO dan node tidak boleh mengandung karakter kontrol, spasi, tanda kutip tunggal (") atau ganda (""), tanda "#", tanda koma tanda titik ".", kurung siku "[ I"), backslash "\", atau kurung kurawal "{ }". Huruf pertama dari nama-nama itu juga tidak boleh menggunakan angka, tanda plus (+) dan minus (-). VRML membedakan huruf besar dan kecil (case sensitive), sehingga nama tipe node "Box" tidak sama dengan "box", dan keyword "ROUTE" berbeda dengan "route" atau "Route".
Berikut adalah keyword (kata kunci) yang tidak boleh digunakan untuk nama-nama field, event, PROTO, EXTERNPROTO dan nama node, yaitu:
DEF
EXTERNPROTO
FALSE
is
NULL
PROTO
ROUTE
TO
TRUE
USE
eventIn
eventOut
exposedField
field
Dari terminologi tersebut, keyword FALSE (salah) dan TRUE (benar) merupakan kata yang mudah dimengerti. Karena keduanya biasa dijumpai di dalam bahasa pemrograman, dan merupakan harga atau nilai bagi suatu field dengan tipe boolean. Untuk sementara Anda cukup mengenal dan mengingat tertninologi baru tersebut. Penjelasan lebih rinci akan diberikan tahap demi tahap pada bagian berikut dan bab-bab selanjutnya yang membahasnya di dalam contoh-contoh program.
2.2 Pernyataan (Statement)
Dalam peenrograman menggunakan bahasa apapun, satu atau lebih pemyataan selalu dapat ditemui pada setiap program. Namun, berbeda dengan bahasa pemrograman berbasis compiler ataupun script (interpreter), pemyataan di dalam file VRML sangat berbeda (dalam arti keyword atau perintah yang digunakan). Setelah header, suatu file VRML mengandung pemyataan-pemyataan yang merupakan kombinasi dari berikut ini:
· Satu atau lebih pemyataan PROTO atau EXTERNPROTO
· Satu atau lebih node root
· Satu atau lebih pemyataan DEF
· Satu atau lebih pemyataan ROUTE
Di antara beberapa hal di atas, yang akan sering Anda jumpai pada contoh-contoh program VRML dalam buku ini adalah penggunaan node root dan pemyataan DEF. Untuk memberikan sifat interaktif dan dinamik (animasi) kita akan menggunakan kombinasi node-node dan ROUTE.
Pernyataan PROTO dan EXTERNPROTO digunakan untuk membentuk tipe node baru (tidak ada dalam spesifikasi VRML97) yang didefinisikan oleh user. Hal ini adalah sifat VRML97 yang sangat penfing, karena menjadikan VRML97 sebagai bahasa yang dapat dikembangkan (extensible) sesuai kebutuhan. Namun karena keterbatasan ruang, PROTO dan EXTERNPROTO tidak dibahas di dalam buku ini. Berikut diberikan sintaks dari masing-masing pemyataan di dalam spesifikasi VRML97.
2.3 Sintaks Pernyataan Node
Suatu pemyataan node terdiri atas nama node (optional) diikuti oleh tipe node dan kemudian tubuh (body) dari node itu. Suatu node dapat diberi nama menggunakan keyword DEF dengan sintaks seperb berikut ini:
[DEF ] { }
Sesuatu di dalam tanda “[…]” adalah pilihan. Jadi, penggunaan DEF bukan suatu keharusan. Tetapi jika Anda menggunakan maka akan sangat menguntungkan, karena dapat memakai ulang node itu tanpa menuliskan lagi segala sesuatu yang terdapat di dalam dari node. Apalagi jika hierarkis (tingkatan node-node) di dalam body cukup kompleks. Penggunaan keyword DEF jelas menyingkat waktu penulisan file VRML dan membuat program menjadi lebih kecil. Untuk memakai ulang suatu node digunakan keyword USE (lihat penjelasan 3.2.4).
Pada dapat diisi dengan salah satu node di dalam spesifikasi VRML97. Perlu diingat, jumiah node adalah 54 buah. Selanjutnya, di dalam suatu node yang diapit oleh tanda kurung kurawal “{...}” dapat mengandung satu atau beberapa field, pemyataan IS, ROUTE, PROTO atau EXTERNPROTO dalam urutan yang tidak ditentukan (bebas). Anda dapat mengecek program-program yang ada dalam buku untuk mengetahui komponen apa saja yang digunakan di dalam suatu node menurut VRML97 (misalnya, lihat kembali Program 1.2).
2.4 Sintaks Pernyataan USE
Peryataan USE terdiri atas keyword USE dan diikuti oleh nama node, sebagai berikut:
USE
Dalam hal ini, adalah nama node yang telah didefinisikan menggunakan keyword DEF pada bagian lain di dalam file VRML (lihat 3.2.3). Anda boleh menggunakan USE sebanyak mungkin sesuai kebutuhan, tentu saja dengan kondisi yang berbeda. Misalnya Anda menggunakan node Transform untuk meletakkan objek geometri yang sama pada tempat lain di dalam virtual world. Jika demikian, field translation harus diberi nilai berbeda, agar objek-objek tidak saling tumpang tindih, kecuali bila dikehendaki demikian.
2.5 Sintaks Pernyataan Field
Field adalah bagian dari node yang memberikan sifat-sifat (properties) objek (node) tersebut di dalam virtual world. Dengan field inilah kita dapat membentuk berbagai objek berbeda sifat satu sama lain, meskipun kita menggunakan node yang sama.
Peryataan suatu field terdiri atas nama field dan diikuti oleh harga (value) field itu. Menurut spesifikasi VRML97, ada dua jenis field, yaitu field yang memerlukan hanya satu harga (Single-valued Field, disingkat SF) dituliskan dalam format:
Serta field yang dapat menerima nilai lebih dari satu (Multi-valued Field, disingkat MF) dan dituliskan sebagai:
[ ]
Pada sintaks tersebut, perhatikan tanda kurung siku “[…]”yang mengapit deretan nilai-nilai field dengan tipe MF. Tanda ini bukan berarti opsi (pilihan) pemakaian, karena itu harus tetap dituliskan bila harga yang diberikan lebih dari satu. Namun, bila Anda memberikan hanya satu harga pada field tersebut, maka tanda kurung siku boleh dihilangkan atau tetap digunakan. Selanjutnya, setiap node mengandung deklarasi prototype, nama field, tipe data field serta harga default. Nama dan tipe field yang sama boleh digunakan oleh lebih dari satu node di dalam file VRML. Apakah hal ini tidak menimbulkan suatu kesalahan? Tidak. Karena tanda kurung kurawal yang mengapit body. suatu node akan memisahkannya dari node lain. Sehingga program penerjemah (parser) VRML mendeteksinya sebagai field yang berbeda dari objek yang berbeda pula.
2.6 Sintaks Pernyataan PROTO
Keyword PROTO digunakan untuk mendefinisikan node baru yang tidak terdapat dalam spesifikasi VRML97. Pernyataan PROTO terdiri atas keyword PROTO, kemudian diikuti oleh nama prototype, deklarasi interface prototype dan definisi prototype, sebagai berikut:
PROTO [ I i )
Sebagaimana halnya penggunaan DEF, kita dapat memberi nama bebas pada PROTO yang dibuat, namun harus tetap mengikuti aturan pemberian nama (lihat 3.2. 1). Kemudian, deklarasi interface suatu prototype terdiri atas eventIn, eventOut, field, dan exposedField yang diletakkan diantara tanda kurung siku. Anda boleh memberikan spasi sebelum atau sesudah tanda kurung siku. Tentu saja pemberian spasi akan memudahkan dalam memahami program. Di sini kita berhadapan dengan penggunaan keyword baru, yaitu eventln, eventOut, field, dan exposedField, yang masing-masing dijelaskan sebagai berikut.
Deklarasi eventln terdiri atas keyword "eventIn" dan diikuti oleh tipe event dan nama, sebagai berikut:
eventIn
Deklarasi eventOut terdiri atas keyword "eventOut" dan diikuti oleh tipe event dan nama, sebagai berikut:
eventOut
Deklarasi field atau exposedField terdiri dari keyword field atau exposedField diikuti oleh tipe field dan nama, serta nilai awal field tersebut:
field
exposedField
Di dalam suatu PROTO, nama field, eventIn, eventOut dan exposedField harus unik (tidak sama satu sama lain), tetapi boleh sama untuk definisi PROTO lainnya. Hal lain yang perlu diperhatikan adalah, bila di dalam suatu PROTO berisi exposedField dengan nama abc, misainya, maka PROTO ini tidak boleh memiliki nama evenIn atau eventOut yang tersusun atas prefix (awalan) set_ atau sufflx (akhiran) _changed ditambah nama (eventln atau eventOut) yang di berikan. Karena itu, nama eventIn set-abc dan eventOUt abc_changed tidak boleh digunakan.
Bila uraian di atas dipandang cukup membingungkan, Anda tidak perlu khawatir karena ini dimaksudkan untuk pengenalan saja. Karena pembahasan PROTO cukup rumit, maka pemakaian PROTO fidak akan dibahas dalam buku ini dan akan lebih efisien diuraikan pada buku lain setelah Anda menyelesaikan buku ini. Dengan menggunakan contoh program dalam buku berikutnya diharapkan masalah itu akan teratasi. Yang jelas, jika Anda menguasai pemakaian PROTO, Anda akan lebih leluasa berkreasi dalam pembuatan lingkungan virtual 3D berdasarkan VRML97.
Peran PROTO sangat penting ketika Anda memerlukan suatu node dengan sifat-sifat tertentu yang tidak dapat dipenuhi seluruhnya oleh salah satu node di dalam spesifikasi VRML97. Dengan prototyping maka VRML97 menjadi "extensible" atau dapat diperluas. Sebagai catatan dalam pemakaian PROTO, bahwa di dalam definisi PROTO sedikitnya harus terdapat satu pemyataan node dan boleh ditambahkan lebih dari satu pernyataan ROUTE, PROTO dan EXTERNPROTO dalam urutan sembarang.
2.7 Sintaks Pernyataan IS
Body suatu pemyataan node di dalam definisi prototype dapat mengandung pernyataan IS. Dalam hal ini, pernyataan IS tersusun atas nama field, exposedField, eventln atau eventOut, kemudian diikut oleh keyword IS dan juga diikuti oleh nama field, exposedField, eventIn atau eventOut:
IS
Pemakaian IS akan dijelaskan lagi ketika kita membuat suatu node baru dengan keyword PROTO.
2.8 Sintaks Pernyataan EXTERNPROTO
Kita telah mengetahui sintaks pemyataan PROTO, bagaimana dengan keyword EXTERNPROTO? Pernyataan EXTERNPROTO terdiri atas keyword EXTERNPROTO dan diikuti berturut-turut dengan nama prototype, deklarasi interface dan deretan string (boleh kosong) di dalam tanda kutip ganda yang diapit oleh tanda kurung siku. Jika hanya ada satu string maka tanda kurung siku boleh dihilangkan. Sintaks EXTERNPROTO untuk satu URL (Universal Resource Locator) adalah sebagai berikut:
EXTERNPROTO [ ] URL
Jika menggunakan lebih dari satu URL, dituliskan sebagai:
EXTERNPROTO [ ] [ URLs ]
Deklarasi interface EXTERNPROTO mirip dengan deklarasi interface PROTO, karena itu tidak dijelaskan lagi di sini. Meskipun demikian, perlu dicatat adanya beberapa perbedaan yaitu bahwa nilai awal field dan exposedfield tidak diberikan dan definisi prototype dinyatakan dalam file VRML terpisah (sesuai dengan arti EXTERN). File ini dipanggil atau disisipkan ke dalam file VRML yang mengandung EXTERNPROTO melalui URL.
2.9 Sintaks Pernyataan ROUTE
Pernyataan ROUTE terdiri dari keyword ROUTE (dalam huruf besar) dan diikuti secara berurutan dengan nama node, tanda titik (.), nama field atau event, keyword TO (dalam huruf besar), nama node, tanda titik (.) dan nama field atau event. Anda boleh memberikan tanda spasi sebelum dan sesudah tanda titik, tapi hal ini umumnya tidak dilakukan. Sintaks pemyataan ROUTE dituliskan sebagai berikut:
ROUTE . TO
.
Meski pemyataan dituliskan dalam dua baris, sebaiknya Anda menuliskannya dalam satu baris di dalam program VRML. Perlu diketahui bahwa namaField/namaEvent yang dimaksud adalah exposedField, eventln dan eventOut.
3. NODE VRML97
Node merupakan pemyataan atau perintah dasar VRML yang selalu dijumpai di dalam setiap file VRML. Seperti telah diketahui , bahwa file VRML tersusun atas node-node dan membentuk suatu struktur hierarki tertentu yang disebut sebagai scenegraph. Jika Anda telah mempelajari penulisan for-mat file HTML tentu tidak asing dengan istilah tag. Node di dalam file VRML dapat dipersamakan dengan tag di dalam file HTML.
Untuk menyusun suatu lingkungan virtual 3D berdasarkan VRML97, apa yang harus kita lakukan? kita harus mengetahui struktur file VRML, sintaks pemyataan suatu node, fungsi node di dalam pembentukan lingkungan virtual, serta mengerti benar fungsi masing-masing field di dalam node tersebut. Selain itu, kita harus mengetahui hubungan node satu dengan lainnya. Dengan pengetahuan seperti ini, kita setidaknya akan mampu membentuk suatu lingkungan virtual 3D statis (tanpa animasi). Untuk mengantarkan Anda pada pemahaman node berdasarkan spesifikasi VRML97, bagian ini membahas:
• Karakteristik node
• Definisi node
• Pemakaian DEF dan USE
• Deklarasi interface dalam node
• Node dalam VRML97
• Perubahan VRML 1.0 ke VRML97