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 << "An exception has occured: " <scale( 5, 2, 3 );
[/sourcecode]
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
[sourcecode language='cpp']
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: