Senin, 21 Februari 2011

Virtual Reality Modeling Language

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.



Header dari file VRML

#VRML V2.0 utf8 
# ----------------------------------------------------------------
# Baris pertama di atas adalah wajib dalam setiap file VRML # 2
#   Di baris lainnya, dimana untuk mencari # berarti komentar.
# ----------------------------------------------------------------
#
Semua file harus memiliki ekstensi WRL VRML.
Mendefinisikan Objek
Objek tiga dimensi di VRML 2 disebut SHAPES
#VRML V2.0 utf8 

# --------------------------------------------------------
# Gambar paralel pipedium Kuning
# --------------------------------------------------------

Shape {  # define blok objek (Shape)

}  # end do shape
Untuk  SHAPE telah, pada umumnya dua atribut, penampilan dan geometri.
Penampilan set warna objek, antara atribut lain. 
Objek Geometri mendefinisikan apa yang harus ditampilkan.
Mendefinisikan Cubes
Untuk menentukan sebuah kubus (sebenarnya parallelepiped) menggunakan ungkapan BOX. O pola pusat sebuah BOX (0,0,0).
Gambar 1 muncul contoh dari program yang berisi BOX VRML.
# VRML V2.0 utf8 
# ------------------------------------------------- 
------- 
# Draw a yellow parallelepiped 
# ------------------------------------------------- 
------- 

Shape {# define a block of a OBJETIVE (Shape) 
appearance Appearance {# define the appearance of Shape 
material Material { 
diffuseColor 1.0 1.0 0.0 b g # r 
                
} 
} 
geometry Box {# define the geometry of the Shape 
size 2.5 2.5 5.0 # larg, height, prof 
} 
} # End shape 
Gambar 7.1 - Contoh BOX VRML 2
Mendefinisikan Bola
Untuk mendefinisikan sebuah bola, jari-jari harus ditentukan. Ekspresi adalah:Sphere radius r1 {}. Jika jari-jari dihilangkan browser akan menganggap nilai 1.Pusat default bola adalah (0,0,0).
Dalam Gambar 2 akan muncul contoh dari sebuah program yang berisi bola di VRML.
# VRML V2.0 utf8
# ------------------------------------------------- -------
# Draw a sphere
# ------------------------------------------------- -------
Shape {# define a block of a OBJETIVE (Shape)
appearance Appearance {# define the appearance of Shape
material Material {
diffuseColor 1.0 0.5 0.3 b g # r
                 }
}
geometry Sphere {
radius 4.0
         }
} # end shape
Gambar 2 - Contoh dari sebuah kawasan di VRML 2Definindo
Silinder
VRML 2 dalam silinder yang dibuat dengan menjalankan Silinder:
geometry Cylinder {
radius 2.0 # radius
1.0 # height height
TRUE # side is the side?
TRUE # top is the top?
TRUE # bottom is the bottom?
}
Gambar 3 - Contoh silinder di VRML 2
Mendefinisikan Kerucut
   Sebuah kerucut di VRML 2 didefinisikan oleh perintah Cone:
geometry Cone {
        bottomRadius 1.0   # raio da base
        height 5.0         # altura
        side TRUE          # tem a lateral ?
        bottom TRUE        # tem a base ?
}
Gambar 4 - Contoh kerucut di VRML 2
Mendefinisikan Poligon
Untuk membuat poligon (wajah objek) di VRML 2, ada geometri disebut IndexedFaceSet. 

Polygons digunakan secara umum untuk mengatur segi objek didefinisikan berdasarkan dua struktur: sisi meja dan meja simpul. 

Tabel simpul dimasukkan koordinat X, Y dan Z untuk setiap titik, setiap koordinat dipisahkan dengan spasi dan setiap titik dengan koma. Sebagai contoh: 
:
coord Coordinate {
      point [                          # lista de VĂ©rtices
             0  10  0,   # vĂ©rtice 0
            -5   0  5,   # vĂ©rtice 1
             5   0  5,   # vĂ©rtice 2
             5   0 -5,   # vĂ©rtice 3
            -5   0 -5,   # vĂ©rtice 4
          ]


Tabel wajah didefinisikan bagaimana simpul dihubungkan untuk membentuk wajah(poligon). Dalam tabel ini, setiap vertex ditentukan oleh nomor sesuai dengan posisi mereka (indeks) pada tabel simpul. Puncak pertama dari tabel selalu memilikiindeks 0 (nol). 
Pemisahan masingmasing vertex dilakukan dengan koma danDeskripsi akhir entri dari wajah masing-masing ditetapkan sebagai "-1". Sebagai contoh:

      coordIndex [                    # lista de Faces
                 4, 3, 2, 1  -1, # Base (terbentuk oleh simpul
                                      4, 3,2 e 1)
                 0, 1, 2, -1,  # Frontal
                 0, 2, 3, -1,  # Direita
                 0, 3, 4, -1,  # Traseira
                 0, 4, 1, -1   # Esquerda
               ]
Untuk menghilangkan wajah dilakukan dengan benar, semua pihak harus didefinisikan pada titik-titik sudutnya berorientasi searah jarum jam. 

Berikut didefinisikan simpul dan wajah yang diperlukan untuk membuat piramida persegi, dengan puncak di (0,10,0). 
# VRML V2.0 utf8

# ------------------------------------------------- -------
# Draw an object formed by faces (a pyramid)
# ------------------------------------------------- -------
Shape {
    appearance Appearance {
       material Material {
diffuseColor 0.7 0.5 0.0 # BROWN
}
    }
    geometry IndexedFaceSet {
       coord Coordinate {
       point [# Vertex list
              0 10 0, # vertex 0
             -5 0 5, # vertex 1
              5 0 5, # vertex 2
              0 5 -5, # vertex 3
             -5 0 -5, # vertex 4
           ]
       }
       coordIndex [# list of Faces
                  4, 3, 2, 1 -1, # Base
                  0, 1, 2, -1, # Front
                  0, 2, 3, -1, # RIGHT
                  0, 3, 4, -1, Rear #
                  0, 4, 1, -1 # Left
                ]
    }
}


Figura 5 - Exemplo de uma PirĂąmide de uma cor em VRML 2
Selain mendefinisikan geometri objek di wajah mereka, Anda dapat mengatur warnaindividual untuk wajah. Untuk ini menggunakan kontrol  Color Index dan Warna. Berikutcontoh penggunaan perintah ini
.
# VRML V2.0 utf8
# ------------------------------------------------- -------
# Draw an object formed by faces (a pyramid)
# ------------------------------------------------- -------
Shape {
    appearance Appearance {
       material Material {}
    }
    geometry IndexedFaceSet {
       coord Coordinate {
       point [
              0 10 0, # vertex 0
             -5 0 5, # vertex 1
              5 0 5, # vertex 2
              0 5 -5, # vertex 3
             -5 0 -5, # vertex 4
           ]
         }
       coordIndex [
                  4, 3, 2, 1 -1, # Base
                  0, 1, 2, -1, # Front
                  0, 2, 3, -1, # RIGHT
                  0, 3, 4, -1, Rear #
                  0, 4, 1, -1 # Left
                ]
       color Color {
          color [
                    1.0 0.0 0.0 # 0 Color: Red
0.0 1.0 0.0, # 1 Color: Green
                    0.0 0.0 1.0 # 2 Colour: Blue
1.0 1.0 0.0 # 3 Color: Yellow
                    1.0 0.0 1.0 # 4 Color: Purple
                    0.7 0.5 0.0 # 5 Color: Brown
          ]
       }
       colorPerVertex FALSE
       ColorIndex [# sets the color of each face
         4, 5, 1, 2, 3, -1
       ]
    }
}

Gambar - Contoh warna-warni piramida di VRML
Warna
Untuk mendefinisikan warna, VRML memiliki komando dan kontrol diffuseColorBahan. Memang Bahan mendefinisikan sekelompok sifat visual yang warnanya satu.Spesifikasi warna dilakukan dengan mendefinisikan komponen R, G dan B, yangdapat bervariasi dalam rentang [0 .. 1].

Sifat bahan lain dari perintah ini adalah:
  • Warna specular berspekulasi bahwa menyetel warna objek. Warna ini muncul bilasatu sisi "depan" untuk sumber cahaya.
·         Transparansi yang mendefinisikan tingkat transparansi objek. Operasi atau tidaktergantung pada atribut plug-in yang digunakan.
  • shininess, yang mendefinisikan tingkat kecerahan (0 = buram, 1 = terang)
Pada contoh berikut ini dapat diamati dengan menggunakan specularColor dandiffuseColor bersama-sama..
# VRML V2.0 utf8
# ------------------------------------------------- -------
# Desain warna parallelepiped dengan specular
# ------------------------------------------------- -------
Shape {# define satu blok dari sebuah objek (Shape)
penampilan Penampilan {# define tampilan Shape
Bahan materi {
diffuseColor 0.3 1.0 0.0 b g # r
                
 } # Akhir material
                
 ImageTexture tekstur {
[url "image1.jpg"]
                
 } # Akhir Tekstur
} # Tampilan Akhir
Kotak geometri {
500,0 500,0 200,0 # ukuran larg, tinggi, prof
        
 }
} # bentuk End
The sguir presenter adalah tabel dengan contoh-contoh dari beberapa gaya bahan(dari buku "The VRML 2.0 Sourcebook" oleh Andrea L. Ames, David R. Nadeau, danJohn L. Moreland. 1997).
Textures
Untuk menerapkan tekstur (image) pada objek, cukup tempatkan perintah dalamblok Tekstur Penampilan. Sintaks dari perintah ini ditampilkan di bawah, di mana angka dipetakan pada sebuah kubus..
# VRML V2.0 utf8
# ------------------------------------------------- -------
# Desain warna parallelepiped dengan specular
# ------------------------------------------------- -------
Shape {# define satu blok dari sebuah objek (Shape)
penampilan Penampilan {# define tampilan Shape
Bahan materi {
diffuseColor 0.3 1.0 0.0 b g # r
                 } # Akhir material
                 ImageTexture tekstur {
[url "image1.jpg"]
                 } # Akhir Tekstur
} # Tampilan Akhir
Kotak geometri {
500,0 500,0 200,0 # ukuran larg, tinggi, prof
         }
} # bentuk End

Menempatkan lebih dari satu objek dalam sebuah file VRML 2


Untuk memasukkan lebih dari satu objek dalam sebuah file VRML hanyamenempatkan blok satu setelah Shape lainnya. Pada contoh berikut ini ada Box dansebuah kerucut di sama.

# VRML V2.0 utf8
# ------------------------------------------------- -------
# File in VRML 2 with a Box and a Cone
# ------------------------------------------------- -------
Shape {# BOX
appearance Appearance {# define the appearance of Shape
material Material {
diffuseColor 0.3 1.0 0.0 b g # r
specularColor 0.5 0.0 0.0 b g # r
Transparency 0.5 # between 0 and 1
shininess 0.0 # between 0 and 1
}
         }
geometry Box {
size 2.5 2.5 5.0 # larg, height, prof
         }
} # end of BOX
Shape {# CONE
         appearance Appearance
         {
           material Material {diffuseColor 1 0.5 0} # orange
         }
geometry Cone {
bottomRadius 1.0
height 5.0
side TRUE
TRUE bottom
}
       }
# End Cone

Geometric Transformations of Objects

Sejauh ini hanya hadir objek dalam posisi aslinya.
Dalam VRML, untuk mengubah posisi atau orientasi obyek berlaku transformasigeometris.
Transformasi geometrik didefinisikan dengan mengubah perintah di mana Andadapat menentukan rotasi, posisi dan skala untuk diterapkan dan apa yang"objek-anak" untuk transformasi.
Di bawah ini kita dapat melihat model pemrosesan perintah.
Transform { 
# Command processing 
............... 
    children [# "children" Transformation 
# Here are the Shapes that will undergo the transformations 
# Set up 
# Among the Shapes, put a comma 
             ] 
} # End Transform 


  • Transformasi perintah adalah:
     tx ty tz terjemahan: untuk mengubah posisi;
     skala ey ez ex: untuk mengubah ukuran objek.
     rotasi 1 0 0 0.7: untuk mengubah orientasi. Dimana tiga angka pertamamenentukan sumbu rotasi dan sudut rotasi terakhir (dalam radian);
            Konversi tabel derajat ke radian
                3.1415 = 180 graus
        1.5707 = 90 graus
        0.7853 = 45 graus
        0.5235 = 30 graus
Penting untuk diingat bahwa transformasi geometrik, serta sifat visual, efektif hanyadalam blok Transform {... } yang didefinisikan. Selain itu, lembah ini transformasi dariposisi di mana mereka muncul.

Perubahan VRML selalu diterapkan dalam urutan sebagai berikut: Rotasi, Skala danTerjemahan. Hal ini terjadi meskipun sumber dari perubahan ini muncul dalam urutan yang berbeda.

Pada contoh berikutini kita dapat mengamati penerapan transformasi geometris dalam 2 kubus

# VRML V2.0 utf8
# ------------------------------------------------- ------------
# Draw two cubes with geometric transformations
# -------- ----------------------------------------- ------------
Transform {
     translation 0 0 0
     rotation 0 0 1 0.7853 # axis and angle (in radians) (1.57 = 90 degrees)
     scale 1 1 2
     children [# The changes may have one or more "children"
         Shape {# These "children" or other changes are Shapes
appearance Appearance {
material Material {diffuseColor 1.0 0.0 0.0}
}
geometry Box {size 5 5 5}
       }
     ]
}
Transform {
     translation 10 0 0
     scale 1 1 1
     rotation 0 1 0 # 0.7 and axis angle (in radians)
     children [# The changes may have one or more "children"
         Shape {# These "children" or other changes are Shapes
appearance Appearance {
material Material {diffuseColor 0.0 1.0 0.0}
}
geometry Box {size 5 5 5}
       }
     ]
}
Gambar - Transformasi Geometris Cubes
Transformasi Geometri Bersarang
Untuk membuat transformasi geometri untuk diterapkan di atas sudah ada harus meletakkan blok
Transform {} dalam blok Transform anak-anak lain. Perhatikan bahwa dalam VRMLperubahan apa di transformasi geometrik adalah sistem koordinat, serta OpenGL.
Pada contoh berikut ini transformasi terjemahan diterapkan pada rotasi yang lain.Diterapkan pada rotasi 90 derajat pada sumbu X, sumbu Z menunjuk ke bawah. Jadi terjemahan yang diterapkan untuk mengikuti sumbu Z adalah obyek ke bawah.
# VRML V2.0 utf8 
# ------------------------------------------------- 
------------ 
# Draw two cubes with geometric transformations NESTED 
# ------------------------------------------------- 
------------ 
Transform { 
    scale 1 2 1 
    rotation 1 0 0 1.57079 # axis and angle (in radians) (1.57 = 90 degrees) 
    children [# 1 >>>>>> CHILDREN 
Transform { 
                     translation 0 0 5 # This will make the object DOWNLOAD!! 
children [# 2 ****** CHILDREN 
        Shape { 
appearance Appearance { 
material Material {diffuseColor 1.0 0.0 0.0} 
} 
        geometry Box {size 5 5 5} 
} # End of Shape 
                        ] # End ****** 2 CHILDREN 
} # End Transform 
            ] # End of >>>>>>> CHILDREN 1 
} 
Transform { 
    translation 10 0 0 
    scale 1 1 1 
    rotation 0 1 0 # 0.7 and axis angle (in radians) 
    children [# The changes may have one or more "children" 
        Shape {# These "children" or other changes are Shapes 
appearance Appearance { 
material Material {diffuseColor 0.0 1.0 0.0} 
} 
geometry Box {size 5 5 5} 
      } 
    ] 
} 

Membuat Link pada objek
Di VRML, objek apapun dapat link ke halaman lain. Anda hanya harus menempatkanblok Anchor.
Anchor dalam blok atau tempat objek dan masih memproses URL yang akanmenjadi tujuan link.
Contoh dalam gambar di bawah ini membuat link ke dua alamat yang berbeda daridua benda yang terpisah.
# VRML V2.0 utf8
# ------------------------------------------------- ------------
# Example of using links
# ------------------------------------------------- ------------
Anchor {
children [
Transform {
translation 0 0 0
children [# The changes may have one or more "children"
Shape {# These "children" or other changes are Shapes
appearance Appearance {
material Material {diffuseColor 1.0 0.0 0.0}
}
geometry Box {}
}
]
} # End of Transform
           ] # end of Children of Anchor
           url ["Box.wrl"]
} # end of Anchor
Anchor {
children [
Transform {
translation 5 0 0
scale 1 1 1
rotation 1 0 0 0.7853 # axis and angle (in radians)
children [# The changes may have one or more "children"
Shape {# These "children" or other changes are Shapes
appearance Appearance {
material Material {diffuseColor 0.0 1.0 0.0}
}
geometry Cylinder {}
}
]
} # End of Transform
           ] # end of Children of Anchor
           url ["Cylinder.wrl"]
} # end of Anchor

Gambar - Contoh Link di VRML
Menempatkan file-file di lain
Untuk menyertakan objek telah didefinisikan dalam file lain (lokal atau jauh)menggunakan perintah diikuti dengan URL file inline. Dalam gambar berikutmenunjukkan contoh penggunaan Inline.
# VRML V2.0 utf8
# ------------------------------------------------- ------------
# Example File Inclusion
# ------------------------------------------------- ------------
Transform {
     translation 0 0 0
     rotation 0 0 1 0.7853 # axis and angle (in radians) (1.57 = 90 degrees)
     scale 1 1 2
     children [# The changes may have one or more "children"
         Inline {
                  url ["Box.wrl"]
                }
     ]
}
Transform {
     translation 10 0 0
     scale 1 2 1
     rotation 0 1 0 # 0.7 and axis angle (in radians)
     children [
         Inline {
                  url ["Cylinder.wrl"]
                }
     ]
}


Gambar - Contoh INCLUDE  VRML
Pengamat 3D Scene
VRML 2 adalahmungkin untuk posisi pengamat di beberapa posisi tertentu ruangmelalui perintah Viewpoint memiliki bidang-bidang berikut:
• posisi XYZ: yang mendefinisikan posisi pengamat;
• xyz ang orientasi: mendefinisikan sumbu dan sudut rotasi pengamat;
• fieldOfView ang: mendefinisikan sudut pandang dalam radian;
• deskripsi "string" yang mendefinisikan nama sudut pandang ini. Nama ini dapatdigunakan untuk navigasi dengan browser.

Berikut adalah dua contoh pandangan.

# VRML V2.0 utf8
# ------------------------------------------------- -------
# Draw a yellow parallelepiped
# The Observer was changed to UP objects
# There are two defined positions. To scroll between them using
# Browser command to navigate among specific
# Viewpoints
# ------------------------------------------------- -------
Viewpoint {
   
 0 position on March 15
   
 orientation 0 0 1 0
   
 fieldOfView 0.785398 # 90 degrees to radians
   
 description "See above"
} # end Viewpoint
Viewpoint {
   
 position 0 -3 15
   
 orientation 0 0 1 0
   
 fieldOfView 0.785398 # 90 degrees to radians
   
 description "See below "
} # end Viewpoint
Shape {
appearance Appearance {# define the appearance of Shape
material Material {
diffuseColor 1.0 1.0 0.0 b g # r
                
 }
}
geometry Box {}
} # end shape


Posisi lampu dalam lingkungan VRML

Untukmenempatkan cahaya dalam adegan VRML menggunakan PointLight perintahyang memungkinkan Anda menetapkan lokasi, warna cahaya dan intensitas cahaya.Dalam file VRML sama bisa beberapa lampu.
Lalu ada contoh penggunaan lampu
# VRML V2.0 utf8
# ------------------------------------------------- -------
# Example use of lighting in VRML 2
# ------------------------------------------------- -------

PointLight {
   
 location 0 10 0
   
 1 0 0 # color red
   
 intensity 1
}
PointLight {
   
 location 10 0 0
   
 color 0 1 0 # green light
   
 intensity 1
}
Shape {# define a block of a OBJETIVE (Shape)
appearance Appearance {# define the appearance of Shape
material Material {
diffuseColor 0.5 0.5 0.0 b g # r
                
 }
}
geometry Box {}
} # end shape


Menulis teks dalam VRML

VRML adalah sebuah teks dalam bentuk, seperti kotak atau kerucut.

Perintah untuk menampilkan teks adalah Teks. Perintah memiliki bidang teks untukmenentukan teks itu sendiri, panjang dan jenis huruf (font). Lihat contoh berikut.
# VRML V2.0 utf8
# Example of using the Text node
Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 0.0 0.3
                 }
}
geometry Text {
string ["This one eh" # multiple lines of text
"Example"
"text"
"VRML 2.0"]
length [15, 15, 8, 10] # size of each line
fontStyle FontStyle {
                         family "SERIF" # and can also be SERIF TYPEWRITER
style "ITALIC" # may also be BOLD
spacing 1.0 # space between the lines
# 2.0 size font size
justify "BEGIN" # END and can also be MIDDLE
                 } # end of fontStyle
} # end geometry
}
Shape {
appearance Appearance {
material Material {
diffuseColor 0.0 1.0 0.0
                 }
}
geometry Box {}
}


Tidak ada komentar: