Senin, 04 Oktober 2010

2210205014 - PRINSIP DASAR PEMROGRAMAN TIGA DIMENSI(3D)


Untuk membuat suatu aplikasi 3D secara real-time dibutuhkan suatu teknik pemrograman level rendah dengan bantuan Application Programing Inteface (API). Salah satu standar API yang digunakan untuk pemrograman 3D adalah OpenGl. Ada beberapa prinsip dasar yang harus diperhatikan dalam membuat program 3D dengan memanfaatkan API OpenGL, yaitu:


  1. Mode rendering.
  2. Sistem kordinat

    -kordinat kartesian 2D.
    -kordinat kliping.
    -viewport.
    -vertex.
    -kordinat kartesian 3D.
  3. Sistem proyeksi

    -Ortografi.
    -Perspective.

1. Mode Rendering.
Ada dua pendekatan metode rendering yang digunakan dalam pemrograman level-rendah pada appplication programing interface (API) OpenGL. Pendekatan pertama menggunakan metode retained. Pada mode retained, data abstraksi geometri dari objek yang akan dirender harus dibuat terlebih dahulu baik itu menggunakan perangkat lunak pemodelan objek tiga dimensi atau bantuan API yang lain. Selanjutnya kumpulan data tersebut ditransfer secara cepat ke perangkat keras grafik, atau disimpan langsung pada memori local perangkat keras grafik sehingga aksesnya lebih cepat.

Pendekatan yang kedua adalah menggunakan pendekatan metode immediate. Pada metode ini geometrik objek ditentukan melaui perintah geometri primitive OpenGL secara langsung. Tidak seperti metode retained, daftar geometri objek tidak dibentuk atau disimpan dengan bantuan perangkat lunak modeling atau API lain. Akan tetapi aplikasi harus mendefinisikan ulang semua perintah penggambaran (melakukan rendering secara menyeluruh) pada bidang gambar setiap kali dibuat suatu frame baru.

2. Sistem Kordinat
Untuk mengambarkan suatu objek pada lokasi dan ukuran tertentu, maka dibutuhkan sebuah frame yang menjadi acuan posisi dan ukuran objek tersebut. Sebagai contoh standar layar VGA memiliki 640 pixel dari kiri ke kanan dan 480 pixel dari atas ke bawah. Untuk menentukan titik pada tengah-tengan layar, maka titik tersebut ditetapkan pada posisi (320, 240).

Pada OpenGL, setiap pembuatan jendela penggambaran dilengkapi dengan sistem kordinat yang ingin digunakan beserta cara pemetaan kordinat tersebut ke dalam pixel layar fisik (monitor). Berikut ini merupakan penerapan sistem kordinat dan pemetaannya pada monitor pada penggambaran 2D dan penggambaran 3D. menggunakan prinsip dasar penggambaran 2D
  • Kordinat kartesian 2DSistem kordinat yang sering digunakan pada 2D adalah sistem kordinat kartesian. kordinat kartesian terdiri atas kordinat x dan kordinat y. Kordinat x merupakan ukuran posisi pada arah horisontal sedangkan kordinat y merupakan ukuran posisi pada arah vertikal.
    Titik asal yang digunakan oleh kordinat kartesian adalah x=0, y=0. Kordinat kartesian ditulis sebagai pasangan kordinat didalam kurung, dengan posisi kordinat x diawal dan kordinat y diposisi kedua dengan dipisahkan dengan tanda koma. Sebagai contoh, titik asal ditulis dengan (0,0). Gambar 1 merupakan penggambaran sistem kordinat kartesian pada dua dimensi. Garis x dan y dengan penanda disebut sebagai axes yang dapat diperpanjang secara tak hingga dari negatif menuju positif. Perpotongan antara sumbu x dan sumbu y membentuk bidang kartesian.

Gambar 1. Bidang kartesian
  • Kordinat klipping
    Ukuran window (jendela penggambaran) didasarkan pada satuan pixel. Sebelum melakukan penggambaran titik, garis, dan bentuk pada window, maka harus ada pemberitahuan pengaturan pada OpenGL mengenai tatacara konversi dari pasangan kordinat tertentu menjadi kordinat layar. Konversi ini dikerjakan dengan cara menetapkan area dari ruang kartesian dalam window, area ini disebut sebagai area klipping. Pada ruang dua dimensi, area klipping merupakan nilai minimum dan maksimum dari x dan y yang terletak dalam window. Cara lain untuk menggambarkan pengertian area klipping adalah menunjukkan titik asal kordinat kartesian yang berkorelasi dengan window. Gambar 2 menunjukkan dua area klipping.
 

Gambar 2. Dua area klippinp


Pada contoh pertama (gambar sebelah kiri) pada gambar 2, kordinat x didalam window memiliki jarak kiri ke kanan dari 0 ke 150, dan y memiliki jarak bawah ke atas dari 0 ke 100. Titik pada tengah-tengah layar direpresentasikan sebagai (75, 50). Contoh kedua gambar sebelah kanan pada gambar 2 menunjukkan klipping area dengan kordinat x memiliki jarak kiri ke kanan dari -75 ke 75 dan kordinat y memiliki jarak dari bawah ke atas dari -50 ke +50. Titik tengah-tengah pada gambar sebelah kanan direpresentasikan sebagai (0,0).
  • Viewport


    Ukuran lebar dan tinggi dari area klipping biasanya berbeda dengan ukuran lebar dan tinggi window dalam satuan pixel. Dengan adanya perbedaan ini, maka dilakukan pemetaan dari sistem logika kordinat kartesian ke kordinat layar, pemetaan ini dikenal dengan viewport. Viewport adalah area yang terletak pada area client window yang digunakan sebagai penggambaran area klipping. Viewport mempermudah pemetaan area klipping ke area window. Pada gambar 3 window dengan ukuran 300x200 dengan viewport didefinisikan memenuhi keseluruhan area client. Jika area klipping diatur dengan panjang sumbu x dimulai dari 0 sampai 150 dan panjang sumbu y dimulai dari 0 sampai 100, maka kordinat logika dipetakan ke sistem kordinat yang lebih besar dalam pandangan window. Setiap kenaikan pada sistem kordinat logika dipadankan dengan dua kali kenaikan pada sistem fisik kordinat (layar) dari window.

    Gambar 3. viewport yang didefinisikan sebagai duakali ukuran clipping area
    Pada gambar 4 menunjukkan dimensi viewport yang sama dengan dimensi area klipping. Ukurran Window adalah 300x200, sehingga membuat area pandang terletak pada sisi kiri bawah dari window 
     Gambar 4. viewport yang didefinisikan sama dengan area kliping
Viewport dapat digunakan untuk mengecilkan atau membesarkan gambar didalam window dan hanya menampilkan bagian dari area klipping dengan mengatur viewport menjadi lebih besar dari area client window.
  • VertexPenggambaran objek baik pada 2D maupun 3D terdiri dari beberapa bentuk kecil yang disebut sebagai primitive. Primitive merupakan entiti satu atau dua dimensi atau permukaan seperti titik, garis, dan poligon yang dirakit pada ruang 3D untuk menciptakan objek 3D. Sebagai contoh kubus 3D terdiri dari 6 bidang persegi yang diletakkan pada muka yang berbeda-beda. Setiap pojok dari persegi disebut vertex. Veretek tidak lebih dari kordinat pada ruang 2D atau 3D.
  • kordinat kartesian 3D
    Sistem kordinat 3D merupakan perluasan dari sistem kordinat 2D dengan menambahakan dimensi ketiga. Gambar 5 merupakan sistem kordinat kartesian dengan sumbu baru z. Sumbu z tegak lurus dengan sumbu x maupun sumbu y.
    Gambar 5. Kordinat kartesian 3D
    • Proyeksi
    Dua proyeksi yang perlu diperhatikan dalam OpenGL adalah ortografik dan perspektive. 


    1. Penerapan proyeksi ortografik dilakukan dengan menetapkan kotak pandang volum (square viewing volume). Apapun yang berada diluar volum tidak akan digambar. Selain itu pada proyeksi ortografik semua objek yang memiliki dimensi sama nampak dengan ukuran yang sama pula, tak peduli letaknya jauh ataupun dekat. Projeksi jenis ini (seperti pada gambar 6) seringkali digunakan dalam desin arsitektur, computer-aided design (CAD), atau grap 2D. Sering kali projeksi ini digunakan unutk menambahkan tek atau 2D diatas skene grafik 3D

    Gambar 5. Klipping volum untuk proyeksi ortografik



    1. Proyeksi yang kedua adalah proyeksi perspektive. Proyeksi ini menambahkan efek semakin jauh jarak objek semakin kecil penampakannya dibandingkan dengan penampakan objek dengan jarak yang lebih dekat. Penglihatan volum (lihat gambar 7) kadangkala seperti piramid dengan bagian atas terpenggal. Bentuk sisa disebut frustum. Objek yang dekat terhadap bagian depan dari penglihatan volum akan memiliki penampakan mendekati dengan ukuran sebenarnya, tetapi objek yang terletak dekat dengan bagian belakang penglihatan volum memiliki penampakan yang mengecil. Jenis proyeksi ini memberikan realisme animasi dan simulasi 3D.

    Gambar 7. Kliping volum (frustum)untuk proyeksi 3D

1 komentar: