Windows Support Australia

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Tuesday, 24 September 2013

A widget library for large scale displays and immersive environments

Posted on 15:38 by Unknown

An example of widgets rendered to a cube texture
In CAVE2, most omegalib applications display a user interface using the 3D menu system. On menus, it is possible to create a variety of standard controls like buttons, sliders, sub-menus etc. Internally, the menu system makes use of the omegalib widget library, which is part of omegaToolkit. This library is designed to support rendering of 2D widgets on large scale, cluster-driven displays. Since we want to support stereo displays, the widget library supports 3D rendering: Widget containers can draw themselves to arbitrary surfaces in the scene. That's how the menu system 3D mode works, but you can do the same with your own widgets, using the Container3DSettings class. Container output planes can also be attached to scene nodes, using the Container3DSettings.node  property. For instance, you can attach a 3D mode container to the default camera, to implement a 3D heads-up display. Or you can attach it to a movable object in the scene, to create a floating 3D label that follows the object. The Text3D class can be used for simple text-only labels, but the widget library gives you a lot more flexibility with your label design, and the kinds of data you can put on it. If you need more control over the output surface, you can also grab the container output texture directly and use it as a 3D object texture. See https://github.com/uic-evl/omegalib/blob/master/examples/python/uitotexture.py for an example of this.

Of course the widget library can be used to draw classic 2D interfaces. The ohelloWidgets C++ demo shows how to use the widget toolkit for 2D drawing. It also shows how to create custom widgets using OpenGL.
Widgets, widgets everywhere!
In order to support very different devices like your laptop, OmegaDesk, touch walls and CAVE2, the widget library accepts a variety of input sources to control interaction. Like the rest of omegalib, input handling is based on omicron, making it possible to interact with widgets using mouse pointers, SAGE pointers, touch screens, gamepads, tracked wands etc. In particular, widgets support both pointer-based and gamepad-based interaction. An interface can be used with a mouse or navigated with a game controller d-pad. The interaction mode (and a bunch of other properties of the widget library) can be specified in the omegalib configuration file.

When using gamepad navigation, the widget library does most of the work for you. For instance, putting widgets in a vertical layout container, will automatically set up navigation so that pressing the up/down buttons on a gamepad will move widget selection up and down. The same happens for horizontal containers. For free-layouts, or for navigation between containers, you can explicitly `link` widgets together to tell omegalib how interface navigation should work. This is done using the Widgets setPrevHorizontalWidget, setPrevVerticalWidget, setNextHorizontalWidget  and setNextVerticalWidget methods. The menuColumns example shows how to use custom navigation to create a multi-column menu.
Read More
Posted in omegalib | No comments

Saturday, 7 September 2013

Omegalib 4.2 released!

Posted on 14:53 by Unknown

This version greatly improves the speed of user-centered stereo tracking in cluster installations. The Equalizer/omegalib interface and rendering code has also been simplified. Porthole is now included as a separate module. The flipbookPlayer module has also been moved from the apps repository to the omegalib core repository. To support multi-view interaction, omegalib 4.2 also introduces ray-based wand event filtering: multiple applications can be controlled using the same wand device. Only the application currently pointed at receives input. Multi-view interaction is implemented in a new module (**mvi**).
breaking change: the overridePanopticStereo function has been removed due to its confusing name. The same function can now be controlled by doing getDisplayConfig.panopticStereoEnabled = True / False

Major Changes

omega
  • removed obsolete Equalizer statistics output
  • added New statistics display in Console overlay
  • Render passes get sorted by priority
  • added SceneNode.rotate(Quaternion) python method.
  • fixes to event handling and rendering on non-planar configurations.
  • added querySceneRay flags (see https://github.com/uic-evl/omegalib/wiki/Scene-management#queryscenerayvector3-origin-vector3-dir-callback-flags)
  • added Event.isFlagSet to python API
  • added PixelData pixel access python API (getPixel[R,G,B,A] and setPixel functions)
  • Degree unit functions for node orientation (Issue #57)
Porthole
  • Porthole improved and moved to a separate module
  • Added touch / drag event forwarding
  • Added callbacks for client connection and camera creation
  • Added portholeBasic.py python demo
cyclops
  • AnimatedObject.setCurrentModelIndex in python (Issue #50)
Misc
  • Started working on a multiview interaction (mvi) module.
Read More
Posted in CAVE2, omegali | No comments
Newer Posts Older Posts Home
Subscribe to: Comments (Atom)

Popular Posts

  • ENDURANCE Final Update
    Work on the ENDURANCE project has ended. The final data products consisted in an updated bathymetry model for the entire west lake bonney, u...
  • (no title)
    A list of Wiki tools I can choose among for Edanarion documentation: http://wikkawiki.org/HomePage http://wiki.splitbrain.org/ http://www.me...
  • Parallel Gaussian Elimination Using MPI
    In this project, we had to implement a parallel solver for linear equation systems, using a technique known as Gaussian elimination (GE). As...
  • GPU Programming Project 1 – Kodachrome
      The objective for this project was to process a stream of images captured from the webcam, and apply a set of vertex, fragment and geomet...
  • Omegalib 4.2 released!
    This version greatly improves the speed of user-centered stereo tracking in cluster installations. The Equalizer/omegalib interface and re...
  • Distributed Sum on a 2D mesh using MPI
    For a recent class project, we had to implement an algorithm to sum an array of integers on a computer cluster. This problem is one of the e...
  • Google Chrome vulnerable to carpet-bombing flaw
    Google Chrome vulnerable to carpet-bombing flaw Google’s shiny new Web browser is vulnerable to a carpet-bombing vulnerability that could ex...
  • Using Kinect for 3D video capture
    (Thanks for the link, Jakub)
  • Usability in Games
    New project added on the website: Usability in Games. We are investigating how interface usability influences user engagement in long-term c...
  • Omegalib 3.0 Released
    Omegalib 3.0 is a major improvement over the 2.0 distribution. It is the version used on the first public demos of the  CAVE2  virtual reali...

Categories

  • 3D
  • CAVE2
  • Edanarion
  • ENDURANCE
  • Flash
  • Game Heuristics
  • Games
  • HCI
  • Hydroviz
  • MotoGP08
  • MPI
  • News
  • Nintendo DS
  • OmegaDesk
  • omegali
  • omegalib
  • Papervision
  • QbViz
  • Tech Meeting
  • Visualization
  • VR

Blog Archive

  • ▼  2013 (31)
    • ►  November (2)
    • ►  October (2)
    • ▼  September (2)
      • A widget library for large scale displays and imme...
      • Omegalib 4.2 released!
    • ►  August (1)
    • ►  June (4)
    • ►  May (3)
    • ►  April (4)
    • ►  March (6)
    • ►  February (4)
    • ►  January (3)
  • ►  2012 (8)
    • ►  December (3)
    • ►  November (2)
    • ►  August (3)
  • ►  2011 (2)
    • ►  November (1)
    • ►  January (1)
  • ►  2010 (4)
    • ►  November (1)
    • ►  February (1)
    • ►  January (2)
  • ►  2009 (5)
    • ►  September (1)
    • ►  June (1)
    • ►  April (1)
    • ►  March (1)
    • ►  January (1)
  • ►  2008 (22)
    • ►  December (1)
    • ►  October (4)
    • ►  September (6)
    • ►  June (2)
    • ►  May (3)
    • ►  April (1)
    • ►  March (2)
    • ►  January (3)
  • ►  2007 (16)
    • ►  December (2)
    • ►  November (3)
    • ►  October (4)
    • ►  September (7)
Powered by Blogger.

About Me

Unknown
View my complete profile