Membuat Tabung 3D Sederhana dengan OpenGL GLUT

Pada kesempatan kali ini, kita akan belajar bagaimana cara membuat objek tabung 3D sederhana menggunakan OpenGL dengan bantuan GLUT. Membuat tabung adalah latihan penting untuk memahami pemodelan objek 3D berbentuk silinder.

Berikut ini saya tampilkan contoh program C++ lengkap untuk menggambar sebuah tabung:

Source Code: Membuat Tabung

// Membuat Tabung
#include <windows.h>
#include <math.h>
#include <gl/glut.h>

#define PI 3.14

GLint circle_points = 40; // Jumlah segmen tabung

// Fungsi untuk menggambar tabung
void MyTube(GLfloat radius, GLfloat tinggi) {
    GLint i;
    GLdouble theta, ntheta;
    for (i = 0; i < circle_points; i++) {
        glBegin(GL_POLYGON);
        theta = (2 * PI * i / circle_points);
        ntheta = (2 * PI * (i + 1) / circle_points);

        // Membuat sisi tabung menggunakan 4 titik
        glVertex3f(radius * cos(theta), 0, radius * sin(theta));
        glVertex3f(radius * cos(ntheta), 0, radius * sin(ntheta));
        glVertex3f(radius * cos(ntheta), tinggi, radius * sin(ntheta));
        glVertex3f(radius * cos(theta), tinggi, radius * sin(theta));
        glVertex3f(radius * cos(theta), 0, radius * sin(theta));
        glEnd();
    }
}

// Fungsi untuk menampilkan objek
void Display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1, 1, 1); // Warna putih
    MyTube(0.5, 1); // Membuat tabung dengan radius 0.5 dan tinggi 1
    glFlush();
}

// Fungsi untuk mengatur tampilan saat ukuran window berubah
void reshape(int w, int h) {
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glFrustum(-0.5 * (GLfloat)w/h, 0.5 * (GLfloat)w/h, -0.5, 0.5, 1, 20);
    gluLookAt(0, 0.5, 3, 0, 0, -100, 0, 1, 0);
}

// Fungsi inisialisasi awal
void init(void) {
    glClearColor(0, 0, 0, 0); // Latar belakang hitam
    glPolygonMode(GL_FRONT, GL_LINE); // Mode wireframe
    glPolygonMode(GL_BACK, GL_LINE);
}

// Fungsi utama
int main(int argc, char* argv[]) {
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(320, 200);
    glutCreateWindow("Tabung");
    init();
    glutDisplayFunc(Display);
    glutReshapeFunc(reshape);
    glutMainLoop();
}

Penjelasan Program

  • MyTube() : Fungsi ini membuat tabung dengan menghubungkan titik-titik keliling atas dan bawah menggunakan segiempat (polygon). Dengan circle_points = 40, tabung terlihat lebih bulat.

  • Display() : Membersihkan layar dan menggambar tabung berwarna putih.

  • reshape() : Menyesuaikan viewport dan perspektif saat jendela diubah ukurannya.

  • init() : Mengatur latar belakang dan mengaktifkan mode wireframe, sehingga hanya rangka tabung yang terlihat.

Hasil Output

Saat program dijalankan, akan tampil sebuah tabung 3D berwarna putih di atas latar hitam. Karena menggunakan wireframe mode, kita hanya melihat garis-garis kerangkanya.

Codeblocks,Komputer Grafik,

Tips Pengembangan

  • Ingin tabung tampil solid? Ganti glPolygonMode(GL_FRONT, GL_FILL);.

  • Ingin membuat alas dan tutup tabung? Anda perlu menambahkan polygon lingkaran di bagian bawah dan atas.

  • Ingin tabung lebih halus? Cukup tingkatkan nilai circle_points menjadi 60 atau lebih.

  • Bisa juga menambahkan rotasi dan animasi menggunakan fungsi glRotatef().

Komentar