Program OGRE Saya yang Pertama

Posted: August 10, 2008 in OGRE 3D, Programming
Tags: , ,

Setelah dipelajari sampe otak panas, kemampuan OGRE saya yang nasibnya “gelap gak jelas” akhirnya menunjukkan titik terang….he he he

berikut ini aplikasi OGRE yang suderrrhana banget :)


#include 
#include 

class SampleApp : public ExampleApplication
{
public:
    // Basic constructor
    SampleApp()
    {}

protected:

    // Just override the mandatory create scene method
    void createScene(void)
    {
        // Create the SkyBox

        mSceneMgr->setSkyBox(true, "Examples/CloudyNoonSkyBox");  //latar langit

        // Create a light
        Light* myLight = mSceneMgr->createLight("Light0");
        myLight->setType(Light::LT_POINT);
        myLight->setPosition(0, 40, 0);
        myLight->setDiffuseColour(1, 1, 1);
        myLight->setSpecularColour(1, 1, 1);

        Entity *ent1 = mSceneMgr->createEntity( "Ogre", "ogrehead.mesh" );  //bikin objeknya (kepalanya ogre)
        SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "OgreNode" );
        node1->attachObject( ent1 );

        Entity *ent2 = mSceneMgr->createEntity( "Ninja", "ninja.mesh" );  //bikin objek ninja
        SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "NinjaNode", Vector3( 50, 0, 1000 ) );  // letaknya x=50, y=0, z=1000
        node2->attachObject( ent2 );

        node2->scale( 5, 2, 3 ); // memanipulasi skala dari objek 3D

        //ent1->setVisible(false);  //disable tampilan

    }
};

// ----------------------------------------------------------------------------
// Main function, just boots the application object
// ----------------------------------------------------------------------------
#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
{
    // Create application object
    SampleApp app;

    try
    {
        app.go();
    }
    catch( Exception& e )
    {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
        MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else

        std::cerr << &quot;An exception has occured: &quot; <scale( 5, 2, 3 );
&#91;/sourcecode&#93;

gunanya adalah memanipulasi ukuran objek, kalau kita memperbesar skala y nanti karakter kita akan menjadi jangkung, bisa juga diubah jadi gendut atau pendek :)

Dalam OGRE, terdapat berbagai macam jenis vektor, yang saya bahas ini vektor 3D, nah, kalau sumbu x itu adalah garis dari sebelah kiri monitor sampai sebelah kanan monitor, subu y adalah bagian bawah monitor ke bagian atas monitor, sedangkan sumbu z berasal dari dalam monitor lalu ke luar monitor.

kalau kita mau merotasi objek pada sumbu x

&#91;sourcecode language='cpp'&#93;
node2->pitch( Degree( -90 ) );

kalau kita mau merotasi objek pada sumbu y

node1->yaw( Degree( -90 ) );

kalau kita mau merotasi objek pada sumbu z

node3->roll( Degree( -90 ) );

nih…screenshotnya:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s