Rabu, 13 Mei 2009

R E N D E R I N G

Rendering (pengecatan) adalah sebuah cara dalam grafika computer untuk membuat pemandangan nampak ‘nyata’ atau visualisasi objek 3D menjadi riil. Untuk rendering objek 3D, ada beberapa factor yang mempengaruhi, diantaranya factor cahaya, sifat/karakteristik bahan, posisi kamera dan lain-lain. Suatu citra yang mengalami proses rendering yang baik akan menghasilkan gambar hasil akhir. Sedangkan tanpa rendering tidak akan menghasilkan gambar.

LIGHTING

Lighting atau pencahayaan merupakan suatu metode yang dapat kita terapkan pada proses rendering untuk menjadikan sebuah objek menjadi terlihat berbeda.

Dalam proses rendering , lighting dipengaruhi oleh factor-faktor sebagai berikut :

  1. jarak objek dengan sumber cahaya,
  2. posisi objek,
  3. bentuk permukaan objek

MODEL BAYANGAN

Sebuah objek akan memberikan sifat yang berbeda pada saat dikenai cahaya. Ada yang memantulkan, membiaskan ataupun menyerap cahaya.

WARNA

Terdapat empat dasar pendekatan pada proses pewarnaan untuk mengisi area atau sering dikenal dengan istilah fill area,yaitu : metode scanline, metode boundary fill dan metode flood fill.



INTERFACE :


SOURCE CODE :

//---------------------------------------------------------------------------

#include // membaca file vcl untuk memulai pembuatan program pada Borland C++ Builder

#pragma hdrstop // library yang sudah disediakan oleh Borland C++ Builder

#include "Unit1.h" // membaca file Unit1.h

//---------------------------------------------------------------------------

#pragma package(smart_init) // library yang sudah disediakan oleh Borland C++ Builder

#pragma resource "*.dfm" // library yang sudah disediakan oleh Borland C++ Builder

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

// memanggil fungsi TForm1

//------------------------------------------------------- PROGRAM STARTS HERE

Graphics::TBitmap* pix = new Graphics::TBitmap();

//komponen bitmap pada Borland untuk membuat objek baru

RGBTRIPLE* t;

int cycle = 0; à deklarasi cycle yang bertipe integer

int step;

bool stop = false;

//---------------------------------------------------- RENDER BITMAP FUNCTION

void renderBMP(Graphics::TBitmap* picture)

{

Form1->Canvas->Draw(0, 0, pix);

}

// memanggil fungsi renderBMP yaitu untuk menggambar dgn komponen canvas di form 1

//--------------------------------------------------- ALTER BITMAP FUNCTION

void bmpAlter(Graphics::TBitmap* picture)

{

stop = false;

// JIKA STOP BELUM DITEKAN MAKA BUTTON4 YAITU CANPTION STOP TIDAK ADA. SEHINGGA SAAT DIRENDER JIKA STOP MASIH BERNILAI STOP MAKA WARNA MASIH DIBACA SECARA BERULANG-ULANG

Form1->Button4->Caption = "Stop";

while (!stop)

{

for (step = 0; step <>

{

if (stop) break;

for (int y = 0; y <>Height; y++)

{

t = (RGBTRIPLE*)picture->ScanLine[y]; // MENDETEKSI GARIS-GARIS PADA GAMBAR

for (int x = 0; x <>Width; x++)

{

t->rgbtRed++;

t->rgbtGreen--;

t->rgbtBlue++;

t++;

}

}

Form1->Canvas->Draw(0, 0, pix);

cycle++;

if (cycle > 255) cycle = cycle -256;

Form1->Edit1->Text = cycle;

Application->ProcessMessages();

}

}

}

//-----------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (OpenPictureDialog1->Execute() )

pix->LoadFromFile(OpenPictureDialog1->FileName);

} à memanggil OpenPictureDialog1

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

renderBMP(pix);

} à buuton 2 memanggil renderBMP

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

bmpAlter(pix);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

stop = !stop;

if (stop) {

Button4->Caption = "Start";

}

else {

Button4->Caption = "Stop";

bmpAlter(pix);

}

Application->ProcessMessages();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

cycle = 0;

Form1->Edit1->Text = cycle;

}

// memanggil fungsi Edit1Change untuk mengubah objek cycle pada Form1

//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

delete pix;

}

//memanggil fungsi FormClose untuk menghapus pix atau melakukan TCloseAction &Action



OUTPUT :


Tidak ada komentar: