follow twitt

Rabu, 28 November 2012

Membuat Teksture 3D [Dev-C++]

Jumpa lagi dengan saya... hhahahahahha lama ga posting.. banyak TR cuyy...

hari ini ane akan bikin teksture 3D, langsung aja ke inti permasalahanya bung...
oh ya, klarifikasi aja... bukan ane yg bikin codingnya [tp pak dosen], ane tinggal edit biar lebih indah.

langkah pertama.
kita kelompokkan file2 yang saya lingkari dibawah kedalam satu folder
langkah kedua.
disini kita bikin project di dev-c++ seperti biasa... udah bisa kan???? bagus....
kalo udah bikin project, main.cpp yg di project dihapus aja...
terus di projectnya klik kanan, pilih add to project... nah ntar bakalan keluar window seperti dibawah
lanjut ke benang merah.. ntar kalo diklik add to project bakalan keluar window seperti dibawah ini, terus CTRL+A and next klik open.



kalo udah di open semua, jadinya seperti ini...
nah ane bakalan nerangin kegunaan ketiga file ini secara singkat, padat dan jelas...
1. Imageloader.cpp itu gunanya buat membaca gambarnya...
2. Imageloader.h itu gunanya cuma buat sebagai class gambar
3. main.cpp itu buat processing texturenya..

selain itu didalam main.cpp terdapat "initRendering" yg fungsinya supaya gambar yang di load bisa dibaca sama vga kompi ato lapy ente2..




lanjut ke langkah ketiga
siapkan gambar berekstensi .bmp
kenapa??? karena bitnya lebih sederhana daripada .jpg, ntar kalo ente2 smua pake .jpg gambarnya jadi gueeedeee banget n itu bakalan nyiksa kompi ato lapy ente2 sekawan.

langkah ke empat
baca ini baik2..
GLuint _textureId;           //ID OpenGL untuk tekstur
void jalan(int value);
void handleKeypress(unsigned char key, int x, int y) {
                  if(key==27){
        exit(0);
    }
   
    if(key==65 || key==97){ //berputar ke kiri ketika menekan tombol A / a
            status=1;
    }
    if(key==68 || key==100){ //berputar ke kanan ketika kita menekan tombol D / d
            status=2;
    }
    if(key==87 || key==119){ //berputar ke atas ketika menekan tombol W / w
            status=3;
    }
    if(key==83|| key==115){ //berputar ke bawah ketika menekan tombol S /s
            status=4;
    }
    if(key==58 || key==78){ //berputar ke kiri atas ketika menekan tombol X / x
            status=5;
    }
        glutTimerFunc(10, jalan, 0);
}

bikin gambar jadi texture terus kasi ID ke texturenya (GLuint _textureId;           //ID OpenGL untuk).
GLuint loadTexture(Image* image) {
    GLuint textureId;
    glGenTextures(1, &textureId);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height, 0, GL_RGB, GL_UNSIGNED_BYTE, image->pixels);
    return textureId;
}

dan ada pula constructornya
void initRendering() {
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
   
    Image* image = loadBMP("ucup.bmp"); //upload gambar .bmp
    _textureId = loadTexture(image);
    delete image;
}

buat proses perputarannya seperti ini
//PROSES PERPUTARAN
    if(status==1) glRotatef(-_angle, 0.0f, 1.0f, 0.0f);
    if(status==2) glRotatef(-_angle, 0.0f, -1.0f, 0.0f);
    if(status==3) glRotatef(-_angle, 1.0f, 0.0f, 0.0f);
    if(status==4) glRotatef(-_angle, -1.0f, 0.0f, 0.0f);
    if(status==5) glRotatef(-_angle, 1.0f, 1.0f, 0.0f);

disini ada void jalan buat nilai perputarannya... yaitu 0-360 n dalam 10ms
void jalan(int value) {
    _angle += 10.0f;
    if (_angle > 360) {
        _angle -= 360;
    }
    glutPostRedisplay();
}

jadinya seperti ini [keren kan???? apalagi fotonya:]






hanya buat keterangan aja... ini saya bikinya sedikit berbeda dari yang lainnya, karena rasa penasaran..
untuk menjalankan projectnya di compile n run seperti biasa...
tapi nanti dia ga bakalan muter sendiri, n saya pake inputan dari keyboard biar bisa gerak
[A untuk putar ke kiri]
[D untuk putar ke kanan]
[S untuk putar ke bawah]
[W untuk putar ke atas]
dan selebihnya itu belum bisa,... bingung ane.
buat download project lengkap klik disini.
matur thenkyu, Gusti Memberkahi.

Tidak ada komentar:

Posting Komentar