SINTAK UMUM  

SISTEM KOORDINAT

VRML menggunakan sistem koordinat cartesian , right-handed dan 3-dimensi. Objek dibahagikan kepada 2-dimensi iaitu paksi X positif dan paksi Y positif.

Unit piawaian untuk panjang dan jarak adalah menggunakan meter dan unit piawaian untuk sudut pula adalah dalam radian.

 

MEDAN

Ada dua jenis medan yang umum iaitu medan yang mengandungi satu nilai dan medan yang mengandungi banyak nilai.Medan yang mengandungi satu nilai mempunya nama yang bermula dengan " SF " manakala untuk medan yang banyak nilai ditulis sebagai " MF".

Terdapat pelbagai jenis medan yang mengandungi satu nilai iaitu :

Node yang menggunakan medan ini menakrifkan nama mnemonic untuk bit flags. Medan yang mengandungi satu nilai boolean.SFBool mungkin ditulis sebagai 0 [FALSE] dan 1 [TRUE atau FALSE]. Satu nilai medan yang mengandungi warna yang ditulis di dalam fail sebagai RGB dalam jujukan 0.0 kepada 1.0 Satu nilai medan yang mengandungi nilai berjenis 'enumerated'.Node yang menggunakan medan berjenis ini menakrifkan mnemonic untuk nilainya.SFEnum ditulis sebagai nama yang berjenis 'mnemonic enumerated'Nama tersebut berbeza penggunaannya dalam setiap kelas node. Medan yang mengandungi satu nombor berjenis float dan ditulis dalam piawaian notasi saintifik. Medan yang mengandungi warna 2 dimensi atau imej yang kelabu.SFImage ditulis sebagai 3 integer iaitu lebar , tinggi dan nombor komponen dalam imej diikuti nilai heksadesimel lebar * tinggi yang menghasilkan piksel dalam imej tersebut.Piksel dalam tiga komponen imej mempunyai komponen merah dalam bit yang pertama diikuti dengann komponen hijau dan biru.Nilai heksadesimel yang pertama adalah piksel sebelah kiri yang rendah bagi imej tersebut manakala nilai terakhir pula ialah piksel disebelah kanan yang paling atas sebagai contoh 1 2 1 0xFF 0x00 adalah luas satu piksel disamping tinggi dua piksel imej kelabu dengan piksel putih dibawah dan piksel diatas adalah hitam. Medan yang mengandungi satu integer panjang (32 bit ) yang ditulis sebagai integer dalam desimel , heksadesimel (bermula dengan '0x') atau format oktal (bermula dengan '0') .

 

Medan yang mengandungi penukaran matriks.Ia ditulis dalam jujukan 'row-major' sebagai 16 nombor floating point dijarakkan dengan satu ruang kosong.Sebagai contoh matriks yang menterjemahkan 7.3 units disepanjang paksi X ditulis sebagai :
  • SFRotation
  • Medan yang mengandungi putaran secara rambang dan ditulis dalam empat nilai floating point yang dijarakkan dengan ruang kosong.Empat nilai tersebut menghasilkan putaran paksi diikuti dengan jumlah putaran mengikut arah jam dalam radian.Sebagi contoh putaran 180 darjah pada paksi Y ialah
  • SFString
  • Medan yang mengandungi ASCII string.Ditulis dalam jujukan aksara ASCII dalam "".Sebarang aksara (termasuk baris baru) mungkin wujud tanpa tanda tersebut.Untuk memasukkan tanda "" tanpa string mulakannya dengan \ (blackslash).Sebagi contoh :

    "One ,Two ,Three"

    "He said , \" Immel did it! \ ""

    Medan yang mengandungi vektor 2-dimensi dan ditulis sebagai sepasang nilai floating point yang diasingkan dengan ruang kosong.

     

    Medan yang mengandungi vektor 3-dimensi dan ditulis sebagai tiga nilai floating point yang dijarakkan dengan ruang kosong. Medan 'multiple-value' yang mengandungi sebarang nombor warna RGB.Ditulis sebagai satu atau banyak nombor RGB berjenis float dalam bentuk piawaian saintifik.Apabila lebih dari satu nilai ditulis , semua nilai tersebut mesti ditutup dengan [ ] dan diasingkan dengan tanda koma seperti contoh dibawah yang menghasilkan warna merah , hijau dan biru.

    [1.0 0.0 0.0 , 0 1 0, 0 0 1]

    Medan yang mengandungi sebarang nombor integer long ( 32 bit ).Ditulis sebagai satu atau leebih nilai integer dalam bentuk desimel , heksadesimel atau format oktal.Apabila lebih dari satu nilai ditulis ,semua nilai ditutup dengan [ ] dan diasingkan dengan koma seperti :

    [17, -0xE20, -518820 ]

    Medan yang mengandungi sebarang nombor vektor 2-Dimensi.Ditulis sebagai satu atau banyak pasangan nilai berjenis float yang diasingkan dengan ruang kosong.Apabila lebih dari satu nilai ditulis , semua nilai ditutup dengan [ ] dan diasingkan dengan koma seperti :

    [0 0, 1.2 3.4 , 6 -4e1]

     

    Medan yang mengandungi sebarang nombor vektor 3 dimensi.Ditulis sebagai satu atau lebih nilai berjenis float yang diasingkan dengan ruang kosong.Apabila lebih dari satu nilai ditulis , maka semua nilai perlu ditutup dengan [ ] dan diasingkan dengan koma seperti :

    [ 0 0 0, 1.2 3.4 5.6, 98.6 -4e1 212]

     

     

    NODES

    VRML menakrifkan beberapa kelas nodes yang berbeza.Nodes mungkin mengandungi kosong atau lebih medan dan setiap jenis node menakrifkann jenis,nama dan nilai bagi setiap medan.Nilai bagi setiap medan digunakan sekiranya nilai untuk medan tidak dikhususkan dalam fail VRML.Cara medan node dibaca adalah tidak penting sebagai contoh ; "Cube { width 2 height 4 depth 6 } dan "Cube { height 4 depth 6 width 2 } adalah sama. Sebahagian nodes boleh dikelaskan kepada salah satu daripada tiga kategori seperti di bawah :

    1. Shape
     
    1. Property
     
    1. Group
     
    1. Nodes WWWInline tidak termasuk dalam mana-mana kategori diatas
    Format Fail :

        WWWInline {

                name " " # SFString

                bboxSize 0 0 0 # SFVec3f

                bboxCenter 0 0 0 # SFVec3f

            }

     

    INSTANCING

     
    Nodes mungkin terdiri daripada lebih dari satu kumpulan yang dipanggil 'instancing ' dan cara untuk mencapainya adalah menggunakan katakunci " USE ".

    Kedua-dua katakunci DEF menakrifkan node untuk nama dan mereka satu instance baginya.Katakunci USE menunjukkan bahawa instance sepatutnya digunakan semula.DEF / USE adalah terhad kepada satu fail dan tiada mekanisma untuk node USE'ing yang menunjukkan DEF'ed dalam fail yang lain.

    Contoh dibawah akan menghasilkan tiga sfera dan kedua-dua sfera diberi nama 'Joe' ; sfera yang kedua dilukis dua kali :

     

    Separator {

            DEF Joe Sphere { }

                        Translation { translation 2 0 0 }

                        Separator {

                                    DEF Joe Sphere { radius .2 }

                                        Translation { translation 2 0 0 }

                    }

            USE Joe # radius .2 sphere will be used here

            }

     

    PENYAMBUNG

    Sambungan kepada VRML adalah disokong dengan sokongan node 'self-describing'.Node yang bukan sebahagian dari piawai VRML mesti ditulis luar dari penerangan medan yang pertama , maka semua penterjemahan VRML adalah perlu untuk dihuraikan dan sambungan pula diabaikan.

    Penerangan tersebut ditulis selepas pembuka curly-brace untuk node tersebut dan terdiri daripada katakunci medan diikuti senarai jenis dan nama medan yang digunakan oleh node tersebut.Semua senarai tersebut ditutup dengan [ ] dan diasingkan dengan tanda koma.Sebagai contoh , sekiranya CUBE bukan piawai node VRML maka ia perlu ditulis seperti dibawah :

     

    Cube {
     
        medan [SFFloat width , SFFloat height , SFFloat depth ]

        width 10 heoght 4 depth 3

        }