TH3813 Realiti Maya Membina Objek Membina Dunia VRML 1 2 Teknik asas Struktur asas VRML untuk bangunkan sebuah dunia VRML, bina dahulu cebisan- cebisan objek dalam satu fail, seperti dinding, tiang dan syiling kemudian guna nod Inline untuk gabungkan kesemuanya menjadi satu scene yang lengkap Fail VRML mengandungi header fail komen - nota penerangan nod - maklumat tentang scene medan(field) -attribut bagi nod nilai (values) - nilai bagi attribut dan lain-lain 3 4 Contoh fail VRML Memahami header #VRML V2.0 utf8 # A cylinder material Material { geometry Cylinder { height 2.0 radius 1.5 #VRML v2.0 utf8 #VRML: Fail mengandungi teks VRML v2.0: Teks mematuhi sintaks versi 2.0 utf8: Teks gunakan set rentetan UTF8 5 6
Memahamai utf8 utf8 ialah set rentetan piawai antarabangsa utf8 merujuk kepada: UCS (Universal Character Set) Transformation, 8- bit Kodkan 24,000+ abjad untuk pelbagai bahasa ASCII ialah salah satu subset Penggunaan komen # A Cylinder Komen bermula dengan tanda (#) sehingga di akhir baris tersebut 7 8 Penggunaan nod Penggunaan name jenis nod Cylinder { Nod deskripsikan bentuk (shapes), cahaya (lights), bunyi (sound), dll. Setipa nod mempunyai: jenis nod (Shape, Cylinder, dll) sepasang { tiada atau beberapa medan di dalam { 9 Nama jenis nod adalah case sensitive setiap perkataan bermula dengan abjad berhuruf besar abjad berikutnya berhuruf kecil Contoh: Appearance ElevationGrid Cylinder FontStyle Material ImageTexture Shape IndexedFaceSet 10 Penggunaan medan dan nilai Penggunaan nama medan Cylinder { height 2.0 radius 1.5 Medan(fields) jelaskan atribut bagi nod Setiap medan mengandungi: nama medan (height, radius, dll) jenis medan (float, integer, dll) nilai default 11 Nama medan adalah case sensitive perkataan pertama bermula dengan abjad berhuruf kecil setiap tambahan perkataan bermula dengan abjad berhuruf besar perkataan seterusnya berhuruf kecil Contoh: appearance coordindex height material radius diffusecolor fontstyle texturetransform 12
Penggunaan medan dan nilai Nod berbeza mempunyai medan berbeza Medan adalah optional nilai default akan diumpukkan jika medan tidak diberikan Medan boleh disenaraikan dalam sebarang urutan susunan tidak memberi kesan kepada nod Membina Bentuk Asas 13 14 Contoh Sintaks: Bentuk (Shape) Nod Shape membina satu bentuk appearance - warna dan tekstur geometry - struktur prim.wrl appearance.. geometry.. 15 16 Menspesifikasikan appearance Penspesifikasian geometry Appearance bentuk dideskripsikan oleh nod appearance material Material { geometry 17 Bentuk geometry dibina dengan nod geometry Box {... Cone {... Cylinder {... Sphere {... Text {... Medan nod geometri mengawal deimensi dimensi biasanya dalam meter 18
Sintaks: Box Sintaks: Cone Nod geometri Box membina sebuah kotak size - lebar, tinggi dan kedalaman box.wrl material Material { geometry Box { size 2.0 2.0 2.0 19 Nod geometri Cone bina sebuah kon (upright) height dan bottomradius - saiz silider bottom dan side - bahagian yang boleh ada/tiada cone.wrl material Material { geometry Cone { height 2.0 bottomradius 1.0 bottom TRUE side TRUE 20 Sintaks: Cylinder Sintaks: Sphere Nod geometri Cylinder membina sebua silinder (upright) height dan radius - saiz silinder bottom, top dan side - bahagian yang boleh ada/tiada material Material { geometry Cone { height 2.0 bottomradius 1.0 cyl.wrl bottom TRUE side TRUE 21 Nod geometri membina sebuah sfera radius - jejari bagi sfera sphere.wrl material Material { geometry Sphere { radius 12.0 22 Sintaks: Text Sintaks: FontStyle Nod geometri Text membina teks string - teks yang hendak dibina fontstyle - kawalan jenis font material Material { geometry Text { string [ Text, Shape ] fontstyle FontStyle { style BOLD text.wrl Dr. Shahrul Azman Mohd Noah 23 Nod FontStyle deskripsikan jenis font family - SERIF, SANS atau TYPEWRITER style - BOLD, ITALIC, BOLDITALIC, atau PLAIN material Material { geometry Text { string. fontstyle FontStyle { family SERIF style BOLD textfont.wrl Dr. Shahrul Azman Mohd Noah 24
Lain-lain FontStyle textjust.wrl - justify - FIRST, BEGIN, MIDDLE atau END material Material { geometry Text { string. fontstyle FontStyle { justify BEGIN 25 Lain-lain FontStyle textvert.wrl - horizontal - mendatar atau menegak - lefttoright dan toptobottom - arah material Material { geometry Text { string. fontstyle FontStyle { horizontal FALSE lefttoright TRUE toptobottom TRUE 26 Lain-lain FontStyle - size - saiz character - spacing - jarak baris/lajur Contoh: bentuk asas textsize.wrl material Material { geometry Text { string. fontstyle FontStyle { size 1.0 spacing 1.0 #VRML V2.0 utf8. # A Cylinder material Material { geometry Cylinder { height 2.0 radius 1.5 cylinder.wrl 27 28 Membina pelbagai bentuk Contoh fail VRML dengan pelbagai bentuk Bentuk di bina pada pusat dunia Satu fail VRML boleh megandungi pelbagai bentuk Bentuk akan bertindih jika di bina pada lokasi yang sama #VRML V2.0 utf8 material Material { geometry Box { size 1.0 1.0 1.0 material Material { geometry Sphere { radius 0.7... 29 30
Contoh fail dengan pelbagai bentuk Transformasi Bentuk space.wrl 31 32 Transformasi bentuk Contoh transformasi secara default, semua bentuk dibina pada pusat dunia/persekitaran transformasi memebolekan bentuk di: translasi/anjakan (translation) putar (rotation) skala (scale) towers.wrl 33 34 Sistem ko-ordinat Gambaran fail VRML bina komponen untuk dunia/ persekitaran komponen di bina dalam fail sistem ko- ordinat persekitaran/dunia secara default, semua bentuk di bina pada asalan satu sistem ko- ordinat bentuk mudah pada paksi XYZ bentuk kompleks pada paksi XYZ 35 36
Transformasi satu transformasi bina satu sistem ko- ordinat yang: ditranslasi diputar diskala berdasarkan kepada sistem ko- ordinat asal bentuk yang terbina dalam sistem ko- ordinat baru ditranslasi, diputar dan diskala bersama- sama Sintaks: Transformasi nod kumpulan Transform bina kumpulan bersama dengan sistem ko- ordinatnya translation - translasi/anjakan rotation - putaran/orientasi scale - saiz children - bentuk yang dibina 37 38 Sintaks: transformasi Memasukkan children translation... rotation... scale... children [... ] 39 medan children merangkumi senarai satu atau lebih nod... children [............ ] 40 Translasi translasi posisikan satu sistem ko- ordinat dalam X, Y dan Z # X Y Z translation 2.0 0.0 0.0 children [... ] 41 Translasi P2 (-1,2,1) y y P1 (1,2) P2 P1 (1,1,0) (4,4) x x translation (3, 2) tx = x2 - x1 ty = y2 - y1 translation (-2, 1, 1) tx = x2 - x1 ty = y2 - y1 tz = z2 - z1 in VRML: translate -2 1 1 42
Contoh translasi Putaran (rotation) putaran orientasikan sistem ko- ordinat pada paksi putaran oleh satu sudut putaran sudut putaran dalam bentuk radian dunia/persekitaran baru di translasikan 2 unit pada X bentuk dibina pada baru radian = darjah /180 * π, di mana π = 3.1415927 # X Y Z Sudut rotation 0.0 0.0 1.0 0.52 children [... ] 43 44 Penentuan paksi putaran Putaran y paksi putaran tentukan kutub untuk berputar putaran lazimnya pada paksi X, Y atau Z putaran dihasilkan berdasarkan kepada paksi Rx -- putaran di sekitar paksi x (1 0 0) Ry -- putaran di sekitar paksi y (0 1 0) Rz -- putaran di sekitar paksi z (0 0 1) R - - putaran pada mana- mana paksi? 45 z sudut Ry Rz R Rx radian 0 0.0 10 0.175 45 0.785 90 1.571 180 3.142 270 4.712 360 6.283 x dalam VRML putaran 1 0 0 1.57 paksi x radian 46 Contoh putaran Putaran radian = darjah * 3.142 / 180 darjah = radian * 180 / 3.142 dunia/persekitaran baru diputarkan 30 0 pada paksi Z bentuk di bina pada baru + putaran -- mengikut arah lawan putaran jam -- petua tangan kanan - putaran -- mengikut arah putaran jam -- petua tangan kiri 47 48
Putaran Penskalaan (scaling) Putaran sentiasa merujuk kepada asalannya Jika satu objek tidak terletak pada kedudukan asalan: trasnslasikan ke kedudukan asalan putarkan ia translasikan semula ke kedudukan asalnya penskalaan besar atau kecilkan satu sistem koordinat dengan faktor penskalaan x, y dan z # X Y Z scale 0.5 0.5 0.5 children [... ] 49 50 Penskalaan Penskalaan Sistem koordinat dunia/ persekitaran Sistem koordinat baru diskalakan menjadi separuh penskalaan sentiasa merujuk kepada asalan jika satu objek tidak terletak pada asalan translasikan ke asalan skalakan ia translasikan semula ke kedudukan asalnya Bentuk yang dibina dalam sistem koordinat baru 51 52 Transformasi (putaran, penskalaan dan translasi) skala, putar dan translasi sistem ko- ordinat satu demi satu translation 2.0 0.0 0.0 rotation 0.0 0.0 1.0 0.52 scale 0.5 0.5 0.5 children [... ] Transformasi (putaran, penskalaan dan translasi) jujukan transformasi jujukan transformasi adalah penting transformasi terkini dilaksanakan (children) dahulu kemudian transformasi bapa jujukan transformasi dalam satu Transform adalah tetap skala ---> putar ---> translasi 53 54
Transformasi (putaran, penskalaan dan translasi) Bagaimanakah objek ini ditransformasikan? 55 Contoh kumpulan transformasi Transform translation -2.0 3.0 0.0 children [ material Material { geometry Cylinder { radius 0.3 height 6.0 top FALSE ] Okt/Nov 2000 56 Contoh transformasi arch.wrl arches.wrl 57