haii...kawand blog ku sekalian.. sekarang saya akan membahas tutorial VRML(Virtual Reality Modeling Language)...sebelum membahas secara detail VRML..apa sich Vrml itu...?? dan apa keguanaannya??
Realitas Virtual Modeling Language adalah sebuah program berbasis teks yang digunakan untuk membuat dan menampilkan gambar tiga dimensi di Internet tanpa harus membeli program perangkat lunak yang mahal seperti Macromedia Flash.
Fungsi Virtual Reality Modeling Language
Anda dapat menggunakan VRML untuk membuat objek 3D untuk ditampilkan di situs internet melalui browser Web standar dengan memasukkan kode tertentu yang menunjukkan sifat-sifat suatu objek ke dalam sebuah file teks biasa yang dibuat dengan program seperti Microsoft Notepad. Kode yang Anda masukkan ke dalam file teks akan menentukan koordinat untuk masing-masing objek simpul sehingga Web browser tahu cara menggambar gambar.
Topik 1: Pengenalan VRML 2,0
VRML browser:
Anda dapat melihat file VRML menggunakan dua jenis aplikasi:
Melalui browser VRML khusus.
Dengan plug-in diinstal di browser HTML.
Pilihan kedua adalah yang paling umum. Dengan cara ini, NetscapeCommunicator 1.4 termasuk plug-in VRML Cosmo Player dari Silicon Graphics.Untuk mengetahui apa yang plug-in yang diinstal pada menu Netscape sudah cukupuntuk menyebarkan Bantuan / Tentang Plug-in.
Jika Anda tidak memiliki Cosmo Player, dapat diperoleh sebagai sharewaremelalui Internet. Setelah program ini dijalankan, secara otomatis dipasang diNetscape atau Explorer.
VRML dokumen:
Seperti disebutkan sebelumnya, VRML adalah bahasa untuk mendeskripsikanadegan-adegan di mana setiap adegan terdiri dari sejumlah obyek. Objek dapatditemukan dan berorientasi bentuk padat dengan cara tertentu atau unsur-unsurtidak berwujud yang mempengaruhi adegan sebagai lampu, suara dan sudut pandang yang berbeda. Untuk membuat dunia virtual reality ini menggunakan fileteks, yang panjangnya akan diberikan Wrl,. yang dapat dikembangkanmenggunakan editor atau pengolah kata. Hal ini juga memungkinkan untukmenggunakan perangkat lunak desain grafis, yang secara otomatis menghasilkanformat file VRML.
VRML Setiap dokumen terdiri dari unsur-unsur berikut:
Header
Komentar
Node
Headline:
File VRML header semuanya selalu sama:
# VRML V2.0 utf8
yang menunjukkan standar VRML V2.0 utf8 karyawan kewenangan penggunaan karakter internasional.
Yang penting, tidak boleh ada spasi antara "#" dan kata "VRML".
Komentar:
Dalam VRML komentar ditulis dalam satu baris, yang dimulai dengan simbol #.Anda dapat memiliki sebagai baris komentar yang diinginkan.
Nodes:
Sebuah node adalah struktur minimum terpisahkan dari file VRML dan misinya untuk menentukan karakteristik dari suatu obyek atau hubungan antara objek yang berbeda. Sebagian besar node dapat diulangi sebanyak yang diperlukan dalam adegan, tapi sejumlah node khusus seperti kabut mendefinisikan atau panci dunia maya muncul saat.
Selain itu, tidak semua node mempengaruhi aspek visual dunia. Misalnya, ada node yang bertindak sebagai sensor yang mendeteksi tindakan pengguna dan melaporkan mereka ke objek lain dan lain-lain yang bertanggung jawab untuk membentuk suara.
Node pada gilirannya berisi bagian-bagian yang menjelaskan sifat. Setiap field memiliki tipe tertentu dan tidak dapat diinisialisasi dengan nilai-nilai dari tipe lain.Dengan demikian, setiap node memiliki satu set default untuk semua bidang, sehingga ketika kita menggunakannya dalam adegan harus menentukan hanya bidang-bidang yang akan Anda ubah.
Mungkin ladang - ladang sederhana atau vektor yang menunjukkan ke node lain.
Topik 2: Konstruksi bentuk primitif
Bentuk (Shapes) adalah elemen yang memungkinkan kita untuk menampilkan objek dalam dunia VRML. sintaks node Shape adalah:
Bentuk {
penampilan ...
geometri ...
}
Bidang penampilan menentukan properti untuk tekstur, bahan, dll dari tujuan yang dijelaskan dalam geometri lapangan.
Ketika kita berbicara tentang bentuk-bentuk primitif node Shape digunakan untuk membangun sebuah figur geometris primitif. node geometris primitif adalah:
Kotak (Box)
Kerucut (Cone)
Silinder (Cylinder)
Sphere (Sphere)
Dengan menggabungkan bentuk-bentuk geometris dasar dapat memperoleh bentuk lain dari kompleksitas yang lebih besar.
Primitif node Box:
Sintaks:
Kotak {
ukuran lebar tinggi kedalaman
}
Contoh:
Kotak {
ukuran 2.0 0.5 3.0
}
Dimensi ditangani dalam dimensi VRML abstrak tetapi biasanya mengasumsikan bahwa satuan ukuran adalah meter. Jadi, dalam contoh di atas akan menentukan kotak lebar 2 meter, 0,5 meter dan tinggi 3 meter.
Cone primitif node:
Sintaks:
Cone {
ketinggian tinggi
radio_de_la_base bottomRadius
nilai_logis bawah
nilai_logis sisi
}
Dengan dasar dan sisi bidang menunjukkan apakah Anda ingin menggambar dasar dan permukaan lateral masing-masing. Secara default bidang ini disetel ke TRUE, yang menunjukkan bahwa kerucut ditarik sepenuhnya.
Contoh:
Cone {
ketinggian 3,0
bottomRadius .75
}
Cylinder primitif node:
Sintaks:
Cylinder {
ketinggian tinggi
radio radius
nilai_logis bawah
nilai_logis sisi
nilai_logis atas
}
Oleh medan bawah, sisi atas dan menunjukkan apakah Anda ingin menggambar dasar rendah, permukaan lateral dan atas dasar silinder. Secara default bidang ini disetel ke TRUE, yang menunjukkan bahwa silinder ditarik sepenuhnya.
Contoh:
Cylinder {
ketinggian 2,0
radius 1.5
}
Sphere primitif node:
Sintaks:
Sphere {
radio radius
}
Contoh:
Sphere {
radius 1.0
}
Namun, definisi node primitif menyiratkan definisi objek, tetapi tidak ada tampilan. Itulah sebabnya apa yang kita miliki ke dalam sebuah node Shape, yang menentukan tampilan benda-benda.
Contoh:
# VRML V2.0 utf8
Bentuk {
penampilan Penampilan {
Bahan materi {}
}
geometri Cylinder {
ketinggian 2,0
radius 1.5
}
}
Dalam file yang bisa memberikan nama "cilindro.wrl."
Topik 3: Membangun teks bentuk
Dalam dunia maya sering diperlukan untuk menggunakan teks untuk memandu pengunjung untuk node ini ada sebuah node tertentu, Teks. Salah satu fitur utama dari teks adalah bahwa mereka datar, yaitu tidak memiliki kedalaman.
Node Teks:
Seperti dalam setiap pengolah kata, kami akan menunjukkan jenis font, gaya, ukuran, jarak antar karakter, pembenaran paragraf, dll
Sintaks:
Teks {
string ["linea_texto 1"
"Linea_texto 2"
.
.
.
"Linea_texto N"]
fontStyle FontStyle {
keluarga "font_name"
gaya "Estilo_Fuente"
font_size ukuran
espaciado_entre_caracteres jarak
membenarkan "justificación_del_texto"
}
}
Seperti yang anda lihat simpul Teks memiliki dua bidang:
String:
Di sini Anda masukkan teks yang ingin Anda lihat.
FontStyle:
Kedua bidang ini bersifat opsional, jadi jika dihilangkan, teks memiliki gaya font default.
Bila Anda melihat ini mengambil sebagai nilai bidang disebut node FontStyle.
FontStyle node:
Sintaks:
FontStyle {
keluarga "font_name"
gaya "Estilo_Fuente"
font_size ukuran
espaciado_entre_caracteres jarak
membenarkan "justificación_del_texto"
}
Nilai yang mungkin dari ladang node FontStyle adalah sebagai berikut:
Keluarga:
Menentukan font yang akan digunakan untuk teks. Anda dapat memilih antara "serif", "SANS" atau "mesin ketik." Perhatikan bahwa nama dikapitalisasi.
Gaya:
Anda dapat memilih antara "Bold" (huruf tebal), "Italic" (miring), "BOTH" (cetak miring tebal) atau "NONE" (font normal).
Ukuran:
Menentukan ukuran font, tapi dalam satuan VRML.
Jarak:
Menentukan jarak antara baris, juga di unit VRML.
Membenarkan:
Menentukan pembenaran teks. Ini mungkin "BEGIN" (Rata Kiri), "TENGAH" (teks tengah) atau "AKHIR" (Rata Kanan).
Lainnya:
Itu berarti untuk bahasa eksotis lebih, seperti Cina (tulisan vertikal), Arab (penulisan dari kanan ke kiri), dll Untuk daftar lengkap, silahkan baca RFC 1766.
Semua bidang ini opsional.
Contoh:
Teks {
string ["Ini adalah baris pertama dari teks"
"Ini adalah baris kedua"
"Dll".]
fontStyle FontStyle {
keluarga "serif"
gaya "BOLD"
ukuran 1,0
1,0 spasi
membenarkan "BEGIN"
}
}
Sama seperti dengan node primitif geometris dengan hal Teks node hanya yang mendapat untuk menentukan struktur teks, tetapi tidak dapat ditampilkan, karena kami belum diindikasikan sebagai hadir di dunia maya. Untuk mencapai hal ini, diintegrasikan ke dalam node Shape dengan cara yang sama seperti yang telah dilakukan dengan node primitif:
Bentuk {
penampilan ...
Teks geometri {... }
}
Setelah teks di dunia maya bisa dimanipulasi seperti objek lain (berbalik, dll), Karena satu-satunya hal yang membedakan dari node primitif adalah bahwa ia memiliki dua dimensi bukan tiga.
Contoh:
# VRML V2.0 utf8
Bentuk {
penampilan Penampilan {
Bahan materi {}
}
Teks geometri {
string ["Ini adalah baris pertama dari teks"
"Ini adalah baris kedua"
"Dll".]
fontStyle FontStyle {
keluarga "serif"
gaya "BOLD"
ukuran 1,0
1,0 spasi
membenarkan "BEGIN"
}
}
}
Dalam file yang bisa memberikan nama "texto.wrl."
Topik 4: Pengelompokan node
Sejauh ini kita telah melihat benda-benda di isolasi. Mari kita lihat bagaimana kita dapat mengelompokkan mereka untuk membuat bentuk yang lebih kompleks.Ada beberapa node yang memungkinkan kita untuk objek grup:
Node kelompok
Node Transform
Node Switch
Billboard node
Node Group:
Grup node memungkinkan satu set node bersama sehingga mereka bertindak sebagai satu kesatuan, tetapi tanpa membuat perubahan di dalamnya. Ciri utama dari jenis kelompok adalah bahwa objek menciptakan semua pada titik yang sama (pada realitas tengah panggung virtual).
Sintaks:
Grup {
anak [... ]
}
Kolom anak-anak berisi daftar objek yang Anda inginkan ke grup, diwakili oleh masing-masing node Shape:
Contoh:
Grup {
anak [
Bentuk {... }
Bentuk {... }
...
]
}
Contoh:
# VRML V2.0 utf8
# Contoh pengelompokan kotak dan kerucut
Grup {
anak [
# Di sini mulai kotak:
Bentuk {
penampilan Penampilan {
Bahan materi {}
}
Kotak geometri {
ukuran 2.0 0.5 3.0
}
}
# Di sini dimulai kerucut:
Bentuk {
penampilan Penampilan {
Bahan materi {}
}
geometri Cone {
ketinggian 3,0
0,75 bottomRadius
}
}
]
}
File yang berhubungan dengan contoh ini adalah "group.wrl"
Transform node:
Secara default semua objek (Shapes) yang dibangun ke tengah panggung virtual.node Transform akan memungkinkan kita untuk menghindari hal ini, termasuk orientasi, lokasi dan ukuran objek yang berbeda yang akan dibuat.
Sintaks:
Transform {
Eje_X terjemahan Eje_Y Eje_Z
Eje_Z Eje_Y Eje_X sudut rotasi
Eje_Y Eje_X skala Eje_Z
Anak-anak [...]
}
Setiap kelompok dibuat oleh node Transform akan memiliki sistem koordinat sendiri, yang atributnya ditentukan oleh lapangan translasi, rotasi dan skala, yang adalah opsional.
Bidang terjemahan memungkinkan Anda untuk menunjukkan posisi tentang asal-usul sistem koordinat milik kelompok dalam sistem koordinat yang meliputi node (simpul orangtua). Melalui contoh berikut, ide ini akan menjadi lebih jelas:
Contoh:
Transform {
# Axis: X Y Z
terjemahan 2.0 0.0 0.0
Anak-anak [...]
}
Dengan contoh ini memastikan bahwa kelompok telah memiliki sistem koordinat identik dengan sistem koordinat utama, dengan ketentuan satu-satunya yang asal-usulnya akan bergeser dua unit pada sumbu X dari tuan rumah. Hal ini juga mungkin untuk melihat dari contoh ini yang hanya harus mempertimbangkan bidang minat, mengabaikan sisanya.
Rotasi lapangan memungkinkan kita untuk memutar sistem koordinat kelompok sekitar satu sumbu sistem koordinat dari node induk. Oleh karena itu, kita harus menunjukkan di mana sumbu Anda ingin membuat mengubah, harus mengacu pada kecuraman rotasi (dalam radian).
Contoh:
Transform {
# Axis: Angle X Y Z
rotasi 0,0 0,0 1,0 0,52
Anak-anak [...]
}
Contoh ini dimaksudkan untuk memutar sistem koordinat kelompok pada sumbu Z 0,52 radian. Perhatikan bahwa hanya satu poros dapat mengambil sebuah nilai (yang akan diikat menjadi kesatuan) sedangkan sisanya harus tetap di nol. Jadi hanya ada tiga kemungkinan kombinasi untuk mengisi lapangan sumbu rotasi:
Rotasi sumbu X 1,0 0,0 0,0
Rotasi sumbu Y 0.0 1.0 0.0
Rotasi sumbu Z 0.0 0.0 1.0
Melalui skala lapangan dapat meningkatkan atau mengurangi ukuran sumbukoordinat sistem kelompok dengan menggunakan faktor skala yang mengacu padasistem koordinat node induk. Dengan cara ini kita menambah atau mengurangiukuran objek yang dibuat.
Contoh:
Transform {
# Axis: X Y Z
0.5 0.5 0.5 skala
Anak-anak [...]
}
Contoh di atas berarti bahwa sumbu koordinat sistem kelompok adalah 50%(0,5) lebih kecil dari sumbu pokok dan oleh karena itu objek yang dirancang dalambaris-baris akan mengurangi ukurannya setengah. Jika ia ingin mereka menjadidua kali lebih besar, misalnya akan menjadi sebagai berikut:
Contoh:
Transform {
# Axis: X Y Z
skala 2 2 2
Anak-anak [...]
}
Contoh:
Transform {
# Axis: Angle X Y Z
terjemahan 2.0 0.0 0.0
rotasi 0,0 0,0 1,0 0,52
0.5 0.5 0.5 skala
Anak-anak [...]
}
Grafik, jika dilakukan tiga operasi pada silinder akan mendapatkan sebagai berikut:
Sebuah contoh lengkap ada dalam file "arcos.wrl."
Switch node:
Ciri utama dari node Switch menampilkan hanya salah satu dari anak node,yang harus dipilih previamente.Se digunakan untuk menghubungkan ataupun memutuskan efek dari suatu properti tertentu atau untuk beralih di antara sifat yang berbeda.
Lapangan menentukan pilihan anak whichChild harus diaktifkan, dengan 0sebagai anak pertama. Nilai default adalah -1, menunjukkan bahwa tidak ada anak-anak dipilih.
WhichChild bidang adalah masukan dan karenanya dapat dimodifikasi olehnode lain.
Sintaks:
Switch {
whichChoice 0
pilihan [...]
...
pilihan [...]
}
Billboard node:
Billboard node untuk membuat grup dengan sistem koordinat khusus, karenamelalui bidang axisOfRotation (sumbu rotasi) menunjukkan sumbu tentang yanguntuk memutar objek tersebut agar selalu menghadap penampil:
Menempatkan nama-nama ke node:
Ada solusi dimaksudkan untuk menyederhanakan pengulangan obyek dalam skenario virtual. Solusinya adalah dengan menetapkan nama sembarang ke node yang dimaksudkan untuk mengulang dalam kode.
Anggaplah, misalnya, dapat digunakan berulang kali dalam skenario persis seperti silinder (yang dapat menjadi kolom rumah) silinder ini memiliki kode berikut.:
Bentuk {
penampilan Penampilan {
Bahan materi {}
}
geometri Cylinder {
ketinggian 2,0
radius 0,5
}
}
(Ini adalah kode dari sebuah silinder dengan tampilan default dari 2 unit tinggi dan basis radio 0,5)
Anda dapat menetapkan, untuk lingkup dokumen VRML, bahwa jenis silinder memiliki nama sembarang, misalnya ColumnaRepetida (atau seperti yang diinginkan, asalkan diawali dengan huruf kapital) sebagai berikut:
Bentuk {DEF ColumnaRepetida
penampilan Penampilan {
Bahan materi {}
}
geometri Cylinder {
ketinggian 2,0
radius 0,5
}
}
Kemudian setiap kali Anda ingin menggunakan node ini di bagian lain dokumen, cukup cantumkan berikut:
USE ColumnaRepetida
Pada contoh di atas kotak dan kerucut, Anda melihat node Penampilan diulang.Mari kita mendefinisikan, dalam waktu pertama kali menggunakan nama, "PorDefecto" dan kedua kalinya memanggil Anda dengan menggunakan perintah USE:
# VRML V2.0 utf8
# Contoh pengelompokan kotak dan kerucut
# Menggunakan perintah DEF dan USE.
Grup {
anak [
Bentuk {
DEF PorDefecto penampilan Penampilan {
Bahan materi {}
}
Kotak geometri {
ukuran 2.0 0.5 3.0
}
}
Bentuk {
penampilan USE PorDefecto
geometri Cone {
ketinggian 3,0
0,75 bottomRadius
}
}
]
}
Dalam hal ini, penyederhanaan ini tidak terlalu besar (hanya kurang beberapa baris kode), tetapi telah melayani untuk menggambarkan konsep tersebut.
Topik 5: Warna objek
Sebelumnya kami menyebutkan bahwa node Shape berisi dua bidang, penampilan dan geometri, yang terakhir menunjukkan jenis obyek yang akan diwakili dan yang sudah banyak digunakan. Namun, penampilan misi Lapangan yang hampir telah disebutkan, maka lanjutkan untuk menganalisis secara lebih rinci pada saat ini.
Bidang penampilan akan memungkinkan Anda untuk memilih warna dan tekstur objek yang akan diwakili dalam lingkungan virtual. Bidang ini mengambil sebagai nilai node Penampilan tipe, yang pada gilirannya memiliki bidang bahan nilai bernama yang berfungsi sebagai node bahan tipe.
Bahan node yang mengendalikan sifat warna (warna seleksi, kecerahan, tingkat transparansi, dll.) Untuk diberikan pada objek.
Warna memberikan objek RGB warna, yaitu, diberikan oleh tiga nilai floating point, masing-masing yang merupakan salah satu warna primer (Merah, Hijau, Biru) [Merah, Hijau dan Biru] . Nilai 0.0 tidak merupakan warna dan intensitas maksimum 1.0.
Banyak program menggambar memberikan nilai untuk setiap warna RGB dalam format 256x256x256. Untuk menggunakan warna-warna di VRML harus dikonversi dengan membagi nilai masing-masing dengan 256 dan menempatkan hasil dalam bidang yang sesuai mereka di node Material.
Bahan node:
Dengan node ini kita akan menentukan derajat warna dan objek-transparan.
Sintaks:
Bentuk {
penampilan Penampilan {
Bahan materi {
diffuseColor color_RGB
color_RGB emissiveColor
color_RGB specularColor
ambientIntensity nilai
Transparansi nilai
shininess nilai
}
}
geometri ...
}
Masing-masing dari keenam bidang dalam node Material memiliki efek sendiri yang spesifik pada suatu objeto.Todos adalah opsional.
DiffuseColor:
Bidang diffuseColor mewakili apa yang kebanyakan orang menyebut warna benda.
EmissiveColor:
EmissiveColor field digunakan untuk mengatur kecerahan warna objek ketika objek harus terlihat dalam gelap. Ini akan mendapatkan efek di mana gambar tampak diwakili diterangi dari dalam dengan cahaya dari satu warna.
Pengaturan default bidang ini adalah hitam, karena objek paling tidak biasanya bersinar.
SpecularColor:
SpecularColor lapangan merupakan parameter canggih yang dapat menunjukkan apa warna objek memantulkan cahaya. Misalnya, tempat tidur merah tidak mencerminkan warna merah, tapi pot jika Anda dapat mencerminkan warna kemerahan.
ambient Intensity:
Bidang ini parameter lain maju yang menunjukkan jumlah cahaya ambient (dihasilkan oleh sumber cahaya yang berbeda tahap virtual) tercermin oleh objek.
Membawa nilai floating point antara 0.0 dan 1.0.
Shininess:
shininess lapangan mengontrol kecerahan objek. Membawa nilai floating point antara 0.0 dan 1.0.
Transparansi:
Transparansi lapangan menunjukkan tingkat transparansi objek. Membawa nilai floating point antara 0.0, 1.0 dan 1.0 menjadi tingkat maksimum transparansi (obyek tak terlihat) dan minimal 0.0 (penuh obyek buram.)
Standarnya adalah 0.0.
File "colores1.wrl" dan "colores2.wrl" berisi contoh-contoh lengkap tentang bagaimana mengubah tampilan objek.
Topik 6: Objek yang disimpan dalam file
Untuk memfasilitasi rancangan dunia virtual akan saat-saat ketika Anda setujuuntuk menyimpan setiap objek dalam file sendiri. Jadi, jika misalnya anda inginmodel sebuah ruangan, elemen yang berbeda akan muncul di dalamnya: dinding,pintu, meja, kursi, dll adalah obyek independen satu sama lain, tetapi yang tercakupdalam ruang yang sama dan yang juga dapat muncul beberapa kali dalam desainseluruh dunia maya. Itulah sebabnya akan menarik untuk membuat file untukmenyimpan meja objek ("mesa.wrl"), file lain untuk kursi objek ("silla.wrl"), dll
Dalam file "comedor.wrl" panggilan dibuat untuk kedua file yang berisi kursisebagai satu berisi meja.
Inline node:
Node Inline akan memungkinkan menciptakan sebuah kelompok dimana anak-anak, VRML file yang tersimpan dalam berbeda, kembali menunjukkan URL-nya.
Sintaks:
Inline {
url "dirección_url"
}
Contoh:
...
Inline {
url "mesa.wrl"
}
Transform {
terjemahan ...
anak [
Inline {url "silla.wrl"}
]
}
Topik 7: Menambahkan link di dunia maya
Node Anchor:
Anchor menciptakan node panel dan yang memilih setiap obyek dalam grupmelompat ke tempat lain atau tahap virtual ke dunia maya disimpan dalam fileVRML (yang Anda akses melalui URL-nya). Setiap objek atau kelompok objekdapat diubah menjadi link.
Obligasi tersebut setara dalam dunia tiga dimensi dari link pada halaman Webyang dibuat dengan HTML.
Selain itu, setiap node memiliki field bernama deskripsi Anchor di mana suaturantai sebentar teks menjelaskan objek.
Sintaks:
Anchor {
url "dirección_URL"
deskripsi "descripción_del_enlace"
Anak-anak [...]
}
Contoh:
Anchor {
url "escalera.wrl"
deskripsi "Mengambang Tangga"
Anak-anak [...]
}
Dalam file "enlace.wrl" menunjukkan cara membuat link, yang akan memilikitangga. Link ini akan membawa Anda ke silinder dibuat dalam 2 item.
Item 8: Pembangunan kompleks
Telah dilihat di topik sebelumnya dan oleh tumpang tindih dan bergabung dengan berbagai dasar geometris node dapat dibangun objek lebih kompleks.Namun, jika satu-satunya cara itu akan menghasilkan bentuk kompleks, pembangunan dunia maya akan sangat sulit. Itulah sebabnya ditampilkan sejumlah node baru, yang juga memudahkan desain (dengan memiliki kontrol yang lebih besar dan lebih fleksibel), menghasilkan dunia VRML lebih efisien.
Praktek terbaik saat merancang suatu objek untuk menggambarkan geometri dalam dua tahap masing-masing:
Menentukan koordinat
Membuat geometri
Spesifikasi koordinat:
Langkah ini harus ditandai dengan posisi node koordinat dari titik-titik yang akan digunakan untuk membangun objek. Titik-titik ini tidak terlihat dalam adegan virtual.
Node Koordinat:
Sintaks:
Koordinat {
titik [
Eje_Y Eje_x Eje_Z,
Eje_Y Eje_x Eje_Z,
...
Eje_Y Eje_x Eje_Z
]
}
Titik lapangan mungkin memiliki beberapa titik, yang koordinat dipisahkan dengan koma.
Contoh:
Koordinat {
titik [
11.0 12.0 17.1
13.8 20.5 5.3
6.1 14.0 22.9
]
}
Penciptaan geometri:
Setelah mendefinisikan titik-titik yang membentuk kerangka objek, Anda harus terhubung. Ada tiga cara untuk menghubungkan titik-titik, masing-masing yang terkait dengan node yang berbeda:
Node PointSet
Node IndexedLineSet
Node IndexedFaceSet
Ketiga node memiliki field bernama coord nilai untuk menerima sebagai node koordinat.
PointSet node:
Merupakan satu set poin pada koordinat ditunjukkan dalam sistem koordinat dari node induk.
Sintaks:
{PointSet
Koordinat {coord
titik [. . . ]
}
{Warna warna
warna [. . . ]
}
}
Nilai coord lapangan diambil sebagai tipe node koordinasi, yang mendefinisikan item yang ingin Anda wakili.
Bidang warna yang digunakan untuk mendefinisikan warna dari masing-masing poin. Bidang ini mengambil sebagai nilai node warna, yang pada gilirannya berisi bidang jenis warna lagi. Kolom terakhir menjelaskan daftar warna RGB, sehingga warna pertama sesuai dengan titik pertama dijelaskan oleh node coord bidang koordinasi, warna kedua sesuai dengan titik kedua dan seterusnya.
Contoh:
{PointSet
Koordinat {coord
titik [
11.0 12.0 17.1 # 1 º poin
13.8 20.5 5.3 # 2 º titik
14.0 6.1 22.9 # 3 º titik
]
}
{Warna warna
warna [
1.0 0.0 0.0, # 1, red dot
0.0 1.0 1.0, # 2 hijau kedua dot
1.0 1.0 0.0 # 3 kuning kedua dot
]
}
}
Jika kode ini termasuk, seperti, dalam dokumen VRML, kami tidak bisa melihat salah satu poin, karena seperti dibahas di atas, untuk membuat objek terlihat harus menggunakan node Shape.
Catatan lapangan yang telah dihapus: penampilan node Shape karena tidak diperlukan, karena titik tidak akan terlihat seperti secara default, tapi yang ditentukan oleh bidang warna.
Contoh:
# VRML V2.0 utf8
# Contoh kelompok tiga titik berwarna
Bentuk {
{PointSet geometri
Koordinat {coord
titik [
11.0 12.0 17.1 # 1 º poin
13.8 20.5 5.3 # 2 º titik
14.0 6.1 22.9 # 3 º titik
]
}
{Warna warna
warna [
1.0 0.0 0.0, # 1, red dot
0.0 1.0 1.0, # 2 hijau kedua dot
1.0 1.0 0.0 # 3 kuning kedua dot
]
}
}
}
IndexedLineSet node:
Mari kita menyatukan berbagai poin yang disebutkan di bidang Anda coord oleh garis poligonal.
Sintaks:
{IndexedLineSet
Koordinat {coord
titik [. . . ]
}
coordIndex [...]
nilai_logis colorPerVertex
{Warna warna
warna [. . . ]
}
colorIndex [...]
}
"Lineas.wlr"
Bidang coord mengambil sebagai nilai tipe node koordinasi, yang mendefinisikan item yang berfungsi sebagai kerangka gambar.
CoordIndex lapangan digunakan untuk menentukan antara yang menunjuk harus menggambar garis. Sebuah baris bisa ditarik menggunakan lebih dari dua titik, sehingga Anda menarik garis antara yang pertama dan titik kedua, lain antara titik kedua dan ketiga, dan seterusnya sucesivamente.Un nilai indeks -1 menunjukkan bahwa ia telah menyelesaikan baris saat ini dan berikutnya dimulai.
Untuk menunjukkan titik awal didefinisikan dalam titik koordinat 0 digunakan untuk 1 detik dan seterusnya.
ColorPerVertex lapangan menunjukkan bagaimana warna harus menerapkan on line:
colorIndex | colorPerVertex | Aksi |
FALSE
(Warna
berlaku
pada
baris) | VAKUM
NO LOAD | Diterapkan dalam urutan warna dijelaskan dalam node Warna untuk setiap baris yang dijelaskan dalam coordIndex. Harus ada setidaknya banyak warna node Warna seperti yang ada di garis coorIndex. Bidang ini berisi daftar memerintahkan nomor yang mewakili warna didefinisikan dalam Warna node. Jadi, 0 merupakan warna pertama yang didefinisikan dalam node Warna, 1 detik, dll
Setiap elemen cocok dengan daftar baris yang dijelaskan dalam coordIndex.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. Contoh:
colorIndex [4,0,3,2]
Dengan cara ini ditugaskan untuk baris pertama dari ketiga warna coordIndex node Warna untuk baris kedua warna pertama, dll
|
TRUE
(Warna
berlaku
pada
simpul) | VAKUM
NO LOAD | CoordIndex lapangan digunakan untuk memilih warna didefinisikan dalam Warna node.
Jika nilai yang lebih tinggi yang mendukung bidang coordIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. Warna berlaku untuk setiap vertex. Bidang ini sekarang akan memiliki struktur yang sama dengan coordIndex lapangan, sehingga harus mengandung setidaknya sebanyak indeks terakhir. Hal ini juga harus memiliki indikator akhir baris (-1) di bidang coordIndex tempat yang sama.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. |
IndexedFaceSet node:
Mari kita menyatukan berbagai poin yang disebutkan di bidang Anda coord dengan wajah poligonal.
Sintaks:
{IndexedFaceSet
Koordinat {coord
titik [. . . ]
}
coordIndex [...]
nilai_logis colorPerVertex
{Warna warna
warna [. . . ]
}
colorIndex [...]
}
Bidang coord mengambil sebagai nilai tipe node koordinasi, yang mendefinisikan item yang berfungsi sebagai kerangka gambar.
CoordIndex lapangan digunakan untuk menentukan antara yang menunjuk harus menggambar garis. Sebuah baris bisa ditarik menggunakan lebih dari dua titik, sehingga Anda menarik garis antara yang pertama dan titik kedua, lain antara titik kedua dan ketiga, dan seterusnya sucesivamente.Un nilai indeks -1 menunjukkan bahwa ia telah menyelesaikan baris saat ini dan berikutnya dimulai.
Untuk menunjukkan titik awal didefinisikan dalam titik koordinat 0 digunakan untuk 1 detik dan seterusnya.
ColorPerVertex lapangan menunjukkan bagaimana warna harus menerapkan on line:
colorIndex | colorPerVertex | Aksi |
FALSE
(Warna
berlaku
pada
baris) | Vacuum
NO LOAD | diterapkan dalam urutan warna dijelaskan dalam node Warna untuk setiap baris yang dijelaskan dalam coordIndex. Harus ada setidaknya banyak warna node Warna seperti yang ada di garis coorIndex.
Bidang ini berisi daftar memerintahkan nomor yang mewakili warna didefinisikan dalam Warna node. Jadi, 0 merupakan warna pertama yang didefinisikan dalam node Warna, 1 detik, dll
Setiap elemen cocok dengan daftar baris yang dijelaskan dalam coordIndex.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna.
didefinisikan warna.
Contoh:
colorIndex [4,0,3,2]
Dengan cara ini ditugaskan untuk baris pertama dari ketiga warna coordIndex node Warna untuk baris kedua warna pertama, dll
|
TRUE
(Warna
berlaku
pada
simpul) | VAKUM
NO LOAD | CoordIndex lapangan digunakan untuk memilih warna didefinisikan dalam Warna node.
Jika nilai yang lebih tinggi yang mendukung bidang coordIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. Warna berlaku untuk setiap vertex. Bidang ini sekarang akan memiliki struktur yang sama dengan coordIndex lapangan, sehingga harus mengandung setidaknya sebanyak indeks terakhir. Hal ini juga harus memiliki indikator akhir baris (-1) di bidang coordIndex tempat yang sama.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. |
IndexedFaceSet node:
Mari kita menyatukan berbagai poin yang disebutkan di bidang Anda coord dengan wajah poligonal.
Sintaks:
{IndexedFaceSet
Koordinat {coord
titik [. . . ]
}
coordIndex [...]
nilai_logis colorPerVertex
{Warna warna
warna [. . . ]
}
colorIndex [...]
}
Bidang coord mengambil sebagai nilai tipe node koordinasi, yang mendefinisikan item yang berfungsi sebagai kerangka gambar.
Gunakan bidang Anda coorIndex tarif untuk menentukan wajah poligonal. Nilai indeks -1 menunjukkan bahwa ia telah menyelesaikan wajah saat ini dan yang berikutnya dimulai.
ColorPerVertex lapangan menunjukkan bagaimana warna diterapkan:
colorIndex | colorPerVertex | Aksi |
FALSE
(Warna
berlaku
pada
wajah) | VAKUM
NO LOAD | Warna-warna yang diterapkan dalam urutan yang didefinisikan dalam node Warna.Harus ada setidaknya banyak warna wajah.
Warna diterapkan dalam rangka yang ditunjukkan oleh colorIndex lapangan. Harus ada setidaknya sebagai indeks banyak di bidang ini telah diidentifikasi sebagai wajah.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. |
TRUE
(Warna
berlaku
pada
simpul) | VAKUM
NO LOAD | CoordIndex lapangan digunakan untuk memilih warna didefinisikan dalam Warna node.
Jika nilai yang lebih tinggi yang mendukung bidang coordIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna.
Warna berlaku untuk setiap vertex. Bidang ini sekarang akan memiliki struktur yang sama dengan coordIndex lapangan, sehingga harus mengandung setidaknya sebanyak indeks terakhir. Hal ini juga harus memiliki indikator akhir baris (-1) di bidang coordIndex tempat yang sama.
Jika nilai yang lebih tinggi yang mendukung bidang colorIndex adalah N, maka harus ada pada node N +1 warna didefinisikan warna. |
Berikut adalah contoh bagaimana warna gambar menggunakan wajah mereka:
Sekarang contoh adalah bagaimana warna gambar menggunakan titik-titik sudutnya:
Topik 9: Menggunakan grid elevasi
ElevationGrid node:
Node ini menciptakan kotak persegi panjang dengan ketinggian yang bervariasi, sehingga sangat berguna untuk memodelkan lapangan dan untuk penciptaan permukaan lainnya di ruang angkasa.
Sintaks:
{ElevationGrid
xDimension número_de_columnas (Eje_X)
valor_real xSpacing
zDimension número_de_filas (Eje_Z)
valor_real zSpacing
tinggi [altura1, height2 ,..., tinggi (numcolum x numfilas)]
Warna warna [...]
colorPerVertext
}
bidang xDimension ZDimension dan menentukan jumlah titik grid di X dan Z, mendefinisikan permukaan yang berisi jumlah yang sama empat persegi panjang (xDimension-1) * (zDimension-1).
ZSpacing bidang xSpacing dan menentukan jarak antara titik-titik grid pada sumbu X dan sumbu Z masing-masing.
Bidang Tinggi adalah semacam nilai skalar mewakili ketinggian masing-masing titik di grid. Nilai yang disimpan sehingga baris 0 adalah baris, pertama 1 dll kedua.Dalam setiap baris, nilai-nilai tinggi disimpan sehingga kolom 0 adalah pertama, 1 detik, dll.
ColorPerVertex lapangan menunjukkan bagaimana warna diterapkan:
colorPerVertex | Aksi |
FALSE | Warna diterapkan pada grid dari grid. Didefinisikan pada node Warna setidaknya ((xDimension-1) * (zDimension-1)) warna. |
TRUE | warna diterapkan pada simpul dari rejilla.Se tersebut harus mendefinisikan Warna node setidaknya (xDimension zDimension *) warna. |
Topik 10: Penggunaan tekstur
tekstur ini adalah kesempatan kita harus membungkus objek dengan gambar tertentu yang disimpan dalam sebuah file, yang Anda akses melalui URL-nya. Jenis gambar yang mendukung VRML adalah:
JPEG
GIF
PNG
Sejauh ini, untuk menentukan objek yang terlihat digunakan node Shape sebagai berikut:
Bentuk {
penampilan Penampilan {
materi ...
}
geometri ...
}
Penampilan dimana node memiliki satu field, material, yang mendefinisikan warna dan transparansi, seperti terlihat dalam isu-isu sebelumnya.
Namun dalam kenyataannya mungkin juga memiliki dua bidang lainnya: tekstur (yang nilainya biasanya node tipe atau tipe ImageTexture MovieTexture) dan TextureTransform, dengan yang ditetapkan tekstur objek:
Bentuk {
penampilan Penampilan {
materi ...
ImageTexture tekstur {...}
TextureTransform {...}
}
geometri ...
}
ImageTexture node:
Sintaks:
{ImageTexture
url "direccion_URL"
nilai_logis mengulangi
nilai_logis repeatT
}
Kolom url berisi URL dari file grafis untuk digunakan sebagai tekstur. The VRML grafis format yang didukung adalah jpeg, dan png manggung.
Tekstur mendefinisikan satu set koordinat 2D (S dan sumbu T) digunakan untuk memetakan tekstur permukaan benda. Tekstur koordinat berkisar dari 0 hingga 1.
Koordinat horizontal disebut vertikal koordinat S dan T. Tepi bawah gambar sesuai dengan S sumbu dan sisi kiri dengan sumbu T. pojok kiri bawah gambar, menurut sistem koordinat, akan diberikan oleh titik (S = 0, T = 0) dan sudut kanan atas (S = 1, T = 1).
RepeatT mengulangi sawah dan menentukan bagaimana tekstur membungkus dalam arah S dan T. Jika mengulangi adalah TRUE, tekstur diulangi (setiap kali S = 1) dalam arah S untuk menutupi permukaan objek. Jika mengulangi adalah FALSE, tekstur yang disesuaikan dengan seluruh permukaan obyek sepanjang arah S, terlepas dari nilai koordinat S dan T. RepeatT lapangan akan melakukan hal yang sama pada sumbu T.
TextureTransform node:
Node ini mendefinisikan transformasi diterapkan untuk tekstur 2D koordinat. Hal ini mempengaruhi bagaimana tekstur diterapkan pada permukaan benda.transformasi ini terdiri dari (dalam urutan) dalam pengaturan skala non-seragam tentang titik pusat sewenang-wenang, sebuah rotasi titik yang sama dan terjemahan. Hal ini memungkinkan pengguna untuk mengubah ukuran, orientasi dan posisi tekstur objek.
Sintaks:
{TextureTransform
Pusat Eje_S Eje_T
sudut rotasi
Eje_S skala Eje_T
Eje_S terjemahan Eje_T
}
Bidang pusat menetapkan titik dalam sistem koordinat tekstur (S, T) yang bidang rotasi dan skala harus diterapkan.
Misalkan anda mulai bekerja dari gambar di bawah ini:
Skala skala lapangan berisi dua faktor, satu untuk sumbu S dan satu untuk sumbu Ttekstur. Anda dapat mengambil nilai riil di kedua sumbu.
Contoh grafik:
"headsca.wrl"
Rotasi lapangan menentukan rotasi dalam radian dari sumbu tekstursehubungan dengan titik ditandai dengan lapangan tengah, setelah menerapkanskala lapangan.
Contoh grafik:
"headrot.wrl"
Akhirnya, bidang terjemahan menyebabkan pergeseran sistem koordinat tekstur.
Contoh grafik:
"headtran.wrl"
Yang penting, perubahan ini muncul terbalik saat tekstur diterapkan pada permukaan obyek. Duplicásemos Jadi jika S dan sumbu T tekstur (memutar 2 2) bila diterapkan pada objek akan diamati yang ukurannya telah dibelah dua.Demikian pula, jika tekstur desplazasemos 0,5 unit dengan sumbu S (terjemahan 0.5 0) bila diterapkan pada objek bisa melihat bahwa itu telah bergeser -0,5 unit sehubungan dengan permukaan objek.
Berbeda gambar dalam satu objek:
Objek menarik yang dapat memiliki gambar yang berbeda pada satu atau lebih dari wajah mereka, kita harus desain untuk angka ini sehingga masing-masing sisi-sisinya adalah objek terpisah. Misalnya anda ingin meletakkan tekstur tertentu atas dasar silinder dan tekstur yang berbeda pada sisinya, langkah-langkah akan menjadi:
Ini mendefinisikan silinder dengan tekstur dasar, membalikkan permukaan atas dan bawah.
Kami mendefinisikan lain identik silinder dengan tekstur lain, meniadakan permukaan samping.
Melalui cluster node Grup kedua silinder, sehingga hasilnya ternyata silinder dengan gambar yang berbeda.
Dalam file "lata.wrl" diatur ke objek yang dibuat menggunakan langkah-langkah di atas.
MovieTexture:
Alih-alih menggunakan gambar statis sebagai objek tekstur dapat digunakan video (DVD), MPEG format, menggunakan node MovieTexture, bukan ImageTexture.
Sintaks:
{MovieTexture
url "dirección_URL"
valor_real kecepatan
nilai_logis loop
nilai_logis mengulangi
nilai_logis repeatT
}
Contoh:
Bentuk {
penampilan Penampilan {
MovieTexture tekstur {
url "ejemplo.mpg"
kecepatan 1
FALSE loop
}
}
geometri ...
}
Kolom url berisi URL dari file yang berisi video.
Bidang kecepatan kontrol kecepatan (1, kecepatan normal, 2 kecepatan double, dll.). Dengan nilai negatif video akan berjalan mundur.
Bidang loop mengatur apakah video berjalan terus menerus (TRUE) atau sekali (FALSE).
Mengulangi dan bidang repeat T telah diuraikan dalam simpul TextureTransform.
Pemodelan VRML
Berikut ini adalah objek rumah tipe A 86/130, objek berikut dibuat menggunakan pemodelan VRML.
Pada gambar 7 berikut dapat dilihat gambar
rumah tipe A 86/130 yang sebenarnya:
Analisis Kinerja Perangkat Lunak
Dari hasil pengujian yang dilakukan terhadap objek rumah yaitu tipe A 86/130 dengan nama file TipeA.wrl yang berkapasitas 291 KB dapat berjalan dengan VRML browser Cosmo Player 2.1.1 dalam waktu kurang dari 5 detik pada saat file .wrl diklik sampai objek rumah dapat terlihat secara keseluruhan. Berikut adalah gambar browser yang menampilkan objek VRML pada saat berjalan di Internet).