A packaged version of the source code is now available from the files section here or from the OpenIllusionist website.
You can also find updated DLLs to be used with any new developments.
Now that Sourceforge have kindly added Subversion functionality we have moved the latest versions of the modules to it and will be using it in future instead of CVS.
* The latest version of OpenIllusionist is available from module "openillusionist_1.x/trunk" and the subversion url is therefore: https://svn.sourceforge.net/svnroot/openillusionist/openillusionist_1.x/trunk
* A packaged version of the OpenIllusionist 1.3.0 source code is available as a 7-zip file either from our website or here.... read more
(Available from the OpenIllusionist_1.0.0 CVS module)
*Implemented the messaging structure. It has been designed for efficiency and yet remains thread safe. Messages can be passed as follows:
----Agent to agent
----Agent to all agents of a specific type
----Agent to all agents
----Agent to engine
*A brand new calibration system has been developed:
----Requires that the background is visible with objects on it (light background with dark objects or dark background with light objects).
----It adjusts the camera (exposure, brightness and contrast) until it's set at a reasonable level for wall finding.
----If the camera reaches high levels on either the brightness or contrast then a backlight is introduced using the projection. This allows the system to now run in very low ambient light levels.
----The calibration system then does pixel-by-pixel range finding using light from the projector.
----Finally it attempts geometric calibration using projected fiducials and with compensation via the range finding in the previous stage.
----When a successful calibration occurs the camera settings and fiducial locations are stored in a configuration file. An application can then ask for these to be loaded. This is useful if the custom application has a time-out on calibration, or if the developer only wants it to calibrate occasionally.
----When calibration is started it can be configured to only adjust for the lighting or to do a full calibration.
----New and far more stable projective transform calculations are now being used (moved to Utilities.cpp since compilation time for a release now takes a while because of the size of the equations, so this stops it being recompiled each time a change is made to Capture.cpp).
*Some general tidying has been done plus some optimisation of the GrabImage function.
*Engine now supports switching on/off of alpha blending in the renderer. The engine also sorts the agent list into agent type order for rendering, so agent types should be defined in the order you wish the agents to be rendered.
*New override functions PreAgentRender() and PostAgentRender() allow the custom engine to add extra OpenGL calls into the render cycle. This is so that the engine can render anything that isn't an agent.... read more
* Moved to a complete library structure, so OpenIllusionist is now a static library (may become dynamically linked in the future)
* Removed RenderWindow and combined it with the AgentController to become the oiIllusionistEngine
* Engine has been simplified, functions renamed to make them clearer
* The engine is now overridden in a custom application so that the developer can control message handling, key handling, marker handling and spawning of agents in a simple way without having to delve into the library code
* Minor bug-fixes:
o AgentFeedback was incorrectly calculating some sensor information, resulting in false readings
o Modified the EdgeDetect class to provide a better image for scaling up to 1024x768 (since the previous method caused gaps in the walls)
* Plans to implement a system allowing messages to be posted to agents (since currently they can post messages to the engine but not vice-versa)... read more
Further to the changes leading to 0.06 the library has modified again:
There is no longer an oiAgentController or oiRenderWindow, they are now combined into the oiIllusionistEngine.
You now derive your custom Illusionist from the oiIllusionistEngine and override the KeyHandler, AgentMessageHandler, AgentLaunch and ProcessMarkers functions
There has been further tidying up of the oiIllusionistEngine, with some replacing and moving of functions and variables (such as map based functions moved to the oiVirtualWorld class).
Rather earlier than planned (sorry Dan!) version 0.06 is now available from CVS. This is a fairly big change - OpenIllusionist is now *entirely* in libraries. That old, terrifying flat codebase is no more. The basic fishtank example app is still included to give you an idea how to get started developing your own applications. Basically, you now only have to adjust two things, and write a three-line entry point: Create your agents (derived from the oiAgent class) and create your custom Agent Controller (derived from the oiAgentController) to handle keypresses, agent messaging, etc. You'll use your agent controller to launch your agents, and you'll pass a pointer to your agent controller to the instantiation of the Illusionist in your app entry point. Enjoy.
* Renaming of all classes so that they no longer follow the Microsoft style CSomething but use an OpenIllusionist prefix "oi". For example CAgent is now oiAgent
* Removal of the extended memory and associated functions. Some agents will temporarily cease to work because of this, but since child classes can have as many extra member variables as they want there is no real need for the extended memory. This has reduced the complexity of the oiAgent a little!
* Further reduction in complexity has been the removal of the SensorFeedback system. Instead the sensors have been modified to incorporate the feedback as well, this reduces the number of arrays that have to be declared in the AgentConstruct
* The sensors have also been changed to use wxPoint for the Start and End coordinates
* The buffer images for the agents are now contained in a class (oiBufferImage) which means only a single array needs declaring in the construct. This class also automatically allocates memory for the image
* Two functions have been added to simplify the allocation of memory for the sensors and buffers
* The check for sensors needing to be updated is now in the internal oiAgent::Move function so that child agents do not need to check the m_bCalculateSensors flag but they do still need to handle the clearing of it (this means that some agents can then be easily coded to recalculate their sensors each iteration)
* Simplified some of the headers in the include file since they do not need to incorporate everything that is used when the libraries are compiled, just what is needed to link to the libraries
OpenIllusionist v0.05 is now available via CVS. This is a continuation of the major overhaul! OI is now implemented using wxWidgets, meaning that it can potentially be compiled on any major platform. It is currently running under windows, and a test version is running under linux (Fedora Core 4), although the linux version is still lacking a framegrabber which will have to be written at a later date. Some of the changes are as follows:... read more
OpenIllusionist is currently undergoing a major overhaul. At the end of this process, we should be able to offer OI functionality purely through libraries, and provide a cross-platform core. The latest CVS versions of OI include
* Both video for windows and DirectShow video capture
* Completely redesigned (and fully commented) fiducial marker recognition, running at far higher frame rates
* An extra "wall detection" front-end image processing mode, providing edge detected rather than intensity detected features
* A redesigned, more tolerant calibration system
* The virtual control agent is now attached to a physical marker
* Both video capture and fiducial recognition have been abstracted to standalone libraries, which are useable outside the rest of the OI framework
* Some internal architecture has been simplified for easier maintenance... read more
We've launched the new OpenIllusionist home page! We'll be updating regularly with documentation, news and general information about the world of augmented environments. If you're interested in generating content for the site - especially the parts concerned with the history of augmented environments - please let us know.
We've packaged up an early release of OpenIllusionist for you to play with. It's aimed at prospective developers - not end-users - but should give you an idea of where we're headed. The release includes one example application (an augmented fishpond), and the full framework, as it currently stands. We'd also like to announce that Enrico Costanza (author of the libdtouch fiducial recognition library) has joined the Illusionist team. We're working towards integrating the dTouch libraries into the Illusionist framework for the next release...