Belajar Membuat Objek 3 Dimensi pada OpeGL (DevC++)


Kali ini, Diskusi Kuliah akan kembali lagi dengan materi Komputer Grafika yang sebelumnya membahas mengenai Instalasi OpenGL pada DevC++ sekaligus mencoba untuk membuat suatu objek 2 dimensi. Nah, kali ini kita akan mencoba membuat dengan tingkatan dimensi yang lebih realistis meskipun masih terlihat masih kaku. Sebelumnya jika kita bisa membuat objek 2 dimensi, mungkin kita bisa selanjutnya bisa membangung objek 3 dimensi yang terbuat dari objek 2 dimensi. Seperti halnya jika kita akan membuat suatu bangun Kubus, maka kita bisa menggabungkan 6 objek persegi (GL_SQUAD) yang artinya setiap sisi dari kubus terdiri dari 6 kotak, nah dari situ kita tinggal menggunakan transformasi fundamentals untuk membuatnya terlihat seperti kubus. Kali ini untuk membuat objek 3 dimensi kita tidak perlu pusing untuk membuatnya. Pada OpenGL sudah disediakan syntak untuk membuat objek 3 dimensi, sehingga kita hanya perlu untuk memanggilnya. Tetapi tidak semua bangun ruang 3 dimensi bisa kita panggil, OpenGL hanya menyediakan objek pokok 3 dimensi saja yang dapat kita panggil, selebihnya kreativitas kitalah yang akan menambahkannya. Berikut ini syntaks yang sudah ada pada OpenGL.

Ada terdapat 2 jenis Objek 3 Dimensi yang dipakai oleh OpenGL, yakni Wire dan Solid, nanti kita akan mengetahui perbedaan dari keduanya.

1. Bola (Sphere)

void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);

Sintaks diatas, jika kita panggil, akan menghasilkan suatu bola.Sintak diatas merupakan suatu prosedur pada bahasa pemrograman Berikut ini penjelasan dari sintaks tersebut:

  • GLdouble radius –> untuk menyatakan ukuran dari radius bola tersebut, atau kita lebih sering mengatakannya sebagai diameter dan ukuran ini bertipe data double.
  • GLint slices –> untuk menyatakan jumlah garis dari pembentukan suatu bola, jika jumlah slices lebih banyak maka bola tersebut akan lebih melingkar, perbedaannya akan lebih terlihat jika digambarkan dalam bentuk Wire.
  • Glint stacks –> untuk menyatakan jarak dari tiap slices, ini juga akan mempengaruhi lingkaran bola yang sudah kita buat dan akan lebih terihat perbedaanya pada keadaan Wire.

 

2. Cube (Kubus)

void glutWireCube(glDouble size);
void glutSolidCube(glDouble size);

Penjelasan :

glDouble size –> untuk menyatakan ukuran dari kubus yang akan kita buat. seperti halnya kita menginputkan volume untuk kubus tersebut dengan tipe data double. Harus diperhatikan juga dalam menginputkan size nya, jika orthogonal (GlOrtho) yang kita pakai adalah 0,1 maka inputan harus diantara angka 0 dan 1. Sehingga lebih baik Anda tentukan dulu ortoghonalnya.

 

3. Torus (Donat)

void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings);
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings);

Penjelasan :

GLdouble innerRadius      –> Ini untuk menyatakan diameter dari lubang donat tersebut
GLdouble outerRadius      –> Ini untuk menyatakan diameter dari lingkar donat tersebut
GLint nsides                              –> Untuk menyatakan sisi yang akan dipakai pada lingkar
GLint rings                                 –> Untuk menyatakan sisi yang mengikat pada lingkar Torus (donat)

Catatan:

1. Untuk ukuran Inner Radius jika kita inputkan angka yang lebih besar, maka lubang akan mengecil, sebaliknya jika kita inputkan angka yang lebih kecil, maka lubang (radius) akan besar.

2. Jika sides dan stack lebih banyak maka bentuk torus akan semakin terlihat (Realistis) jika tidak maka akan terlihat sudut-sudut yang membentuk bangun tersebut

 

4.  Icosahedron

void glutWireIcosahedron(void);
void glutSolidIcosahedron(void);

Icosahedron merupakan bangun ruang dengan 12 titik, 20 permukaan, dan 30 sisi.

 

5. Octahedron

void glutWireOctahedron(void);
void glutSolidOctahedron(void);

Octahedron merupakan bangun ruang dengan 8 sisi atau permukaan

 

6. Tetrahedron

void glutWireTetrahedron(void);
void glutSolidTetraHedron(void);

Tetrahedron merupakan bangun ruang dengan 4 sisi tetapi bukan persegi / kotak / kubus / balok.

 

7. Dodecahedron

void glutWireDodecahedron(void);
void glutSolidDodecahedron(void);

Dodecahedron merupakan bangun ruang dengan 12 permukaan, 30 titik ujung dan 20 titik.

 

8. Cone (Kerucut)

void glutWireCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks);
void glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks);

Penjelasan :

GLdouble radius –> Merupakan diameter dari alas kerucut (Cone)
Gldouble height –> merupakan tinggi dari kerucut (Cone)
GLint slices –> Jumlah Garis vertikal yang membangun kerucut tersebut
GLint stacks –> Jumlah garis horizontal yang membangun kerucut tersebut

 

9. Teapot (Teko)

void glutWireTeapot(GLdouble size);
void glutSolidTeapot(GLdouble size);

Itulah 9 Syntaks sederhana yang sudah ada pada OpenGL, selebihnya silakan berkreasi dengan bangun yang sudah diulas oleh Diskusi Kuliah. Jika ada pertanyaan silakan isi comment yang ada dibawah, Insyaallah Diskusi Kuliah akan menjawab sesuai dengan kapasitasnya.

Oiya… Jika ada yang mau,  Diskusi Kuliah punya beberapa Source Code Program 3D (DevC++), jika berminat silakan isi komentar dibawah jangan lupa isi email (hehe.. maklum ingin meningkatkan rating blog Diskusi Kuliah)

216 comments on “Belajar Membuat Objek 3 Dimensi pada OpeGL (DevC++)

  1. Untuk yang menginginkan Contoh Program (Sample Source Code) dengan mengisi comment diatas. Saya sudah kirim linknya lewat email masing-masing. Selamat Mencoba, Berkreasi, dan Semiga Bermanfaat

  2. saya mencoba gambar bola dengan menggunakan glutSolidSphere , tp knp hasilnya malah seperti bentuk telur yg sedang di tidurkan ya ?

    • jika amee menggunakan transformasi (scale,rotate,translate), seimbangkan transformasinya… Contoh jika menggunakan scale pastikan perbesarannya/pengecilannya terhadap semua sumbunya seimbang. Sehingga bola yang didapat akan murni seperti bola.

  3. Bosss… bntuin aq donkkk …
    gini… ada tugas tuh,, bikin transformasi, nah transformasi nya bikin transformer… kasih source code nya ya buat dev c++.. pliiisss…
    thankss.. 🙂

  4. mas, aq dah liad project yg mas krim.
    kalo 3 dimensigmna mas???
    aq dah krim projectq tapi aq gag tau mau d apain lagi biar dy bisa brubah…

    bantuind yah mas!!

  5. terima kasih mas, semua artikelnya sangat membantu saya sbg pemula dalam openGL. kalau boleh, saya ingin meminta beberapa contoh source code untuk membuat objek 3D ini. tolong kirimkan ke email ya mas. terima kasih 🙂

  6. gan minta bantuan dong . . .

    ada tugas bikin perubahan bentuk pakek transformsi dan rotasi . . .
    ya ky transformer . . .

    bisa bantu gak gan ???
    program apa aja boleh asal ada perubahan bentuknya gan . . .

    trimakasih . . .

  7. Mas, bisa minta source codenya?
    aku dapet tugas disuruh bikin transformer, penilaiannya itu bukan seberapa miripnya transformer yg qt bikin, tpi bgmna kita bikin perubahan dri mobil jdi robot transformernya?

    bisa beri penjelasan gk fungsi” apa yg harus dipake tuh?

    • kalo untuk perubahan seh ada, cuman objeknya bukan dari mobil ke robot… karena itu sangat kompleks. yang saya punya mungkin masih objek biasa saja.. seperti meja menjadi sebuah menara yang sederhana.

  8. mas kalau misal mau bikin bola satu saja, itu source kodenya gimana?
    kemaren saya nyoba-nyoba codenya supanya bola nya ada 1 itu susah
    kalo kayak gitu gimana ya?

    makasi 🙂

  9. maaf da yang bisa bantu g . .
    kalou mau buato gambar setrika objek apa ja yang di butuhin . .
    trus kalau ada yang punya source code strika bisa kirim email ke :
    greatawh@gmail.com

    oiya kalao g pake objek itu tp bikin kordinat sendiri perintahnya apa (yang control mouse dan keyboard);

    makasisih sebelumnya . . . .

  10. mas mau tanya kalo mau bikin fungsi keyboard untuk berhenti itu gmana? yang awalnya objeknya itu gerak-gerak?

    trus kalo mau bikin kubus yang dikelilingi donat kemaren kan udah bisa, kalo mau nambah donat , tap dengan ukuran yang lebih kecil gmana? pake fungsi keyboard?

    makasi sebelumnya……..

  11. wah pas bgt nih mas…
    saya juga lagi nyari yang beginian…
    boleh minta source code nya mas…
    melalui email dari comment saya mas…
    terimakasi atas infonya mas…
    heheheheh…

  12. mas, saya ada tugas bikin ruangan bioskop gitu, saya butuh sintaks tentang membuat ruangan, pencahayaan, menggunakan keyboard, kalo ada source nya tolong kirim ke email saya mas.. makasih. 🙂
    email saya : ratim.roma@gmail.com

  13. bang ada source code buat yang rotasi, skala, sama translasi ga … ??
    tapi di listing programnya itu disertakan perhitungan dari masing” rotasi, skala, sma translasi ..

    lau ada tolong dong kirimin ke email ini ekosatrio92@gmail.com

    lau bisa sih secepatnya soalnya minggu ini tugasnya harus dikulmpulkan
    thanx’s

  14. assalamualaikum mas….
    makasih atas tutorialnya
    boleh gak mas minta souce code
    ini email saya:uyp.iedin10@gmail.com

Leave a reply to bahri Cancel reply