ModMultiInteract

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

MultiInteract Eq1.6 DynaFrustumModule branch

Added files

Terrain3D_gl/Modules/DynaFrustum/DynaFrustumModule.h
Terrain3D_gl/Modules/DynaFrustum/DynaFrustumModule.cpp
dynaFru_frave4-90in-stereo.eqc

Changes

  1. Eq1.6 integration
  2. initFrame() addition in Module system
  3. forward declarations in headers
  4. DynaFrustum Module
  5. Switch to EQ-internal GLEW_MX on Windows

Equalizer 1.6 API changes

  1. eq/*.h header files are moved to eq/client
  2. at least some co/base/*.h header files are moved to lunchbox/ and eq/fabric (clock.h to Lunchbox, errorRegistry.h and global.h to eqFabric)
  3. eq/fabric/serializable.h is now co/serializable.h
  4. eq/wglWindow.h is eq/client/wgl/window.h, eq/glXWindow.h is eq/client/glx/window.h, eq/client/glXTypes.h added
  5. classes eq::WGLWindow and eq::GLXWindow were moved to the according new namespaces eq::wgl::Window, eq::glx::Window

Module system changes

  1. Terrain3D_gl/equalizer/node.cpp:
    - initNode() method in ModuleHandler overloaded with new initNode(eqTerrain3D::Config config), both are called in sequence
  2. Terrain3D_gl/equalizer/config.cpp:
    - initMasterNode() method in ModuleHandler overloaded with new initMasterNode(eqTerrain3D::Config config), both are called in sequence
  3. Terrain3D_gl/equalizer/config.cpp:
    - new initFrame(eqTerrain3D::Config config) method, called in eqTerrain3D::startFrame()
    (this new method is executed before each frame for each module)
  4. ModuleHandler class header is no longer included in other headers, a forward-declaration is used instead.
    Especially the class headers for Config, FrameData, Camera, ModuleHandler were made to not include each other.

DynaFrustumModule

requires TrackingModule and NavigationModule, exports keys "F" for toggling frusta updates and "8" for stereo mode.

GLEW_MX usage

Linux version uses dynamically linked GLEW_MX, normally installed systemwide.
Windows version, however, relies on a statically linked to Terrain GLEW_MX library.
An #ifdef for OS-specific includes has to be added in terrainLib files and some of the Eq class derivations.

Changed files

Terrain3D_gl/Modules/ModuleHandler.h
Terrain3D_gl/Modules/ModuleHandler.cpp
Terrain3D_gl/Modules/Module.h

Terrain3D_gl/equalizer/application.h
Terrain3D_gl/equalizer/application.cpp
Terrain3D_gl/equalizer/channel.h
Terrain3D_gl/equalizer/channel.cpp
Terrain3D_gl/equalizer/config.h
Terrain3D_gl/equalizer/config.cpp
Terrain3D_gl/equalizer/error.h
Terrain3D_gl/equalizer/error_co.cpp
Terrain3D_gl/equalizer/event.h
Terrain3D_gl/equalizer/frameData.h
Terrain3D_gl/equalizer/frameData.cpp
Terrain3D_gl/equalizer/initData.h
Terrain3D_gl/equalizer/node.h
Terrain3D_gl/equalizer/node.cpp
Terrain3D_gl/equalizer/pipe.h
Terrain3D_gl/equalizer/tracker.h
Terrain3D_gl/equalizer/tracker.cpp
Terrain3D_gl/equalizer/view.h
Terrain3D_gl/equalizer/window.h
Terrain3D_gl/equalizer/window.cpp

Terrain3D_gl/Terrain3Dgl.cpp
Terrain3D_gl/terrainLib/glew/GL/glew.c
Terrain3D_gl/terrainLib/glew/GL/glew.h
Terrain3D_gl/terrainLib/gltools/buffer.h
Terrain3D_gl/terrainLib/gltools/helper.h
Terrain3D_gl/terrainLib/gltools/device.h
Terrain3D_gl/terrainLib/gltools/texture.h
Terrain3D_gl/terrainLib/gltools/effect.h
Terrain3D_gl/terrainLib/gltools/error.h
Terrain3D_gl/terrainLib/gltools/uniform.h
Terrain3D_gl/terrainLib/resourcepool.h
Terrain3D_gl/overviewmap.h

Troubleshooting

When you build Equalizer

If linker fails with unresolved symbols, for example "boost::re_detail::perl_matcher", you might want to add the library containing the symbol, in the example case it is libboost_regex-mt.so
To search for symbols in libraries, use nm -gD | grep "your.symbol"
To add libsomename.so to the linker command as a -lsomename flag, add somename to the libraries list in CMakeLists.txt in a projects folder.
Example: in Buildyard/src/Lunchbox/lunchbox/CMakeLists.txt append to the list like this - set(LUNCHBOX_LINKLIBS ${PTHREAD_LIBRARIES} ${Boost_LIBRARIES} boost_regex-mt) (appending to auto-generated Boost_LIBRARIES could work as well)

Terrain3D requires GLEW_MX libraries and GLEW_MX support in Equalizer, even if compiler/linker don't require them at build time - otherwise each frame triggers an initialization that fails due to missing GLEW context. When using apt-get, make sure that you do not have any libglew* packages installed before pulling libglewmx1.6-dev (or newer version) ONLY, otherwise CMake can build without external GLEW_MX support (GLEW_MX statically built in Eq doesn't work with Terrain3D) .

When you build Terrain3D

If linker fails with unresolved symbols like lunchbox::byteswap(&T) ,
either define a symbol CO_IGNORE_BYTESWAP if you don't care about the possibility of mixed endianness in communication,
or implement in templates the missing byteswap procedures for the types that need it.

If you see error messages like "GL_EXT_texture_compression_s3tc unsupported" that may be not actually true, for example if glewGetContext fails, then instead of context, NULL gets passed across many calls undetected.


Edit | Attach | Refresh | Diffs | More | Revision r1.9 - 01 Oct 2013 - 07:36 - EvgenyIlyushkin

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif