Postingan kali ini,saya akan membahas tentang wirausaha.Well,saya memang belum pernah berwirausaha sih,tapi di postingan kali ini saya akan membahas rumah makan mie ayam yang dekat dari rumah saya.
Rumah makan mie ayam ini ini didirikan karena permintaan masyarakat yang tinggi akan Rumah Makan yang nyaman, murah namun tetap higienis dan menyehatkan.
Sebagian besar rumah makan mie ayam menggunakan bahan-bahan yang mengandung MSG.Maka ide bisnis dari rumah makan mie ayam ini adalah bagaimana membuat suatu masakan yang enak dan murah tetapi tidak mengandung bahan MSG sehingga makanan menyehatkan dan dapat diterima oleh semua kalangan.
Perencanaan dalam mendirikan rumah makan mie ayam ini terdiri dari:
- RENCANA PRODUKSI
• Kapasitas Produksi
Dalam hal ini rumah terdapat rencana kapasitas dimana rumah makan mie ayam menentukan rencana kapasitas berdasarkan jumlah pengunjung yang datang berkunjung.Sehingga dalam memproduksi bahan baku mie ayam harus sesuai target yang direncanakan.Misalnya dengan menargetkan 100 porsi perhari,maka dalam penjualannya 100 porsi itu harus habis.Jika tidak habis,bahan baku tidak boleh dijual besoknya.Sehingga bahan baku yang dipergunakan untuk besoknya masih fresh
• Pengendalian Kualitas
Pengendalian kualitas perlu diaktualisasikan agar kualitas serta kenyamanan para customer rumah makan mie ayam tetap terjaga.
Untuk memenuhi hal tersebut maka perlu dilakukan upaya-upaya sebagai berikut :
1. Menjaga kebersihan. Kebersihan merupakan poin penting dalam menjalankan suatu usaha. Kenyamanan konsumen menjadi prioritas untuk mempertahankan kualitas
2. Selektivitas karyawan yang memiliki kemampuan yang kompeten di bidangnya, dan mampu bekerja secara profesional
3. Selalu menjaga kualitas bahan – bahan makanan
4. Memberikan pelayanan terbaik dan bersikap ramah kepada konsumen
- RENCANA LOKASI
Dalam menentukan rencana lokasi harus dilakukan survey.Jadi survey tersebut bertujuan apakah di daerah yang akan di jadikan lokasi tersebut belum ada Rumah Makan sejenis, sehingga memungkinkan untuk mendapatkan serta meningkatkan jumlah pengunjung setiap harinya
- RENCANA PEMASARAN
• Strategi Produk
Untuk rencana pemasarannya,rumah makan mie ayam ini hanya mendirikan satu kios.Memberikan slogan “tanpa MSG” dan memasang atribut seperti spanduk pada kios sehingga menarik perhatian orang-orang yang melewati rumah makan ini.
• Strategi Harga
Rumah makan mie ayam, memberikan harga yang terjangkau dari kalangan mahasiswa hingga kalangan eksecutive muda. Harga dari produk – produk yang ditawarkan
Rp.5000-7000/perporsi dan minumannya mulai dari Rp 1000-3000/satuan.Dari terjangkaunya harga,dapat membuat orang-orang tertarik untuk mencoba sehingga kemudian hari akan datang lagi karena kepuasan dari produk dan harga.
• Strategi Promosi
Rumah makan mie ayam ini tidak menyebarkan brosur-brosur,jadi hanya berita dari mulut ke mulut.Dan sekarang rumah makan mie ayam ini membuat website sendiri untuk mempromosikan produknya.
- RENCANA FINANSIAL
• Proyeksi Kebutuhan Biaya
Dalam menjalankan suatu usaha, kebutuhan biaya merupakan hal terpenting yang termasuk ke dalam modal awal. Kebutuhan biaya tersebut dijadikan sebagai sumber dana untuk modal awal memulai usaha.
• Rencana Biaya Operasional
Terdiri dari bahan baku perhari dan tenaga kerja per bulan
Rencana finansial dinilai sangat penting karena bertujuan untuk meminimalisasi resiko dan memaksimalkan "keuntungan" melalui perencanaan dan pengelolaan keuangan secara sistematik. "Keuntungan" yang dimaksudkan merupakan nilai lebih yang diperoleh melalui operasi usaha, baik dalam bentuk material maupun nonmaterial.
TENAGA KERJA
Untuk PEREKRUTAN TENAGA KERJA,rumah makan mie ayam ini awalnya dikelapai oleh pemilik sebagai chefnya dan dibantu oleh anggota keluarga 1-2 orang.Tetapi ketika rumah makan mie ayam ini makin banyak pengunjung,rumah makan mie ayam ini mengalami keuntungan yang drastis secara finansial.
Lalu rumah makan mie ayam merekrut tenaga kerja.
Mungkin perekrutannya tidak seperti perusahaan-perusahaan yang berskala menengah hingga besar,yang dalam membuka lowongan pekerjaan harus memberikan syarat menyerahkan CV dan surat lamaran.Tetapi rumah makan mie ayam ini memperlukan tenaga kerja yang ulet,tekun,rajin dan mau diajak kerja sama.Jadi rumah makan mie ayam ini dapat meperkerjakan orang-orang yang berpendidikan rendah tetapi yang mau berusaha dan giat bekerja.
Sekarang rumah makan mie ayam ini berkembang sangat pesat.Tenaga kerjanya juga banyak dan diberikan baju seragam yang berbeda-beda setiap harinya
View full article and comment >>>
Minggu, 23 Oktober 2011
Rabu, 11 Mei 2011
LP pertemuan 8 AP2A kelas 1IA12
sorry ya lama bgt (>.<)
LP:
1.Jelaskan apa yang kamu ketahui tentang menu!
2.Sebutkan dan jelaskan elemen-elemen yang dimiliki oleh menu!
Sebarin ke tmn2nya yaaaa :)
View full article and comment >>>
Peran karakter pada story game "Scooby Doo and the Creepy Castle Game"

Pada postingan sebelumnya,saya sudah menjelaskan bagaimana story dan cara bermain game ini.
Nah postingan kali ini,saya akan menjelaskan peran scooby doo dalam menjalankan stage-stage dalam game ini.
Peran scooby doo dalam setiap stage berbeda-beda,walaupun cara bermainnya masih sama.
Pada stage pertama scooby doo harus mencari dan membebaskan Daphne dari jebakan hantu didalam kastil (Daphne memiliki beberapa karakteristik yakni berambut panjang dan kemerahan, dan memakai ikat rambut hijau, serta memakai pakaian berwana serba ungu. Juga memakai syal berwarna kehijauan, dan kaos kaki panjang berwarna merah muda dan sepatu berwarna ungu.)
Pada stage kedua,misi scooby doo yaitu mencari dan membebaskan Velma (Karakter ini juga memiliki rambut berwarna merah terang, memakai pakaian berwarna oranye, rok berwarna merah dan sepatu serta kaos kaki dengan warna merah dan oranye.Velma juga menggunakan kacamata).Pada stage kedua,misi yang harus dicapai scooby doo lebih sulit karena jebakannya lebih banyak dan scooby harus berhati-hati.
Pada stage ketiga,misi scooby doo yaitu mencari dan membebaskan Fred (Karakter ini memakai dasi berwarna oranye, pakaian kerja berwarna putih dan biru, celana panjang berwrna biru tua dan sepatu coklat).Pada stage ketiga ini,selain lebih sulit lagi jebakan-jebakan y ang menghadang scooby,perjalanan pencarian ini lebih lama,jadi scooby harus lebih waspada pada jebakan-jebakan hantu yang membuat scooby jadi takut.
Jika scooby doo mampu menyelamatkan semua teman-temannya,maka scooby sudah berhasil menyelamatkan hari itu dan memecahkan misteri yang terdapat pada kastil yang mengerikan
View full article and comment >>>
Sabtu, 07 Mei 2011
Story games "Scooby Doo and the Creepy Castle Game"
Pada postingan kali ini,saya akan menjelaskan cara permainan dan story pada games ini.
Awal cerita dalam game ini,ada hantu yang menjebak gang scooby doo (Freddie Jones,Velma Dinkley,Daphne Blake)didalam kastil yang mengerikan.
Lalu Norville "Shaggy" Rogers Matthville alias Shaggy menyuruh Scooby doo untuk melihat ke kastil,sementara Shaggy tetap diluar untuk menjaga mobil van.Lalu scooby masuk dan memulai petualangannya \(^_^)/
Selanjutnya saya akan menjelaskan aturan permainan dalam games ini.
1.Kita punya 3 kesempatan (3 kali mencoba) untuk menemukan geng scooby
2.Kamu akan kehilangan kesempatan itu jika faktor ketakutan scooby menjadi tinggi.
Lihatlah snack scooby untuk membantu menjaga faktornya tetap rendah
3.Ketika scooby sedang berjalan,klik pada object untuk menempatkannya di inventori kita.
4.Klik pada pintu untuk membuka atau menutupnya
5.Gunakan object yang kamu temukan untuk terjaga dari hantu
6.Contohnya,kamu dapat menyegel pintu yang tertutup dengan menarik papan ke pintu
Nah,dalam perjalanan didalam kastil,scooby akan diganggu oleh hantu terus menerus.Kita harus menemukan cara-cara agar terjaga dari hantu dan scooby tidak ketakutan.Nah jika misi pertama selesai dan menemukan salah satu teman dalam gang,maka akan dilanjutkan ke misi selanjutnya dengan tempat yang berbeda untuk menemukan teman yang lain.
View full article and comment >>>
Karakter SCOOBY DOO pada games

Oke,pada postingan kali ini,saya akan membahas karakter dari sebuah game.
Game yang saya bicarakan kali ini adalah "Scooby Doo and the Creepy Castle Game".
Tentu saja,tokoh utama dalam game ini adalah scooby doo.
Game ini merupakan game online yang sangat mudah dimainkan,dapat kamu klik dan mainkan game ini disini klik untuk games scooby doo
Oke,saya mulai pembahasan karakter scooby ini..
Seperti yang kita tahu,sama halnya dengan yang ada dilayar kaca,scooby doo ini adalah seekor anjing yang penakut dan makannya sangat banyak.
Karakter ini merupakan peliharaan Norville "Shaggy" Rogers.
Karakter ini membantu dalam memecahkan masalah. Mampu berbicara, namun dengan ucapan yang sulit dimengerti. Hal itu disebabkan karena dalam bahasa apapun, Ucapan diawali dengan huruf "R", seperti "Rhaggie" untuk Shaggy, "Rrantu" untuk Hantu, dan lain-lain. Scooby-Doo Sangat menyukai snack Scooby. Hal yang membuat takut adalah hantu. Namun, dia adalah senjata yang paling ampuh untuk menangkap sang hantu, biasanya jebakan yang disediakan akan gagal, namun pasti ujungnya kembali tertangkap.
sumber:
wikipedia
View full article and comment >>>
Senin, 11 April 2011
Membuat animasi dari Ogre
Oke,postingan kali ini,saya akan memberikan listing untuk membuat project dalam ogre.
Mungkin agak pusing,karena saya pun sebenarnya masih "newbie" dalam ogre.
Untuk object,saya menggunakan object fish.mesh yang sudah disediakan (jadi saya tidak mengubah object lg).
Tapi,jika ingin membuat object sendiri dari blender,membuat skeleton,lalu mengconvertnya menjadi mesh,kamu bisa lihat dari sumber yang ini~http://crystalforest.wordpress.com karena dari sumber tersebutlah saya belajar :D.
oke saya mulai ya..
Setiap kita akan membuat project baru,dalam eclipse,kita harus selalu menkofigurasi(dapat dilihat pada post blog yang lalu)~lihat disini atau lihat saja disini
Nah,setelah kita mengkonfigurasinya,pastinya pada lembar kerja eclipse,kita harus memasukkan listing program (dengan bahasa C++).
#include "ExampleApplication.h"
#include < ogretexture.h >
#include < OgreHardwarePixelBuffer.h >
#include < OgreTextureManager.h >
#include < OgreLogManager.h >
#include < sstream >
TexturePtr ptex;
HardwarePixelBufferSharedPtr buffer;
Overlay* overlay;
static const int reactorExtent = 130; // must be 2^N + 2
uint32 clut[1024];
AnimationState *swim;
// Nano fixed point library
#define FROMFLOAT(X) ((int)((X)*((float)(1<<16))))
#define TOFLOAT(X) ((float)((X)/((float)(1<<16))))
#define MULT(X,Y) (((X)*(Y))>>16)
ColourValue HSVtoRGB( float h, float s, float v )
{
int i;
ColourValue rv(0.0f, 0.0f, 0.0f, 1.0f);
float f, p, q, t;
h = fmodf(h, 360.0f);
h /= 60.0f; // sector 0 to 5
i = (int)floor( h );
f = h - i; // factorial part of h
p = v * ( 1.0f - s );
q = v * ( 1.0f - s * f );
t = v * ( 1.0f - s * ( 1.0f - f ) );
switch( i ) {
case 0: rv.r = v; rv.g = t; rv.b = p; break;
case 1: rv.r = q; rv.g = v; rv.b = p; break;
case 2: rv.r = p; rv.g = v; rv.b = t; break;
case 3: rv.r = p; rv.g = q; rv.b = v; break;
case 4: rv.r = t; rv.g = p; rv.b = v; break;
default: rv.r = v; rv.g = p; rv.b = q; break;
}
return rv;
}
class DynTexFrameListener : public ExampleFrameListener
{
private:
static float fDefDim;
static float fDefVel;
float tim;
int *chemical[2];
int *delta[2];
size_t mSize;
int dt,hdiv0,hdiv1; // diffusion parameters
int F,k; // reaction parameters
bool rpressed;
public:
DynTexFrameListener(RenderWindow* win, Camera* cam) : ExampleFrameListener( win, cam )
{
tim = 0;
rpressed = false;
// Create colour lookup
for(unsigned int col=0; col<1024; col++)
{
ColourValue c;
c = HSVtoRGB((1.0f-col/1024.0f)*90.0f+225.0f, 0.9f, 0.75f+0.25f*(1.0f-col/1024.0f));
c.a = 1.0f - col/1024.0f;
PixelUtil::packColour(c, PF_A8R8G8B8, &clut[col]);
}
// Setup
LogManager::getSingleton().logMessage("Creating chemical containment");
mSize = reactorExtent*reactorExtent;
chemical[0] = new int [mSize];
chemical[1] = new int [mSize];
delta[0] = new int [mSize];
delta[1] = new int [mSize];
dt = FROMFLOAT(2.0f);
hdiv0 = FROMFLOAT(2.0E-5f/(2.0f*0.01f*0.01f)); // a / (2.0f*h*h); -- really diffusion rate
hdiv1 = FROMFLOAT(1.0E-5f/(2.0f*0.01f*0.01f)); // a / (2.0f*h*h); -- really diffusion rate
//k = FROMFLOAT(0.056f);
//F = FROMFLOAT(0.020f);
k = FROMFLOAT(0.0619f);
F = FROMFLOAT(0.0316f);
resetReactor();
fireUpReactor();
updateInfoParamF();
updateInfoParamK();
updateInfoParamA0();
updateInfoParamA1();
LogManager::getSingleton().logMessage("Cthulhu dawn");
}
void resetReactor()
{
LogManager::getSingleton().logMessage("Facilitating neutral start up conditions");
for(unsigned int x=0; x<<16)-U);
delta[1][idx] += UVV - MULT(F+k,V);
idx++;
}
idx += 2;
}
// Update concentrations
for(x=0; xlock(HardwareBuffer::HBL_DISCARD);
const PixelBox &pb = buffer->getCurrentLock();
unsigned int idx = reactorExtent+1;
for(unsigned int y=0; y<(reactorExtent-2); y++) {
uint32 *data = static_cast(pb.data) + y*pb.rowPitch;
int *chem = &chemical[0][idx];
for(unsigned int x=0; x<(reactorExtent-2); x++) {
data[x] = clut[(chem[x]>>6)&1023];
}
idx += reactorExtent;
}
buffer->unlock();
}
// GUI updaters
void updateInfoParamK()
{
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_K") \
->setCaption("[1/2]k: "+StringConverter::toString(TOFLOAT(k)));
}
void updateInfoParamF()
{
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_F") \
->setCaption("[3/4]F: "+StringConverter::toString(TOFLOAT(F)));
}
void updateInfoParamA0()
{
// Diffusion rate for chemical 1
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_A0") \
->setCaption("[5/6]Diffusion 1: "+StringConverter::toString(TOFLOAT(hdiv0)));
}
void updateInfoParamA1()
{
// Diffusion rate for chemical 2
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_A1") \
->setCaption("[7/8]Diffusion 2: "+StringConverter::toString(TOFLOAT(hdiv1)));
}
bool frameStarted( const FrameEvent& evt )
{
using namespace OIS;
if( ExampleFrameListener::frameStarted( evt ) == false )
return false;
if( mKeyboard->isKeyDown( KC_1 ) ) {
k -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamK();
}
if( mKeyboard->isKeyDown( KC_2 ) ) {
k += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamK();
}
if( mKeyboard->isKeyDown( KC_3 ) ) {
F -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamF();
}
if( mKeyboard->isKeyDown( KC_4 ) ) {
F += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamF();
}
if( mKeyboard->isKeyDown( KC_5 ) ) {
hdiv0 -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA0();
}
if( mKeyboard->isKeyDown( KC_6 ) ) {
hdiv0 += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA0();
}
if( mKeyboard->isKeyDown( KC_7 ) ) {
hdiv1 -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA1();
}
if( mKeyboard->isKeyDown( KC_8 ) ) {
hdiv1 += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA1();
}
if( mKeyboard->isKeyDown( KC_0 ) && !rpressed ) {
// Reset 0
resetReactor();
fireUpReactor();
rpressed = true;
} else {
rpressed = false;
}
for(int x=0; x<10; x++)
runStep();
buildTexture();
swim->addTime(evt.timeSinceLastFrame);
return true;
}
virtual ~DynTexFrameListener(void)
{
delete [] chemical[0];
delete [] chemical[1];
delete [] delta[0];
delete [] delta[1];
}
};
float DynTexFrameListener::fDefDim = 25.0f;
float DynTexFrameListener::fDefVel = 50.0f;
class DynTexApplication : public ExampleApplication
{
public:
DynTexApplication() {}
protected:
virtual void createFrameListener(void)
{
mFrameListener= new DynTexFrameListener(mWindow, mCamera);
mFrameListener->showDebugOverlay(true);
mRoot->addFrameListener(mFrameListener);
}
virtual void createViewports(void)
{
// Create one viewport, entire window
Viewport* vp = mWindow->addViewport(mCamera);
vp->setBackgroundColour(ColourValue(0,0,0));
// Alter the camera aspect ratio to match the viewport
mCamera->setAspectRatio(
Real(vp->getActualWidth()) / Real(vp->getActualHeight()));
}
// Just override the mandatory create scene method
void createScene(void)
{
// Create dynamic texture
ptex = TextureManager::getSingleton().createManual(
"DynaTex","General", TEX_TYPE_2D, reactorExtent-2, reactorExtent-2, 0, PF_A8R8G8B8,
TU_DYNAMIC_WRITE_ONLY);
buffer = ptex->getBuffer(0, 0);
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.6, 0.6, 0.6));
mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox", 50 );
//mRoot->getRenderSystem()->clearFrameBuffer(FBT_COLOUR, ColourValue(255,255,255,0));
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
l->setDiffuseColour(0.75, 0.75, 0.80);
l->setSpecularColour(0.9, 0.9, 1);
l->setPosition(-100,80,50);
mSceneMgr->getRootSceneNode()->attachObject(l);
Entity *planeEnt = mSceneMgr->createEntity("TexPlane1", Ogre::SceneManager::PT_PLANE);
// Give the plane a texture
planeEnt->setMaterialName("Examples/DynaTest");
SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-100,-40,-100));
node->attachObject(planeEnt);
node->setScale(3.0f, 3.0f, 3.0f);
// Create objects
SceneNode *blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-200,0,50));
Entity *ent2 = mSceneMgr->createEntity( "knot", "knot.mesh" );
ent2->setMaterialName("Examples/DynaTest4");
blaNode->attachObject( ent2 );
blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(200,-90,50));
ent2 = mSceneMgr->createEntity( "knot2", "knot.mesh" );
ent2->setMaterialName("Examples/DynaTest2");
blaNode->attachObject( ent2 );
blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-110,200,50));
// Cloaked fish
ent2 = mSceneMgr->createEntity( "knot3", "fish.mesh" );
ent2->setMaterialName("Examples/DynaTest3");
swim = ent2->getAnimationState("swim");
swim->setEnabled(true);
blaNode->attachObject( ent2 );
blaNode->setScale(50.0f, 50.0f, 50.0f);
//TextureManager::getSingleton().getByName("RustySteel.jpg");
std::stringstream d;
d << "HardwarePixelBuffer " << buffer->getWidth() << " " << buffer->getHeight() << " " << buffer->getDepth();
LogManager::getSingleton().logMessage(d.str());
buffer->lock(HardwareBuffer::HBL_NORMAL);
const PixelBox &pb = buffer->getCurrentLock();
d.str("");
d << "PixelBox " << pb.getWidth() << " " << pb.getHeight() << " " << pb.getDepth() << " " << pb.rowPitch << " " << pb.slicePitch << " " << pb.data << " " << PixelUtil::getFormatName(pb.format);
LogManager::getSingleton().logMessage(d.str());
buffer->unlock();
// show GUI
overlay = OverlayManager::getSingleton().getByName("Example/DynTexOverlay");
overlay->show();
}
void destroyScene(void)
{
// Free resource pointers before shutdown
ptex.setNull();
buffer.setNull();
}
};
#ifdef __cplusplus
extern "C" {
#endif
#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
DynTexApplication app;
try {
app.go();
} catch( Ogre::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: " <<
e.getFullDescription().c_str() << std::endl;
#endif
}
return 0;
}
#ifdef __cplusplus
}
#endif
Jadi,pada listing diatas,akan menghasilkan output berbentuk texture.
Nah,jika kita memencet angka 7 atau 8 dan 4 atau 5 akan memberikan efek perubahan texture.
Hasilnya menjadi seperti ini:




View full article and comment >>>
Mungkin agak pusing,karena saya pun sebenarnya masih "newbie" dalam ogre.
Untuk object,saya menggunakan object fish.mesh yang sudah disediakan (jadi saya tidak mengubah object lg).
Tapi,jika ingin membuat object sendiri dari blender,membuat skeleton,lalu mengconvertnya menjadi mesh,kamu bisa lihat dari sumber yang ini~http://crystalforest.wordpress.com karena dari sumber tersebutlah saya belajar :D.
oke saya mulai ya..
Setiap kita akan membuat project baru,dalam eclipse,kita harus selalu menkofigurasi(dapat dilihat pada post blog yang lalu)~lihat disini atau lihat saja disini
Nah,setelah kita mengkonfigurasinya,pastinya pada lembar kerja eclipse,kita harus memasukkan listing program (dengan bahasa C++).
#include "ExampleApplication.h"
#include < ogretexture.h >
#include < OgreHardwarePixelBuffer.h >
#include < OgreTextureManager.h >
#include < OgreLogManager.h >
#include < sstream >
TexturePtr ptex;
HardwarePixelBufferSharedPtr buffer;
Overlay* overlay;
static const int reactorExtent = 130; // must be 2^N + 2
uint32 clut[1024];
AnimationState *swim;
// Nano fixed point library
#define FROMFLOAT(X) ((int)((X)*((float)(1<<16))))
#define TOFLOAT(X) ((float)((X)/((float)(1<<16))))
#define MULT(X,Y) (((X)*(Y))>>16)
ColourValue HSVtoRGB( float h, float s, float v )
{
int i;
ColourValue rv(0.0f, 0.0f, 0.0f, 1.0f);
float f, p, q, t;
h = fmodf(h, 360.0f);
h /= 60.0f; // sector 0 to 5
i = (int)floor( h );
f = h - i; // factorial part of h
p = v * ( 1.0f - s );
q = v * ( 1.0f - s * f );
t = v * ( 1.0f - s * ( 1.0f - f ) );
switch( i ) {
case 0: rv.r = v; rv.g = t; rv.b = p; break;
case 1: rv.r = q; rv.g = v; rv.b = p; break;
case 2: rv.r = p; rv.g = v; rv.b = t; break;
case 3: rv.r = p; rv.g = q; rv.b = v; break;
case 4: rv.r = t; rv.g = p; rv.b = v; break;
default: rv.r = v; rv.g = p; rv.b = q; break;
}
return rv;
}
class DynTexFrameListener : public ExampleFrameListener
{
private:
static float fDefDim;
static float fDefVel;
float tim;
int *chemical[2];
int *delta[2];
size_t mSize;
int dt,hdiv0,hdiv1; // diffusion parameters
int F,k; // reaction parameters
bool rpressed;
public:
DynTexFrameListener(RenderWindow* win, Camera* cam) : ExampleFrameListener( win, cam )
{
tim = 0;
rpressed = false;
// Create colour lookup
for(unsigned int col=0; col<1024; col++)
{
ColourValue c;
c = HSVtoRGB((1.0f-col/1024.0f)*90.0f+225.0f, 0.9f, 0.75f+0.25f*(1.0f-col/1024.0f));
c.a = 1.0f - col/1024.0f;
PixelUtil::packColour(c, PF_A8R8G8B8, &clut[col]);
}
// Setup
LogManager::getSingleton().logMessage("Creating chemical containment");
mSize = reactorExtent*reactorExtent;
chemical[0] = new int [mSize];
chemical[1] = new int [mSize];
delta[0] = new int [mSize];
delta[1] = new int [mSize];
dt = FROMFLOAT(2.0f);
hdiv0 = FROMFLOAT(2.0E-5f/(2.0f*0.01f*0.01f)); // a / (2.0f*h*h); -- really diffusion rate
hdiv1 = FROMFLOAT(1.0E-5f/(2.0f*0.01f*0.01f)); // a / (2.0f*h*h); -- really diffusion rate
//k = FROMFLOAT(0.056f);
//F = FROMFLOAT(0.020f);
k = FROMFLOAT(0.0619f);
F = FROMFLOAT(0.0316f);
resetReactor();
fireUpReactor();
updateInfoParamF();
updateInfoParamK();
updateInfoParamA0();
updateInfoParamA1();
LogManager::getSingleton().logMessage("Cthulhu dawn");
}
void resetReactor()
{
LogManager::getSingleton().logMessage("Facilitating neutral start up conditions");
for(unsigned int x=0; x
delta[1][idx] += UVV - MULT(F+k,V);
idx++;
}
idx += 2;
}
// Update concentrations
for(x=0; x
const PixelBox &pb = buffer->getCurrentLock();
unsigned int idx = reactorExtent+1;
for(unsigned int y=0; y<(reactorExtent-2); y++) {
uint32 *data = static_cast
int *chem = &chemical[0][idx];
for(unsigned int x=0; x<(reactorExtent-2); x++) {
data[x] = clut[(chem[x]>>6)&1023];
}
idx += reactorExtent;
}
buffer->unlock();
}
// GUI updaters
void updateInfoParamK()
{
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_K") \
->setCaption("[1/2]k: "+StringConverter::toString(TOFLOAT(k)));
}
void updateInfoParamF()
{
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_F") \
->setCaption("[3/4]F: "+StringConverter::toString(TOFLOAT(F)));
}
void updateInfoParamA0()
{
// Diffusion rate for chemical 1
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_A0") \
->setCaption("[5/6]Diffusion 1: "+StringConverter::toString(TOFLOAT(hdiv0)));
}
void updateInfoParamA1()
{
// Diffusion rate for chemical 2
OverlayManager::getSingleton().getOverlayElement("Example/DynTex/Param_A1") \
->setCaption("[7/8]Diffusion 2: "+StringConverter::toString(TOFLOAT(hdiv1)));
}
bool frameStarted( const FrameEvent& evt )
{
using namespace OIS;
if( ExampleFrameListener::frameStarted( evt ) == false )
return false;
if( mKeyboard->isKeyDown( KC_1 ) ) {
k -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamK();
}
if( mKeyboard->isKeyDown( KC_2 ) ) {
k += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamK();
}
if( mKeyboard->isKeyDown( KC_3 ) ) {
F -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamF();
}
if( mKeyboard->isKeyDown( KC_4 ) ) {
F += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamF();
}
if( mKeyboard->isKeyDown( KC_5 ) ) {
hdiv0 -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA0();
}
if( mKeyboard->isKeyDown( KC_6 ) ) {
hdiv0 += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA0();
}
if( mKeyboard->isKeyDown( KC_7 ) ) {
hdiv1 -= FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA1();
}
if( mKeyboard->isKeyDown( KC_8 ) ) {
hdiv1 += FROMFLOAT(0.005f*evt.timeSinceLastFrame);
updateInfoParamA1();
}
if( mKeyboard->isKeyDown( KC_0 ) && !rpressed ) {
// Reset 0
resetReactor();
fireUpReactor();
rpressed = true;
} else {
rpressed = false;
}
for(int x=0; x<10; x++)
runStep();
buildTexture();
swim->addTime(evt.timeSinceLastFrame);
return true;
}
virtual ~DynTexFrameListener(void)
{
delete [] chemical[0];
delete [] chemical[1];
delete [] delta[0];
delete [] delta[1];
}
};
float DynTexFrameListener::fDefDim = 25.0f;
float DynTexFrameListener::fDefVel = 50.0f;
class DynTexApplication : public ExampleApplication
{
public:
DynTexApplication() {}
protected:
virtual void createFrameListener(void)
{
mFrameListener= new DynTexFrameListener(mWindow, mCamera);
mFrameListener->showDebugOverlay(true);
mRoot->addFrameListener(mFrameListener);
}
virtual void createViewports(void)
{
// Create one viewport, entire window
Viewport* vp = mWindow->addViewport(mCamera);
vp->setBackgroundColour(ColourValue(0,0,0));
// Alter the camera aspect ratio to match the viewport
mCamera->setAspectRatio(
Real(vp->getActualWidth()) / Real(vp->getActualHeight()));
}
// Just override the mandatory create scene method
void createScene(void)
{
// Create dynamic texture
ptex = TextureManager::getSingleton().createManual(
"DynaTex","General", TEX_TYPE_2D, reactorExtent-2, reactorExtent-2, 0, PF_A8R8G8B8,
TU_DYNAMIC_WRITE_ONLY);
buffer = ptex->getBuffer(0, 0);
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.6, 0.6, 0.6));
mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox", 50 );
//mRoot->getRenderSystem()->clearFrameBuffer(FBT_COLOUR, ColourValue(255,255,255,0));
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
l->setDiffuseColour(0.75, 0.75, 0.80);
l->setSpecularColour(0.9, 0.9, 1);
l->setPosition(-100,80,50);
mSceneMgr->getRootSceneNode()->attachObject(l);
Entity *planeEnt = mSceneMgr->createEntity("TexPlane1", Ogre::SceneManager::PT_PLANE);
// Give the plane a texture
planeEnt->setMaterialName("Examples/DynaTest");
SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-100,-40,-100));
node->attachObject(planeEnt);
node->setScale(3.0f, 3.0f, 3.0f);
// Create objects
SceneNode *blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-200,0,50));
Entity *ent2 = mSceneMgr->createEntity( "knot", "knot.mesh" );
ent2->setMaterialName("Examples/DynaTest4");
blaNode->attachObject( ent2 );
blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(200,-90,50));
ent2 = mSceneMgr->createEntity( "knot2", "knot.mesh" );
ent2->setMaterialName("Examples/DynaTest2");
blaNode->attachObject( ent2 );
blaNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(-110,200,50));
// Cloaked fish
ent2 = mSceneMgr->createEntity( "knot3", "fish.mesh" );
ent2->setMaterialName("Examples/DynaTest3");
swim = ent2->getAnimationState("swim");
swim->setEnabled(true);
blaNode->attachObject( ent2 );
blaNode->setScale(50.0f, 50.0f, 50.0f);
//TextureManager::getSingleton().getByName("RustySteel.jpg");
std::stringstream d;
d << "HardwarePixelBuffer " << buffer->getWidth() << " " << buffer->getHeight() << " " << buffer->getDepth();
LogManager::getSingleton().logMessage(d.str());
buffer->lock(HardwareBuffer::HBL_NORMAL);
const PixelBox &pb = buffer->getCurrentLock();
d.str("");
d << "PixelBox " << pb.getWidth() << " " << pb.getHeight() << " " << pb.getDepth() << " " << pb.rowPitch << " " << pb.slicePitch << " " << pb.data << " " << PixelUtil::getFormatName(pb.format);
LogManager::getSingleton().logMessage(d.str());
buffer->unlock();
// show GUI
overlay = OverlayManager::getSingleton().getByName("Example/DynTexOverlay");
overlay->show();
}
void destroyScene(void)
{
// Free resource pointers before shutdown
ptex.setNull();
buffer.setNull();
}
};
#ifdef __cplusplus
extern "C" {
#endif
#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
DynTexApplication app;
try {
app.go();
} catch( Ogre::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: " <<
e.getFullDescription().c_str() << std::endl;
#endif
}
return 0;
}
#ifdef __cplusplus
}
#endif
Jadi,pada listing diatas,akan menghasilkan output berbentuk texture.
Nah,jika kita memencet angka 7 atau 8 dan 4 atau 5 akan memberikan efek perubahan texture.
Hasilnya menjadi seperti ini:

View full article and comment >>>
LP Pertemuan 7 kelas 1IA12
LP pertemuan 7:
1. Jelaskan apa yang kamu ketahui tentang form!
2. Sebutkan dan jelaskan properties dan event yang dimiliki oleh form (min. 5)!
3. Jelaskan apa perbedaan antara MDI dan SDI form
View full article and comment >>>
1. Jelaskan apa yang kamu ketahui tentang form!
2. Sebutkan dan jelaskan properties dan event yang dimiliki oleh form (min. 5)!
3. Jelaskan apa perbedaan antara MDI dan SDI form
View full article and comment >>>
Langganan:
Postingan (Atom)