Senin, Oktober 04, 2010

VRML UNTUK REPRESENTASI TANSFORMASI 3D

VRML UNTUK REPRESENTASI TANSFORMASI 3D

DASAR VRML


VRML adalah singkatan dari Virtual Reality Modeling Language suatu bahasa pemrograman yang digunakan untuk menampilkan objek 3D yang dapat dibaca oleh browser internet. VRML dipublikasikan pada Mei 1995 dan kemudian dilakukan standarisasi pada VRML97. Agar browser dapat menjalankan file VRML maka perlu terlebih dahulu di pasang plugin yang diantaranya adalah Blaxxun Contact, BlenderWeb Plugin, Cosmo Player, Viscape, dll. VRML ditulis dalam bentuk teks dengan format utf8, dengan struktur file yang sudah ditetapkan. File VRML di beri extention wrl serta case sensitive atau membedakan huruf besar dan kecil.

Struktur File VRML97
File VRML diawali dengan header pada baris pertama dengan tanda # dan diikuti “VRML V2.0 utf8” ini menunjukan file tersebut dapat di tampilkan dengan format VRML versi 2 dan format file utf8. Tanda # pada baris kedua dan seterusnya merukan komentar dan tidak diproses. Berikut contoh sederhana dari file VRML.
#VRML V2.0 utf8
# Komentar isi file
Node

Node
Node adalah objek yang ada pada VRML, node memiliki field yang merupakan properti atau keterangan dari node tersebut,. Field dapat berupa node yang lain, sehingga memungkinkan node memiliki field yang berupa node juga. Berikut contoh dari membuat gambar kotak menggunakan VRML

Shape
Shape adalah node dasar yang digunakan untuk membuat sebuah objek sederhana. Pada contah diatas dapat diterangkan sebagai berikut yaitu Node Shape yang memiliki field appearance dan geometry. Sedangkan field appearance di isi dengan Node Apperance yang juga memiliki fields material dan diisi Node Material.
appearance
Field appearance pada node Shape digunakan untuk memberi warna tektur dan transparansi serta sifat-sifat yang lain.
geometry
Field geometry digunakan untuk membetuk objek dasar yang dimilikik oleh VRML.

Berikut contoh membuat bentuk kerucut yang berwarna Biru muda
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 0 1 1 # biru muda
emissiveColor 0.3 0.3 0.3
}
}
geometry Cone {} # kerucut pada posisi default
}

Hasil yang ditampilkan:


TANSFORMASI

Untuk merepresentasikan transformasi VRML menggunakan node Transform. Node tersebut memiliki field translation, rotation, scale dan children dengan format sebagai berikut:
Transform {
translation x y z
scale x y z
rotation x y z sudut
children nodeShape
}


Nilai x y z adalah integer yang digunakan ukuran dari transformasi, pada translation adalah ukuran dari arah pergeseran, pada scale x y z merupakan sekala yang dapat berupa angka pecahan. Pada rotation merupakan sumbu putaran, pada node ini ada nilai sudut yang digunakan untuk menentukan besar putaran dalam radian. Sedangkan node children digunakan untuk membuat objek yang dilakukan proses transformasi.

ROTASI

Berikut contoh objek silinder yang dilakukan transformasi rotasi sebesar 90 derajad terhadap sumbu Z
#VRML V2.0 utf8

Transform {
rotation 0 0 1 1.57
children [
Shape {
appearance Appearance {
material Material { diffuseColor 0 1 1 }
}
geometry Cylinder {
radius 1
height 4 }
}
]
}

Hasil yang ditampilkan:



SKALA

Berikut contoh objek kotak dengan ukuran X=1 Y=1 Z=1 berwarna merah dan dirubah skala terhadap sumbu z menjadi 10% lebih kecil
#VRML V2.0 utf8

Transform {
scale 1 0.1 0.1
children [
Shape {
appearance Appearance {
material Material { diffuseColor 1 0 0 }
}
geometry Box {size 1 1 1 }
}
]
}


Hasil yang ditampilkan:





TRANSLASI

Berikut contoh objek bola berwarna hijau dan dilakukan pergeseran terhadap sumbu x positif 5 dan y positif 2, pada hasil capture berikut tidak terlihat pergeserannya karena dipotong pada gambarnya saja:
#VRML V2.0 utf8

Transform {
translation 5 2 0
children [
Shape {
appearance Appearance {
material Material { diffuseColor 0 1 0 }
}
geometry Sphere{}
}
]
}


Hasil yang ditampilkan:

Jumat, September 24, 2010

Sistem Koordinat (pemrograman dan layar) dan Transformasi

Sistem Koordinat

Pada saat membuat program komputer yang membutuhkan tampilan dilayar maka terdapat 2 sistem koordinat yang dikenal yaitu sistem koordinat layar dan sistem koordinat programan. Sistem koordinat layar adalah tempat untuk meletakkan objek ke layar komputer. Sedang sistem koordinat pemrograman adalah koordinat yang ada didalam logika pemrogramaan, biasanya diapresiasikan dalam bentuk array atau baris.

Sistem koordinat layar mengikuti resolusi dari monitor yang digunakan serta media kanvas yang digunakan sebagai objek. Ukuran dari monitor ada mulai dari 800 x 600, 1280 x 1024 pixel, ini tergantung monito yang digunakan. Semakin besar resolusi yang digunakan maka semakin besar pula kanvar yang dipakai. Koordinat layar mengikuti aturan kolom dan baris jadi dimulai dari sudut kiri atas sebagai koordinat 0,0 sedangkan sudut kanan bawah adalah koordinat masimal.

Sistem koodinat pemorgraman biasanya menggunakan array atau larik. Array yang digunakan bisa mulai dari 1 dimensi, 2 dimensi 3 dimensi bahkan lebih. Array biasanya juga menggunakan sistem baris dan kolom.

Kenapa sistem koordinat pemrograman harus dikonversikan kedalam sistem koordinat layar jika sama-sama menggunakan konsep baris dan kolom?

Hal ini dikarenakan jika menampilkan sebuah gambar maka gambar tersebut akan menempati minimal 10x10 pixel agar bisa dilihat, jika hanya 1 pixel saja maka tidak terlihat sebagai gambar tetapi terlihat sebagai titik. Padahal jika kita menggerakkan gambar kekanan 1 satuan, maka harus diterjemakan ke koordinat layar misalnya gambar tersebut 10 x10 maka dilayar akan bergerak sebesar 10 pixel, ini berlaku kelipatan. Hal ini harus dibuat fungsi koversinya agar programer tidak usak memikirkan posisi dilayar.

Transformasi


Transformasi adalah perubahan, pada bentuk geometri terdapat bentuk-bentuk transformasi diantaranya ada pergeseran atau translasi, skala atau perbesaran dan perputaran atau rotasi. Transformasi dapat dirumuskan secara matematis sebagai berikut:


Translasi
X' = X + ∆X
Y' = Y + ∆Y


Skala

X' = X * Skala
Y' = Y * Skala

Rotasi





X= r Cos (B)
Y= r Sin (B)
X'= r cos (A+B)
Y'= r Sin (A+B)

X'= r Cos (A+B)
= r Cos (A) Cos (B) – r sin (A) Sin (B)
= X Cos (A) – Y sin (A)

Y'= r Sin (A+B)
= r Sin (A) Cos (B) + r Cos (A) sin (B)
= X Sin (A) + Y Cos (A)