(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.
The exhibit mentioned below has pretty much been completed. It should hopefully be open to the public in the NMS museum in Edinburgh from February 2006 and is called "RobotShips". More information will be provided here soon...
I know we've been saying this for a while, but hopefully it won't be too long before we have some simple example applications ready to download, plus some documentation for the framework. In the meantime, have a good Christmas everyone!
Log in to post a comment.