Tampilkan postingan dengan label Belajar OpenGL 3D. Tampilkan semua postingan
Tampilkan postingan dengan label Belajar OpenGL 3D. Tampilkan semua postingan

Jumat, 02 September 2016

Game 3D dengan OpenGL dan C++



Halo rekan-rekan sekalian, perkenalkan game 3D yang ogut buat...gunakan mouse untuk toleh kiri dan kanan, serta huruf  S dan W untuk maju mundur.




Source code belum tersedia karena 2 laptop ogut rusak, jadi harus cari-cari di backup-an-nya. Tapi download untuk EXE tersedia, jadi silahkan di coba-coba.

Objek Ogre 3D dibuat persis seperti konsep animasi 3D yang telah ogut bahas. Atau klik ini untuk contoh lainnya.




Kincir angin juga sama, konsepnya sudah pernah ogut bahas seperti membuat Hely 3D.

Yang belum pernah ogut bahas adalah deteksi tabrakan 3D, jadi harap bersabar ya, tunggu tanggal mainnya saja.

Salam


Heriady


Download Exe only klik disini


-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------

Minggu, 24 Januari 2016

Membuat Objek 3D Sederhana OpenGL



Halo Semuanya, selamat datang di blog yang sederhana ini, blog ini ogut/gue tulis karena ogut hobi dengan matematika dan pemrograman grafik / game, terutama dengan OpenGL. Di blog ini ogut akan membagikan semua pengetahuan yang ogut punya, jadi untuk rekan-rekan yang ingin belajar atau memperdalam ilmu OpenGL nya silahkan berselancar di blog ini sampe puas (kagak usah bayar).

Sebagai perkenalan ini ogut kasih gambar-gambar objek 3D sederhana yang telah ogut buat programnya. Program dapat Anda download dan dapat Anda kutak-katik untuk belajar. Harapan ogut agar blog ini bisa berguna bagi semua orang yang ingin menekuni dunia grafik.







Selamat Belajar rekan-rekan, maju terus pemrograman grafik di tanah air, salam


Heriady
heriady.yoh@gmail.com


Beberapa artikel di blog ini
Membuat Terrain untuk Hely 3D

Program Animasi Game MoTer 3D dengan OpenGL

Membuat Animasi Hely 3D dengan OpenGL

Membatasi Ruang Gerak PacMan

Vektor untuk Tanjakan dan Turunan

Vektor Pantul

Program OpenGL 3D dengan Developer CPP (DevCPP)

Teori Enam Kondisi untuk Membuat Side Scrolling Game

Deteksi Tabrakan dengan Proyeksi Vektor

Mendeteksi Posisi dengan Vektor Proyeksi

I Love Math, Bola 3D

I Love Math, Donat 3D

I Love Math, Botol 3D

Matematika rotasi untuk animasi OpenTK 2D

Animasi 3D objek MD2

Objek 3D low polygon yang dibuat dengan 3ds max

Garden 3D yang dibuat dengan 3ds max

I Love My Garden

Teknik blending untuk membuat objek 3D transparan sepeti kaca

Tekstur TGA 32 bit, untuk pagar dan daun

Membuat objek pohon 3D, pohon dibuat dengan bantuan 3ds max

Membuat program objek 3D sepeda tanpa tekstur

Membuat tangki air 3D dari objek balok 3D, pipa 3D dan balok bengkok 3D

Teknik masking untuk membuat game 2D

Membuat teko 3D wire dan solid

Tekstur untuk objek 3D

Sabtu, 23 Januari 2016

Tekstur Abu-abu / Grayscale



Selamat Pagi rekan-rekan sekalian, kembali lagi ogut nge-blog nih dan kali ini ogut akan membagikan program untuk membuat tekstur abu-abu atau grayscale tekstur.


Kadang kala dalam satu pemrograman grafik atau game kita diharuskan mengubah tekstur menjadi abu-abu atau grayscale. Pada gambar di bawah ini Anda dapat melihat sebuah tekstur warna warni, diubah menjadi abu-abu.


Untuk membuat tekstur seperti ini caranya sangat sederhana, Anda hanya mengganti nilai R, G dan B dengan nilai rata-rata RGB.

BGR_to_RGB = BmpImage[i];      //nilai R
BmpImage[i] = BmpImage[i + 2]; //nilai G
BmpImage[i + 2] = BGR_to_RGB; //nilai B

//ubah ke Black White (nilai rata-rata RGB)
RGBDiv = char((BmpImage[i] + BmpImage[i + 1] + BmpImage[i + 2]) / 3);

//isi dengan nilai rata-rata
BmpImage[i] = RGBDiv;
BmpImage[i + 1] = RGBDiv;
BmpImage[i + 2] = RGBDiv;

Pada koding di atas Anda dapat melihat untuk menentukan nilai rata-rata RGB tambahkan ketiga nilai lalu dibagi dengan 3 (hasil bagi harus bilangan bulat), lalu isikan nilai RGB dengan nilai rata-rata tersebut.

Cara lain yang dapat Anda lakukan dengan menggunakan formula atau rumus berikut ini.

0.21 R + 0.72 G + 0.07 B

Diprogram contoh ogut menyertakan kedua cara ini, Anda tinggal me-remark nilai yang tidak diperlukan.

Ini adalah fungsi yang ogut gunakan untuk membuat tekstur abu-abu, harap diperhatikan  ukuran file bitmap 24 bit yang akan dijadikan tekstur harus kelipatan pangkat 2 (32, 64, 128, 256, dst....)

unsigned int CreateGSTexture(char *file)
{
FILE *pFile = 0;
BITMAPFILEHEADER BmpFileHeader;
BITMAPINFOHEADER BmpInfoHeader;
unsigned char *BmpImage;
unsigned int IDImage;

unsigned char BGR_to_RGB = 0;

unsigned char RGBDiv = 0;

//pFile = fopen(file, "rb");    
errno_t err;

err = fopen_s(&pFile, file, "rb");

//if(!fp)
if (err != 0)
{
MessageBox(NULL, file, "File Bmp tidak ditemukan, BMP Error 01", MB_OK);
return NULL;
}

fread(&BmpFileHeader, sizeof(BITMAPFILEHEADER), 1, pFile);

if (BmpFileHeader.bfType != 0x4D42)
{
fclose(pFile);
MessageBox(NULL, file, "Format file bukan Bmp, BMP Error 02", MB_OK);
return NULL;
}

fread(&BmpInfoHeader, sizeof(BITMAPINFOHEADER), 1, pFile);

if (BmpInfoHeader.biSizeImage == 0)
BmpInfoHeader.biSizeImage = BmpInfoHeader.biWidth * BmpInfoHeader.biHeight * 3;

fseek(pFile, BmpFileHeader.bfOffBits, SEEK_SET);

BmpImage = (unsigned char*)malloc(BmpInfoHeader.biSizeImage);

if (!BmpImage)
{
free(BmpImage);
fclose(pFile);
MessageBox(NULL, file, "Gagal alokasi memory untuk texture, BMP Error 03", MB_OK);
return NULL;
}

fread(BmpImage, 1, BmpInfoHeader.biSizeImage, pFile);

fclose(pFile);

if (BmpImage == 0)
{
MessageBox(NULL, file, "Gagal membaca data Bmp, BMP Error 04", MB_OK);
return NULL;
}

for (int i = 0; i < (int)BmpInfoHeader.biSizeImage; i += 3)
{
BGR_to_RGB = BmpImage[i];
BmpImage[i] = BmpImage[i + 2];
BmpImage[i + 2] = BGR_to_RGB;

//ubah ke Black White
RGBDiv = char((BmpImage[i] + BmpImage[i + 1] + BmpImage[i + 2]) / 3);

//=============================
//0.21 R + 0.72 G + 0.07 B
//coba ganti nilai rata2 RGB di atas dengan rumus di bawah ini
//=============================
//RGBDiv = char((BmpImage[i] * 0.21f) + (BmpImage[i + 1] * 0.72f) + (BmpImage[i + 2] * 0.07f));

BmpImage[i] = RGBDiv;
BmpImage[i + 1] = RGBDiv;
BmpImage[i + 2] = RGBDiv;
}

if (BmpImage == 0)
{
MessageBox(NULL, file, "Gagal membuat RGB texture, BMP Error 05", MB_OK);
return NULL;
}

//generate texture
glGenTextures(1, &IDImage);
glBindTexture(GL_TEXTURE_2D, IDImage);

gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, BmpInfoHeader.biWidth, BmpInfoHeader.biHeight, GL_RGB, GL_UNSIGNED_BYTE, BmpImage);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, BmpInfoHeader.biWidth, BmpInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, BmpImage);

if (BmpImage)
{
free(BmpImage);
BmpImage = 0;
}

return IDImage;
}


Sampai disini dulu artikel kali ini, semoga artikel ini bisa bermanfaat, salam


Heriady
heriady.yoh@gmail.com




Artikel terkait
Objek Tangki Air 3D

Tekstur untuk Objek 3D

Membuat File Bitmap 24 Bit

Rabu, 20 Januari 2016

Membuat Objek 3D Garden Dengan OpenGL



Selamat Pagi rekan-rekan, artikel kali ini akan menampilkan cara untuk membuat objek 3D Garden atau taman 3D dengan menggunakan Visual C++ dan OpenGL.


Hasil program dapat Anda lihat pada video dan gambar di bawah ini.





Program ini sudah lama sekali sebenarnya, waktu itu ogut masih belajar pake komputer pinjaman, dan hanya punya waktu sekitar 30 menit perhari untuk nyobain buat program seperti ini. Waktu itu belum tau namanya metode 3 daftar, cara buat objek dengan 3ds max, belum bisa mengkonversi dari objek 3ds max menjadi mesh yang bisa di load oleh OpenGL, dan lain-lain.

Tapi dengan mulai membuat objek 3D seperti ini, jadilah berbagai macam program grafik dan game seperti yang Anda lihat sekarang ini.

Jadi jika rekan-rekan ingin belajar jangan pernah berhenti di tengah jalan, cukup ambil satu langkah saja untuk mulai, bukan 10 atau 100 langkah, itu kebanyakan. Satu langkah saja sudah cukup untuk memulai perjalanan pengembaraan dengan OpenGL.

Untuk membuat program garden ini ogut sarankan Anda membaca artikel berikut ini, karena objek-objek 3D yang ogut pakai untuk garden di atas dibuat berdasarkan objek 3D ini.

Membuat Balok 3D
Membuat Pipa 3D
Membuat Balok Bengkok 3D

Salam


Heriady
heriady.yoh@gmail.com




Artikel terkait
Objek Tangki Air 3D

Objek Meja 3D Wire dan Solid

Membuat Objek Balok Bengkok 3D Solid / Padat