OIS. Kezdeti teendők Letöltés: OgreLabControllersBase.zip Kicsomagol, betölt:.sln Additional include és library path beállítása Working directory beállítása.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1. foreach( fejlesztő in Lurdyház ) { fejlesztő.Agy. Delete If( delegate ( Content c ) { return c.ContainsAny( „Win32 / User32.dll”, „GDI”,„GDI+”,„WindowsForms”,
3D képszintézis fizikai alapmodellje
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
Szécsi László. June 2010 DirectX SDK Visual Studio 2010.
 Lineáris egyenlet  algebrai egyenlet  konstansok és első fokú ismeretlenek  pl.: egyenes egyenlete  Lineáris egyenletrendszer  lineáris egyenletek.
 Gauss szűrő uniform sampler2D colorMap; const float kernel[9] = float[9]( 1.0, 2.0, 1.0, 2.0, 4.0, 2.0, 1.0, 2.0, 1.0); out vec4 outColor; void main(){
GPGPU labor I. OpenGL, Cg.
 Fény fotonok szimulációja  Nem változtatja meg a frekvenciát ütközéskor  Homogén és inhomogén közegben.
Socket programozás Példák
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat Kovács Tamás & Mingesz Róbert 3. óra február 20., 23.
Programozás II. 3. Gyakorlat C++ alapok.
Delegátumok C#-ban Krizsán Zoltán iit 1.0.
DirectX a grafika laboron kívül. Mire lesz szükség Itt vannak a szükséges include és lib: iles/DXMinimalPack.zip.
ANY u WHERE u : seq(MININT..MAXINT) & size(u) = size(s) & #f.(f : 1..size(s) >->> 1..size(s) & !j.(j : 1..size(s) => s(f(j)) = u(j))) & !i.(i : 1..size(s)-1.
C++ alapok, harmadik óra
A megértés körei Binzberger Viktor Budapest Műszaki és Gazdaságtudományi Egyetem Filozófia és Tudománytörténet Tanszék.
Multimédiás programok készítése Macromedia Director fejlesztői környezetben 4. előadás Készítette: Kosztyán Zsolt
Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - III. / 1 13.Állományok, bejegyzések 14.Folyamok 15.Közvetlen hozzáférésű állomány.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek SWT haladó komponensek.
Hasznos ismeretek Hogyan bővítsük ismereteinket AVRDUDEflags -E noreset.
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Motor IIII. Vezérlés Szécsi László. Letöltés diák: //l09-engine4.ppt.
Motor IIII. PhysX utáni rendberakás Vezérlés Szécsi László.
Motor II. Env map Spotlight Szécsi László. Letöltés /code/E/code/EggCoreSecondBase.zip Kibontani (vagy előző labor folyt.):
PhysX integráció Szécsi László. Letöltés diák: bagira.iit.bme.hu/~szecsi/GraphGame //l11-physx.ppt modell: bagira.iit.bme.hu/~szecsi/GraphGame //pickup.zip.
Transzformációk, textúrák, árnyalás Szécsi László.
DirectX9 empty project Szécsi László. Project létrehozása Microsoft DirectX SDK (August 2008) telepítése Start Menu \ Microsoft DirectX SDK (August 2008)\
Motor V. Ütközés detektálás és válasz Szécsi László.
V. labor Thread, animáció. Animáció A figurák a lépés kijelölése után nem rögtön az új helyen teremnek, hanem egyenes vonal mentén mozognak a cél felé.
SzgLab 3. Java. I. labor Alapok, OOP váz, megjelenítés konzolon.
II. labor Lépések kezelése. Új metódus a Square osztályba public static int letterToFileIndex(char letter) throws NumberFormatException { int i = 0; for.
III. labor AWT, eseménykezelés Applet. Új class: ButtonView import java.awt.*; import java.awt.event.*; import java.util.LinkedList; public class ButtonView.
Kamera, 3D, transzformációk Szécsi László. Math.zip kibontása az Egg projectkönyvtárba – float2, foat3, float4 típusok, HLSL-ben megszokott műveletekkel.
Geometry instancing Szécsi László. copy-paste-rename gg009-Gui folder vcxproj, filters átnevezés solution/add existing project rename project working.
User interface Szécsi László. Egg projectben DXUTgui.cpp – CDXUTDialogResourceManager::CDXUTDialogReso urceManager() m_SpriteBufferBytes11 = 0; ezt kihagyták,
 Map  Reduce  Scan  Histogram  Compact const size_t dataSize = 1024; cl_kernel mapKernel = cl.createKernel(clProgram, "map"); float* hData = new.
GPGPU labor XII. Tomográfiás rekonstrukció. Kezdeti teendők Tantárgy honlapja, Monte Carlo szimuláció A labor kiindulási alapjának letöltése (lab12_base.zip),
GPGPU labor X. Monte Carlo módszerek. Kezdeti teendők Tantárgy honlapja, Monte Carlo módszerek A labor kiindulási alapjának letöltése (lab10_base.zip),
GPGPU labor IX. Lineáris egyenletrendszerek megoldása.
GPGPU Labor 15.. Párhuzamos primitívek Map Reduce Scan Histogram Compact.
GPGPU labor II. GPU mint vektor processzor. Kezdeti teendők Tantárgy honlapja, Bevezetés – Alap könyvtárak letöltése Tantárgy honlapja, GPU mint vektor.
HTTP kommunikáció Androidon HttpClient-en keresztűl HttpPost/HttpGet objektum használatával HttpClient execute metódusának meghívása.
ELTE-IK, Számítógépes grafika 2./haladó 2. gyakorlat Klár Gergely.
Fej irányultságának becslése Ügyféltérben gyanús viselkedés jelzéséhez Kültéren kiegészítő hő szenzor szükséges.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Unity 3D alapok + gyakorlás.
Grafikus Rendszerek 6. Camera.
PHP-SQL adatbáziskezelő parancsai
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Alapok Model betöltés Anyagjellemzők Fényforrások Shaderek
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek
Nokia C5 Data Sheet Planned Market Introduction • Q Category
Függvénysablonok használata
Fig. 7. Limitation of qualitative evaluation based on SI of anatomical T2-weighted imaging for tumor response evaluation.A. Baseline T2-weighted image.
TECHNICAL TRAINING December 2012.
Előadás másolata:

OIS

Kezdeti teendők Letöltés: OgreLabControllersBase.zip Kicsomagol, betölt:.sln Additional include és library path beállítása Working directory beállítása Fordít futtat

OIS #include "stdafx.h" #include "Ogre.h" #define OIS_DYNAMIC_LIB #include using namespace Ogre; Root* ogreRoot; SceneManager* sceneManager; Camera* camera; RenderWindow* renderWindow; OIS::InputManager* OISInputManager;

class ControlDeviceHandler : public FrameListener { protected: OIS::Keyboard* mKeyboard; float mTimeUntilNextToggle; public: ControlDeviceHandler() { LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***"); OIS::ParamList pl; size_t windowHnd = 0; renderWindow->getCustomAttribute("WINDOW", &windowHnd); std::ostringstream windowHndStr; windowHndStr << windowHnd; pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str())); OISInputManager = OIS::InputManager::createInputSystem( pl ); mKeyboard = static_cast (OISInputManager->createInputObject( OIS::OISKeyboard, false )); } };

void setupListeners() { ogreRoot->addFrameListener(new ControlDeviceHandler()); } Másolás: OgeSdk/bin/release/OIS.lib -> bin Másolás: OgeSdk/bin/debug/OIS_d.lib -> bin OIS_d.lib

Próba

class ControlDeviceHandler : public FrameListener { … public: … bool frameStarted(const FrameEvent& evt) { mKeyboard->capture(); if( mKeyboard->isKeyDown(OIS::KC_ESCAPE)) return false; if( mKeyboard->isKeyDown(OIS::KC_UP)) LogManager::getSingleton().logMessage("up arrow pressed"); if( mKeyboard->isKeyDown(OIS::KC_DOWN)) LogManager::getSingleton().logMessage("down arrow pressed"); if( mKeyboard->isKeyDown(OIS::KC_SPACE)) LogManager::getSingleton().logMessage("space pressed"); return true; } };

Próba

bool frameStarted(const FrameEvent& evt) { mKeyboard->capture(); if (mTimeUntilNextToggle >= 0) mTimeUntilNextToggle -= evt.timeSinceLastFrame; … if( mKeyboard->isKeyDown(OIS::KC_SPACE) && mTimeUntilNextToggle < 0) { LogManager::getSingleton().logMessage("space pressed"); mTimeUntilNextToggle = 0.2f; } Próba

bool frameStarted(const FrameEvent& evt) { float cameraMoveSpeed = 50.0f * evt.timeSinceLastFrame; Vector3 campos = camera->getPosition(); Vector3 camdir = camera->getDirection(); Vector3 cammove(0,0,0); … if( mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W)) cammove += camdir; if( mKeyboard->isKeyDown(OIS::KC_DOWN) || mKeyboard->isKeyDown(OIS::KC_S)) cammove -= camdir; camera->setPosition(campos + cammove * cameraMoveSpeed);

Próba Önálló feladat: Slide (A, D gombok) Föl-le mozgás (Q, E gombok) (cammove legyen egységvektor!)

Megoldás: Vector3 camright = camera->getRight(); Vector3 camup = camera->getUp(); … if( mKeyboard->isKeyDown(OIS::KC_A)) cammove -= camright; if( mKeyboard->isKeyDown(OIS::KC_D)) cammove += camright; if( mKeyboard->isKeyDown(OIS::KC_Q)) cammove += camup; if( mKeyboard->isKeyDown(OIS::KC_E)) cammove -= camup; cammove.normalise(); camera->setPosition(campos + cammove * cameraMoveSpeed);

Fordulás bool frameStarted(const FrameEvent& evt) { float cameraMoveSpeed = 50.0f * evt.timeSinceLastFrame; float cameraRotateSpeed = 50.0f * evt.timeSinceLastFrame; … if( mKeyboard->isKeyDown(OIS::KC_LEFT)) camera->rotate(Vector3::UNIT_Y, Radian(cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_RIGHT)) camera->rotate(Vector3::UNIT_Y, Radian(-cameraRotateSpeed * 0.02f)); Önálló feladat: fel-le nézés (PageUp-PageDown)

if( mKeyboard->isKeyDown(OIS::KC_LEFT)) camera->rotate(Vector3::UNIT_Y,Radian(cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_RIGHT)) camera->rotate(Vector3::UNIT_Y, Radian(-cameraRotateSpeed * 0.02f)); camright = camera->getRight(); if( mKeyboard->isKeyDown(OIS::KC_PGUP)) camera->rotate(camright, Radian(cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_PGDOWN)) camera->rotate(camright, Radian(-cameraRotateSpeed * 0.02f)); /* if( mKeyboard->isKeyDown(OIS::KC_LEFT)) camera->yaw(Radian(cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_RIGHT)) camera->yaw(Radian(-cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_PGUP)) camera->pitch(Radian(cameraRotateSpeed * 0.02f)); if( mKeyboard->isKeyDown(OIS::KC_PGDOWN)) camera->pitch(Radian(-cameraRotateSpeed * 0.02f));*/

Próba

protected: OIS::Keyboard* mKeyboard; OIS::Mouse* mMouse; … ControlDeviceHandler() { … mKeyboard = static_cast (OISInputManager->createInputObject( OIS::OISKeyboard, false )); mMouse = static_cast (OISInputManager->createInputObject( OIS::OISMouse, false )); }

bool frameStarted(const FrameEvent& evt) { float mousesensitivity = 1.0f; … mMouse->capture(); const OIS::MouseState &ms = mMouse->getMouseState(); LogManager::getSingleton().logMessage( StringConverter::toString(ms.X.rel) + " " + StringConverter::toString(ms.Y.rel)); return true; } Próba

Kamera forgatás mMouse->capture(); const OIS::MouseState &ms = mMouse->getMouseState(); camera->yaw(Radian(-cameraRotateSpeed * mousesensitivity * ms.X.rel * 0.01f)); camera->pitch(Radian(-cameraRotateSpeed * mousesensitivity * ms.Y.rel * 0.01f));

Próba

Egér gomb if(ms.buttonDown(OIS::MB_Left)) LogManager::getSingleton().logMessage("left button down"); Önálló feladat: Slide az egérrel fordulás helyett ha a jobb gomb le van nyomva

Megoldás if(ms.buttonDown(OIS::MB_Right)) { cammove += camright * ms.X.rel * 0.01f; cammove += camup * ms.Y.rel * 0.01f; } else { camera->yaw(Radian(-cameraRotateSpeed * mousesensitivity * ms.X.rel * 0.01f)); camera->pitch(Radian(-cameraRotateSpeed * mousesensitivity * ms.Y.rel * 0.01f)); }

Vége