Kamis, 26 Mei 2011

MEMBUAT PEWARNAAN DAN SHADOWING PADA OGRE



Kita akan membahas cara pewarnaan dan shadowing pada Ogre, pewarnaan pada ogre adalah hasil dari perpaduan warna RGB (red green blue) dengan parameter menggunakan float yaitu berkisar antara 0.0 sampai 1.0. dengan sintaks awalnya adalah ColourValue(float red,float green, float blue) .

Contoh constanta warna built-in yang terdapat pada OGRE, diantaranya :

Ø static const Black = ColourValue(0.0,0.0,0.0)

Ø static const White=ColourValue(1.0,1.0,1.0)

Ø static const Red = ColourValue(1.0,0.0,0.0)

Ø static const Green = ColourValue(0.0,1.0,0.0)

Ø static const Blue = ColourValue(0.0,0.0,1.0)

Pada Ogre, shadowing digunakan untuk memberi bayangan pada object yang dihasilkan. Sehingga karakter yang kita buat dapat memiliki bayangan, dan arah bayangan di tentukan dengan sintaks-sintaks.

Listing program :

/*

* belajarOgre.cpp

*

* Created on: Mar 13, 2011

* Author: Diva

*/

#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {

public:

BelajarOgre(){

}

~BelajarOgre(){

}

protected:

virtual void createCamera(void)

{

mCamera = mSceneMgr->createCamera("PlayerCam");

mCamera->setPosition(Vector3(500,250,50));

mCamera->lookAt(Vector3(0,0,80));

mCamera->setNearClipDistance(5);

}

virtual void createViewports(void)

{

Viewport* vp = mWindow->addViewport(mCamera);

vp->setBackgroundColour(ColourValue(1,1,1));

mCamera->setAspectRatio(Real(vp->getActualWidth()) /

Real(vp->getActualHeight()));

}

void createScene(void){

//Light *light;

//mSceneMgr utk manage semua semua yg tampil pd screen

mSceneMgr->setAmbientLight(ColourValue(1,1,1));

mSceneMgr->setShadowTechnique( SHADOWTYPE_STENCIL_ADDITIVE );

//Entity ad objek yg bs dirender discene

Entity *ent1 = mSceneMgr->createEntity("Robot","robot.mesh");

Entity *ent2 = mSceneMgr->createEntity("Robot2","robot.mesh");

ent2->setCastShadows(true);

SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");

SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("Robot2Node");

//attach entity ke scenenode ut beri lokasi render robot

node1->attachObject(ent1);

node2->attachObject(ent2);

node2->translate(100,0,0);

}

};

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

#define WIN32_LEAN_AND_MEAN

#include "windows.h"

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)

#else

int main(int argc, char **argv)

#endif

{

//bikin objek aplikasi

BelajarOgre app;

try {

app.go();

} catch (Exception e) {

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

MessageBox(NULL,e.what(),"Terjadi Error!",MB_OK | MB_ICONERROR |MB_TASKMODAL);

#else

fprintf(stderr,"Terjadi Error = %s\n",e.what());

#endif

}

return 0;

}

Keterangan Program :

mCamera = mSceneMgr->createCamera("PlayerCam");

mCamera->setPosition(Vector3(500,250,50));

mCamera->lookAt(Vector3(0,0,80));

mCamera->setNearClipDistance(5);

Perintah membuat kamera dengan nama PlayerCam, kemudian perintah menset posisi kamera, selanjutnya perintah menset arah pandang kamera. Lalu perintah menentukan jarak terdekat yang terlihat kamera. Untuk menset jarak terjauh menggunakan setFarClipDistance

vp->setBackgroundColour(ColourValue(1,1,1));

Perintah untuk pewarnaan, yaitu pewarnaan background, dengan nilai float R,G,B nya adalah 1, sehingga menghasilkan warna putih

mSceneMgr->setShadowTechnique( SHADOWTYPE_STENCIL_ADDITIVE );

Perintah untuk shadowing.

Entity *ent1 = mSceneMgr->createEntity("Robot","robot.mesh");

Perintah untuk menciptakan entity / object.

node2->translate(100,0,0);

Perintah untuk translasi atau pergeseran.

1 komentar:

Riski Syendi mengatakan...

kita juga punya nih artikel mengenai 'Ogre3D', silahkan dikunjungi dan dibaca , berikut linknya
http://repository.gunadarma.ac.id/bitstream/123456789/1302/1/50407759.pdf
terimakasih

Posting Komentar