Sabtu, 05 Juni 2010

Contoh Aplikasi Ogre 3D

Berikut adalah source code untuk pembuatan aplikasi : 

#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {
public:
            BelajarOgre(){
            }
            ~BelajarOgre(){
            }
protected:
            void createScene(void){
Entity *ent1;
            Entity *ent2;
        mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE); 
      mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");
                        mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
     
SceneNode* headNode = mSceneMgr->getRootSceneNode()-> createChildSceneNode();
                        ent1 = mSceneMgr->createEntity("Ufo","ufo.mesh");
                        ent2 = mSceneMgr->createEntity("Ufo2","ufo.mesh");
            ent1->setCastShadows(true);
            ent2->setCastShadows(true);
             Plane plane(Vector3::UNIT_Y, 0);   
             MeshManager::getSingleton().createPlane("ground",
           ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
           1500,1500,20,20,true,1,3,5,Vector3::UNIT_Z);
          Entity *ent12 = mSceneMgr->createEntity("GroundEntity", "ground");       
      mSceneMgr->getRootSceneNode()->createChildSceneNode()-> attachObject(ent12);
               ent12->setMaterialName("Examples/Rockwall");
       ent12->setCastShadows(false);
Light *light;
               light = mSceneMgr->createLight("Light1");
       light->setType(Light::LT_POINT);
       light->setPosition(Vector3(0, 450, 450));
               light->setDiffuseColour(1.0, 0.0, 0.0);
       light->setSpecularColour(1.0, 0.0, 0.0);
                light = mSceneMgr->createLight("Light2");
       light->setType(Light::LT_SPOTLIGHT);
       light->setDiffuseColour(ColourValue(.25, .25, 0));
       light->setSpecularColour(ColourValue(.25, .25, 0));
        light->setDirection(Vector3( 0, -1, 1 ));             
SceneNode *node1 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode",Vector3(0,50,300));
SceneNode *node2 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode2", Vector3(200,250,200))
            node1->attachObject(ent1);
            node2->attachObject(ent2);
            mCamera->setPosition(200,250,730);
                        mCamera->lookAt(-100,75,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
                        MessageBoxA(NULL,e.what(),"Terjadi Error!",MB_OK | MB_ICONERROR |MB_TASKMODAL);
#else
                        fprintf(stderr,"Terjadi Error = %s\n",e.what());
#endif
            }
            return 0;
}
 

Penjelasan Source Code

Aplikasi yang dibuat  merupakan aplikasi yang menampilkan objek ufo.mesh kedalam suatu layout background bergambar planet. Pada ufo itu terjadi pencahayaan hingga memiliki bayangan. Objek ufo tersebut ada dua, dimana peletakan koordinat ufo tersebut berbeda sehingga berbeda posisi. Posisi cahaya yang datang terletak diatas kedua ufo tersebut. Sehingga menimbulkan bayangan. Dan karena letak ufo itu berbeda jarak dengan cahaya yang datang, maka bayangan yang dihasilkanpun berbeda.

Berikut penjelasan source code tersebut diatas :



#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {

public:

            BelajarOgre(){

            }

            ~BelajarOgre(){

            }





Pertama kita mendeklarasikan header file. Header file tersebut adalah #include "ExampleApplication.h". Selanjutnya dideklarasikan nama class yang dibuat. Yaitu Belajar Ogre. Pada class tersebut terdapat method dari class BelajarOgre tersebut.

Untuk memulai penggambaran layar maka kita masuk ke method createScene. Pada createScene ini pertama dilakukan penginisialisasian variabel yang digunakan :



protected:

            void createScene(void){

Entity *ent1;

            Entity *ent2;



Dilanjutkan dengan kkode untuk memberi bayangan. Tipe bayangan yang digunakan adalah SHADOWTYPE_TEXTURE_MODULATIVE. Kemudian dilakukan pengesetan shadow tersebut ke mSceneMgr. Pada bayangan ini diberi nilai AmbientLight dengan nilai warna untuk RGB (0.2, 0.2, 0.2).



mSceneMgr-> setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE); 

mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");

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

      

Selanjutnya dalah pendeklarasian untuk menambah objek. Untuk ent1 adalah untuk ufo.mesh yang pertama dan ent2 adalah untuk objek ufo.mesh yang kedua. Dan dilanjutkan dengan meng-set shadow pada kedua obkjek tersebut.



SceneNode* headNode = mSceneMgr->getRootSceneNode()-> createChildSceneNode();

                        ent1 = mSceneMgr->createEntity("Ufo","ufo.mesh");

                        ent2 = mSceneMgr->createEntity("Ufo2","ufo.mesh");

            ent1->setCastShadows(true);

            ent2->setCastShadows(true);

           



Selanjutnya adalah untuk memberi suatu latar bidang bagi objek. Latar tersebut dengan lebar 1500 dan panjang 1500. Dilanjutkan dengan membubuhkan latar tersebut ke layar.



             Plane plane(Vector3::UNIT_Y, 0);               

             MeshManager::getSingleton().createPlane("ground",

           ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,

           1500,1500,20,20,true,1,3,5,Vector3::UNIT_Z);

          Entity *ent12 = mSceneMgr->createEntity("GroundEntity", "ground");       

      mSceneMgr->getRootSceneNode()->createChildSceneNode()-> attachObject(ent12);

               ent12->setMaterialName("Examples/Rockwall");

       ent12->setCastShadows(false);



Dilanjutkan dengan pencahayaan. Pada pencahayaan ini diletakan pada posisi vektor 450 untuk Y dan 450 untuk Z. Dengan tipe cahaya yang digunakan adalah LT_POINT dan LT_SPOTLIGHT. Jadi pencahayaan dari dua sumber cahaya dengan tipe yang berbeda.





Light *light;

               light = mSceneMgr->createLight("Light1");

       light->setType(Light::LT_POINT);

       light->setPosition(Vector3(0, 450, 450));

               light->setDiffuseColour(1.0, 0.0, 0.0);

       light->setSpecularColour(1.0, 0.0, 0.0);

                light = mSceneMgr->createLight("Light2");

       light->setType(Light::LT_SPOTLIGHT);

       light->setDiffuseColour(ColourValue(.25, .25, 0));

       light->setSpecularColour(ColourValue(.25, .25, 0));

        light->setDirection(Vector3( 0, -1, 1 ));

                       

Selanjutnya untuk penempatan objek digunakan variabel node1 dan node2. Yaitu diletakan berdasarkan nilai vektor.

SceneNode *node1 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode",Vector3(0,50,300));

SceneNode *node2 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode2", Vector3(200,250,200));

            node1->attachObject(ent1);

            node2->attachObject(ent2);





Pada aplikasi ini juga diletakan kamera. Kamera tersebut didefinisikan sebagai variable mCamera.





mCamera->setPosition(200,250,730);

                        mCamera->lookAt(-100,75,0);

            }

};





Seleksi kondisi berikut adalah merpakan seleksi untuk dapat atau tidaknya aplikasi tersebut di jalankan. Jika terjadi kesalahan maka akan tampil suatu message box dengan pesan kesalahan.





#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{

            BelajarOgre app;

            try {

                        app.go();

            } catch (Exception e) {

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

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

#else

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

#endif

            }

            return 0;

}

Setelah selesai lakukan proses Build dengan memilih menubar Build > Buid Solution. Jika sukses kemudian Run. Maka akan tampil windows sebagai berikut :



 Tekan tombol OK maka akan tampil aplikasi yang telah kita buat tersebut.
 

Bada Operating System

Tak mau kalah dalam meramaikan dunia aplikasi mobile, Samsung akhir tahun 2009 lalu telah meluncurkan sistem operasi BADA untuk ponsel cerdasnya. Bada yang berarti lautan dalam bahasa korea ini diluncurkan sebagai open platform dan tentunya akan menjadi pesaing bagi open sistem operasi mobile lainnya seperti Symbian, Android, dan LiMo.

Baru baru ini, Samsung bahkan telah merilis BADA SDK 2 yang tentunya menjadi kabar yang menggembirakan bagi para pengembang. Bada SDK 2 tersebut telah dilengkapi dengan IDE (Integrated Development Environment), Simulator, UI builder, serta sample aplikasi beserta tutorialnya. Framework SDK terbaru ini juga telah mendukung TouchWiz terbaru, Adobe Flash, sensor gerak, getaranhingga deteksi wajah.

Ponsel cerdas pertama sistem operasi Bada, Samsung Wave S8500 dikabarkan akan hadir kepasaran pada akhir mei 2010 dimana dikabarkan telah mampu merekan video 720p.