52 #include <visp3/core/vpConfig.h>
57 #include <visp3/core/vpImage.h>
58 #include <visp3/core/vpImageConvert.h>
59 #include <visp3/core/vpRGBa.h>
61 #include <visp3/core/vpHomogeneousMatrix.h>
62 #include <visp3/core/vpImageTools.h>
63 #include <visp3/core/vpRotationMatrix.h>
64 #include <visp3/core/vpRxyzVector.h>
67 #include <OgreFrameListener.h>
90 class VISP_EXPORT
vpAROgre :
public Ogre::FrameListener,
91 public Ogre::WindowEventListener
94 public OIS::KeyListener
99 const char *resourcePath =
100 #ifdef VISP_HAVE_OGRE_RESOURCES_PATH
101 VISP_HAVE_OGRE_RESOURCES_PATH,
105 const char *pluginsPath =
106 #ifdef VISP_HAVE_OGRE_PLUGINS_PATH
107 VISP_HAVE_OGRE_PLUGINS_PATH
126 inline void addResource(
const std::string &resourceLocation)
128 mOptionnalResourceLocation.push_back(resourceLocation);
131 void addRotation(
const std::string &sceneName,
const vpRotationMatrix &wRo);
133 bool continueRendering(
void);
135 virtual bool customframeStarted(
const Ogre::FrameEvent &evt);
137 virtual bool customframeEnded(
const Ogre::FrameEvent &evt);
143 inline Ogre::Camera *getCamera() {
return mCamera; }
150 inline double getFarClippingDistance()
const {
return mFarClipping; }
157 inline double getNearClippingDistance()
const {
return mNearClipping; }
163 inline Ogre::SceneManager *getSceneManager() {
return mSceneMgr; }
166 virtual void init(
vpImage<vpRGBa> &I,
bool bufferedKeys =
false,
bool hidden =
false);
173 bool isWindowHidden() {
return windowHidden; }
179 virtual bool keyPressed(
const OIS::KeyEvent & ) {
return true; }
183 virtual bool keyReleased(
const OIS::KeyEvent & ) {
return true; }
186 void load(
const std::string &entityName,
const std::string &model);
199 void setFarClippingDistance(
const double &dist)
202 updateCameraProjection();
210 void setNearClippingDistance(
const double &dist)
212 mNearClipping = dist;
213 updateCameraProjection();
227 inline void setPluginsPath(
const char *pluginsPath) { mPluginsPath = pluginsPath; }
243 inline void setResourcePath(
const char *resourcePath) { mResourcePath = resourcePath; }
245 void setRotation(
const std::string &sceneName,
const vpRotationMatrix &wRo);
247 void setScale(
const std::string &sceneName,
float factorx,
float factory,
float factorz);
258 inline void setShowConfigDialog(
bool showConfigDialog) { mshowConfigDialog = showConfigDialog; }
260 void setVisibility(
const std::string &sceneName,
bool isVisible);
269 inline void setWindowName(
const Ogre::String &n) { name = n; }
281 inline void setWindowPosition(
unsigned int win_x,
unsigned int win_y)
283 if (mWindow == NULL) {
286 mWindow->reposition(static_cast<int>(win_x), static_cast<int>(win_y));
289 virtual void windowClosed(Ogre::RenderWindow *rw);
292 virtual void init(
bool bufferedKeys =
false,
bool hidden =
false);
293 virtual void createCamera(
void);
299 virtual void createScene(
void){};
301 virtual void closeOIS(
void);
308 virtual bool updateScene(
const Ogre::FrameEvent & ) {
return true; };
315 virtual bool processInputEvent(
const Ogre::FrameEvent & ) {
return true; };
322 virtual bool destroyScene(
void)
328 mSceneMgr->destroyAllCameras();
329 mSceneMgr->clearScene();
330 mRoot->destroySceneManager(mSceneMgr);
336 virtual void updateCameraProjection(
void);
346 bool frameStarted(
const Ogre::FrameEvent &evt);
348 bool frameEnded(
const Ogre::FrameEvent &evt);
350 bool stopTest(
const Ogre::FrameEvent &evt);
358 Ogre::Camera *mCamera;
359 Ogre::SceneManager *mSceneMgr;
360 Ogre::RenderWindow *mWindow;
361 Ogre::String mResourcePath;
362 Ogre::String mPluginsPath;
366 OIS::InputManager *mInputManager;
367 OIS::Keyboard *mKeyboard;
375 Ogre::HardwarePixelBufferSharedPtr mPixelBuffer;
376 Ogre::Rectangle2D *mBackground;
377 unsigned int mBackgroundHeight;
378 unsigned int mBackgroundWidth;
379 unsigned int mWindowHeight;
380 unsigned int mWindowWidth;
384 double mNearClipping;
388 bool mshowConfigDialog;
391 std::list<std::string> mOptionnalResourceLocation;
395 #endif // VISP_HAVE_OGRE