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??
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.
|
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.
Skala skala lapangan berisi dua faktor, satu untuk sumbu S dan satu untuk sumbu Ttekstur. Anda dapat mengambil nilai riil di kedua sumbu.
Rotasi lapangan menentukan rotasi dalam radian dari sumbu tekstursehubungan dengan titik ditandai dengan lapangan tengah, setelah menerapkanskala lapangan.
Akhirnya, bidang terjemahan menyebabkan pergeseran sistem koordinat tekstur.
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).