ARToolKit Professional Release Notes
From ARToolworks support library
Main Page > ARToolKit Professional > ARToolKit Professional Release Notes
Latest release: 4.6.9.
Contents |
README
Read me for ARToolKit Professional. =================================== Contents. --------- About this archive. Installing. Running the examples. Beginning your own development. Changes in this release. Known issues in this release. Changes in earlier releases. About this archive. ------------------- This archive contains the ARToolKit Professional libraries, utilities and examples, version 4.6.9. ARToolKit Professional version 4.6.9 is released to you under a proprietary license. Please note that your license terms impose various restrictions on distribution of ARToolKit in both source and binary forms. Legal remedy will be sought by ARToolworks, Inc. for any unauthorised distribution. Your license terms may entitle you to hot fixes and / or upgrades to ARToolKit Professional version 4.6.9. Please contact us for more information. ARToolKit Professional is designed to build on Linux, Windows, Macintosh OS X, iOS and Android platforms. This archive was assembled by: Philip Lamb ARToolworks, Inc. http://www.artoolworks.com 2013-04-09 Installing ---------- ARToolKit Professional is supplied as pre-built binaries for each platform, plus source code for most of the SDK libraries and utilities, full source for the examples, and documentation. Windows Run the ARToolKit installer executable and follow the prompts. By default, ARToolKit will be installed into a folder inside your Program Files folder. Start menu items are created to allow you to quickly open the folder containing the installed software, to open a command-line prompt with the path set to this folder, and to read documentation and access this support site. The installer also automatically creates the ARTOOLKIT_4_ROOT environment variable to point to your chosen install location. If you are upgrading to a newer version, it is generally safe to install over the old version. Before upgrading, save any modifications you have made to any ARToolKit source or example code, and then run the installer. The installer will add or update new files, and remove unneeded old files. Mac OS X The SDK is supplied as an archive file (.tar.gz or .zip file) which need only be unpacked to a location of your choice, e.g. ~/SDKs/. Drop the archive into your chosen location and double-click it in the Finder to unpack it. Once unpacked, to set the ARTOOLKIT_4_ROOT so that other software can find ARToolKit Professional, open a Terminal window, and run the script artoolkit4-setenv: (Example assumes ARToolKit4 is in ~/SDKSs/): cd ~/SDKs/ARToolKit4/ ./share/artoolkit4-setenv Linux The SDK is supplied as an archive file (.tar.gz) which need only be unpacked to a location of your choice, e.g. ~/SDKs/. Move the archive into your chosen location and use the following command in your terminal to unpack it: tar xzvf ARToolKit4-bin-*.tar.gz Once unpacked, to set the ARTOOLKIT_4_ROOT so that other software can find ARToolKit Professional, open a terminal window, and run the script artoolkit4-setenv: (Example assumes ARToolKit4 is in ~/SDKSs/): cd ~/SDKs/ARToolKit4/ ./share/artoolkit4-setenv Running the examples -------------------- ARToolKit Professional includes a variety of examples demonstrating ARToolKit programming techniques. After installation, the executables for these applications can be found in the bin directory inside your ARToolKit directory. The simpleLite example is the most straightforward example. It can be run to test your ARToolKit installation is functioning correctly. An explanation of the sourcecode of this example can be found on the page http://www.artoolworks.com/support/library/ARToolKit_tutorial_1: _First_simple_ARToolKit_scene. More detailed information about the techniques demonstrated in each example can be found on the page http://www.artoolworks.com/support/library/ARToolKit_Professional_examples. Windows: simpleLite can be opened by double-clicking its icon in the ARToolKit4\bin directory. Alternately, you can run it from the command line: * Open a command-line window (cmd.exe). * Navigate to your ARToolKit4\bin directory. * Type: simpleLite.exe Mac OS X: * Bundled applications are generated for the examples. Open the "bin" directory in the Finder and double-click the "simpleLite" example app. Linux: * simpleLite can be launched from a terminal window thus: ./simpleLite Beginning your own development ------------------------------ In beginning your own development, it is recommended that you create your own project outside the ARToolKit folder, and treat ARToolKit Professional as an external SDK. However, it is also perfectly permissible to begin by modifying one or more of the example applications. ARToolKit is supplied with project files for each supported platform. The project files allow you to rebuild ARToolKit from source, and act as examples of how to structure your own application builds (e.g. required link libraries). Required external software * A compiler. Windows: Microsoft Visual Studio 2010 SP1 and later is supported. The free Microsoft Visual Studio Express Edition will also work. Mac OS X: Xcode tools v3.1 under Mac OS X 10.5 or later is required. Xcode 4.6.1 under Mac OS X 10.8 is recommended. Xcode may be obtained free from Apple at http://developer.apple.com/xcode/. Linux: GCC 4.4 is recommended. Where ARToolKit libraries require external DLLs, these are generally supplied with ARToolKit. Exceptions are listed below. Windows The optional video capture sources require some external software: * QuickTime movie files as video source: QuickTIme 6.4 or later must be installed. Download from http://www.apple.com/quicktime/download/. * Point Grey camera: The Flycapture SDK (distributed with Point Grey Cameras) must be installed. * Canon HDCam64 cameras: The Canon HDCam64 camera control library must be installed. Mac OS X * OpenSceneGraph (optional; The ARToolKit OSG renderer requires OpenSceneGraph). Use the installer provided at http://www.artoolworks.com/dist/openscenegraph/. Linux ARToolKit follows the Linux model whereby required software is externally installed. The following packages are required to be installed in your package manager to run the ARToolKit examples. (Additional packages required to build ARToolKit from source are listed on that help page.) * OpenGL: Package 'xorg' * GLUT: Package 'freeglut3'. Alternatively, GLUT can be built from source and is also included in the MESA 3D libraries: * Video4Linux, lib1394dc, or GStreamer. Packages: 'libv4l2-0", 'libdc1394-22' (for lib1394 version 2.x) or 'libdc1394-13' (for lib1394 version 1.x), and 'libgstreamer0.10'. * OpenSceneGraph (optional; The ARToolKit OSG renderer requires OpenSceneGraph). Package 'openscenegraph'. * OpenVRML (optional; the ARToolKit VRML renderer requires OpenVRML): Binary deb packages are available from http://www.openvrml.org/. Opening the project files Windows Open the "VisualStudio" directory, then the appropriate directory for your compiler version, and then the "ARToolKit4.sln" solution file. Mac OS X Open the ARToolKit4.xcodeproj, found inside the Xcode folder. Linux The SDK build system uses a Configure script and makefiles. Changes in version 4.6.9 (this release) (2013-04-09). ----------------------------------------------------- New features: - ARToolKit for Android: Added a user-visible camera preferences screen to the examples. The preferences screen is automatically added to any applications based on ARBaseLib's ARActivity class. See http://www.artoolworks.com/support/library/ ARToolKit_for_Android_Camera_Preferences for more information. Bug fixes: - Fixed an initialisation error introduced in 4.6.6 which affected auto-thresholding modes (not enabled by default). - Android ARMovie example: fixed issue with playback not resuming when activity is paused and resumed. Changes in version 4.6.8 (2013-03-27). -------------------------------------- New features: - ARToolKit for Android now includes an example of playback of a video file on a marker surface. The example is NDK (native)-based and is named ARMovie. Movie playback is only supported by Android OS v4.0 ("Ice Cream Sandwich") and later (Android API level 14), and support varies in quality and reliability from device to device. It is highly recommended that you provide alternate playback mechanisms for devices where playback in the AR environment cannot proceed, e.g. full screen playback. Enhancements: - On iOS and Android examples which load markers from a configuration file (iOS: ARApp2, ARAppMovie, ARAppOSG; Android: ARNativeOSG), the tracking will now automatically be set to match the types of square markers (template (pictorial) vs. matrix (barcode)) used in the configuration file. It is not recommended that template and matrix markers are mixed in the same application, as this lowers the tracking reliability of both types. Bug fixes: - Android: A reliable fix has been found for the long-standing issue on some devices where after an app is exited and relaunched, the camera preview surface appears above the augmented surface. The fix adds a call to GLSurfaceView.setZOrderMediaOverlay(true), and then adds the camera preview to the window before the GLSurfaceView. Java-based apps will automatically inherit the fix (via ARBaseLib). Code based on the native examples should be updated with the updated method in the example's Activity.onStart() method. - Android: Improvements to the startup and shutdown of the example Activity classes mean that the previous requirement for the ARActivity to have noHistory:true set in its manifest has been removed. - Android: The DEBUG preprocessor macro is now defined in the native code modules when building in debug mode. (Previously, only NDEBUG was available, for release mode builds). Changes in version 4.6.7 (2013-03-05). -------------------------------------- Enhancements: - Extra functionality for handling OSG objects with animations has been added to arOSG. Bug fixes: - Android: fixed a bug introduced in 4.6.6 which affected optimised code running on devices with an ARMv7 CPU without NEON (including Nvidia Tegra 2-based devices). - Fixed a rendering bug in EdenSurfacesDraw (added in 4.6.6). Changes in version 4.6.6 (2013-02-11). -------------------------------------- New features: - A new Android native example demonstrated loading of square markers and rendereing with OSG. Enhancements: - Portions of the utility library libEden's "Surfaces" interface for texture handling has been reworked. A new function EdenSurfacesDraw provides a convenient method for drawing a texture in an OpenGL scene. - For the iOS NFT examples, loading/unloading of the .fset data has been moved into the ARMarkerNFT class. For the purposes of page numbering, a weak reference to the data is still held in the ARViewController class. With this change, it is now possible to get the width and height of an NFT surface by querying marker_width and marker_height. Previously this was possible only for square markers. - iOS/Android (ARM) improved performance of image processing for auto-thresholding and NFT. For native Android applications, the Android "cpufeatures" static library must be linked along with ARToolKit's native libraries. - iOS: Improvements to -capturePhoto method and enabled options for optimised flipping/rotating of incoming video. Also enabled "photo", cif (352x288) and 1080p (1920x1080) video resolutions. Changes in version 4.6.5 (2013-01-14). -------------------------------------- New features: - In the OSG-based examples on the desktop platforms (simpleOSG and simpleOSGFilter) support is now included for loading common image formats as models. Additionally, a transparency hint can be supplied. This allows for (for example) transparent .png files to be displayed on markers. An example file has been included in these examples, displaying the ARToolworks logo on the "sample2" pattern. Changes in version 4.6.4 (2012-12-21). -------------------------------------- New features: - Android: Asset handling on Android has been overhauled. Previously, assets required by the native code were unpacked in the Activity's onCreate() method to a folder named "AR" in the external storage, resulting in wasted launch time, unreclaimed storage space if the app was uninstalled, and potentially, asset conflicts. Now, assets are unpacked in an Application subclass to the application's cache on the internal storage. On subsequent launches, the assets are used from cache, saving time. Also, if space on the device is short, Android can clear this cache automatically, or the user manually. Finally, if the app is uninstalled, this space is reclaimed. One rule needs to be observed: if the application's assets are changed, the "VersionCode" field (an integer) in the application's AndroidManifest.xml MUST be changed (usually incremented). Enhancements: - iOS: In iOS video module, added tokens for iPad (4th generation) and iPad mini. Also, renamed iPad (March 2012) to iPad (3rd generation). Both new iPads use the same camera calibration as the iPad 3. - iOS: In CameraVideo, added "flipH" property, and "-capturePhoto" method. - Android: Transfer of video frames from Java to native now always uses JNI_ABORT in the operation. Previously, this behaviour was seen by default on some devices, while others were engaging in expensive reverse copies (causing a lot of garbage collector activity). This is a performance enhancement. Bug fixes: - iOS: Corrected an issue under iOS 6 where the ARViewController was getting unwanted autorotations as the device was rotated. See http://www.artoolworks.com/support/library/ Updating_an_AR_application_with_the_latest_ARToolKit_for_iOS_example_code for more info. - Added an ARLOGperror() macro and used it where required. This should improve debug output on Android. - iOS: The obsolete "screenshot" method has been removed from ARViewController. The recommended means of taking a snapshot of the ARView is -snapshot and related methods in ARApp's ARViewController.m. Other changes: - Android: Changed ARToolKit.java's initialiseNative method to expect path to resources directory, and changed ARActivity.java to supply the cache directory as working directory. Updated Java-based examples to match. However, the native (NDK-based) examples will infer the path to the cache directory based on the package name. This will be improved in a later release. - iOS: In the NFT examples, trackingSub has been made identical to the version on the desktop-OS examples. Changes in version 4.6.3 (2012-12-06). -------------------------------------- New features: - The OpenSceneGraph (OSG) model loader and renderer is now supported in ARToolKit for Android. At present, support is limited to NDK-based applications. A new Android example nftBook provides a full demonstration of OSG rendering. The Android.mk file shows how to link correctly. Note that prior to linking, the OSG libraries are extremely large, but will shrink considerably after symbol and dead code stripping during linking. OSG version 3.1.4 is supplied. Enhancements: - Android: Updated to build with Android NDK r8c, and added support for x86 and mips architectures. Updated to OpenCV 2.4.3. These changes require dropping support for Android 2.1 (API level 7). Android 2.2 (API level 8) is now the minimum supported version. - Video encoded with an alpha channel is now supported by the QuickTime video input module. (Available on 32-bit Windows and Mac OS X only, can be selected by using "-device=QUICKTIME" for video config.) The calling application must enabled blending on the OpenGL texture for video with an alpha channel to render correctly. (Typically: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND);) Bug fixes: - A bug in mk_patt which prevented pattern-based square markers with non-standard border sizes being correctly saved has been fixed. Markers generated with non-standard border sizes should be regenerated. - A correction to a macro in video2.c now allows the new VideoImage module to open correctly on non-Mac OS X platforms. Other changes: - The Android ARNativeNFT example has been renamed to nftSimple, for consistency with other supported ARToolKit platforms. Changes in version 4.6.2 (2012-10-29). -------------------------------------- Enhancements: - A new video input module "VideoImage" allows input from one or more JPEG images. This module is enabled by default on Windows, Linux and Mac OS X, and can also be enabled on iOS with a single change to include/AR/config.h. - iOS: Add a notification and properties to ARView for touch events. - iOS: In ARAppOSG's VEObjectOSG, listen for touches and correctly work out when they intersect the models. Bug fixes: - Fixed a serious issue with filtering. On all platforms using the ARMarker structure or class, filters were not being automatically reset after loss of tracking, resulting in some circumstances in the filtered position placing the object well outside the field of view. This bug fix should solve one source of the "disappearing object" bug in ARToolKit for Unity. - Created a user-editable constant "PAGES_MAX" for the NFT examples (nftSimple & nftBook on Mac OS X, Windows and Linux; ARAppNFT & ARAppNFTOSG on iOS, ARNativeNFT on Android) which sets the maximum number of NFT pages that may be specified in the markers.dat file. - iOS: Corrected a bug in ARView in touch-coord projection when the OpenGL content was drawn rotated with the device. - iOS: Fixed bug where some of the iPhone .nib files were missing the "fullscreen" property on their UIWindow instances, resulting in loss of touch events along the bottom of the screen. - iOS: Added clearing of stencil buffer (when present, which by default was never), in ARView. Changes in version 4.6.1 (2012-10-03). -------------------------------------- Enhancements: - Support for iPhone 5 and iPod touch 5th Generation screen size and cameras. - Support for Apple's iOS 6 has been added. Support for iOS 6.0 requires use of Xcode 4.5, and this has a number of consequences; binaries are now built as armv7 + armv7s. armv6 is no longer supported, meaning that the minimum deployment target is now iOS 4.3, and the iPhone 3G can no longer be supported (the oldest supported model is now the iPhone 3GS). The project files have been updated to reflect this change. Users who still wish to support iPhone 3G can continue to use ARToolKit for iOS 4.6.0 (release 11) with Xcode 4.4.x.' - The bundled OpenSceneGraph libraries have been updated to v3.1.3 on iOS. Bug fixes: - A problem with texture loading when using Wavefront .obj models in the Android examples has been fixed. Now, a new function glmReadOBJ2 delays loading and submission of the textures until the model is ready to be drawn. Previously, texture loading was performed when the model was loaded, and typically no OpenGL context would be valid at that point. - On Android, debug output now goes to the Android logging facility, meaning that debug output from native ARToolKit should now be visible in Logcat (with the log tag "libar"). - calib_camera now accepts file names with spaces when saving the calibrated parameters. - Extraneous header inclusions removed from simpleMovie.c. Changes in version 4.6.0 (2012-08-31). -------------------------------------- New features: - NFT tracking is now included in all ARToolKit releases on all platforms. - Two new examples NFT-based for the desktop platforms: nftSimple, and nftBook. These display simple and advanced rendering on NFT surfaces. The formats used in the markers.dat and objects.dat file match those found in the ARToolKit for iOS and Android NFT examples. - NFT dataset creation utilities with the same improved ease of use and functionality as found on the mobile platforms are now provided for the desktop platforms. This means NFT datasets can be shared seamlessly between applications on mobile and desktop. The genTexData utility replaces the genImageSet, genFeatureMap, genFeatureSet and makeKpmTemplate utilities. The dispFeatureSet replaces the dispFeatureMap and checkKpmTemplate utilities. Enhancements: - The checkid utility has had some minor improvements in command-line handling and the types of information displayed. Please see its help page. - If opening movie files as video streams (via the QuickTime video module on Mac OS X or Windows), note that only URLs are now accepted. To construct a "file://" URI for a local file, a new convenience function arUtilGetFileURI has been added to libAR. The simpleMovie example shows the new simplified usage. - Pixel format information is now handled more consistently throughout the SDK, with AR_PIXEL_FORMAT used everywhere and AR_PIXEL_FORMAT_INVALID used to signal an invalid or unhandled format. - The calib_camera, calib_stereo and check_id applications have been improved and enhanced with better handling of command-line options. Run these utilities with the -h or --help option to see a summary of available options. - The winDF video module for interfacing with the Point Grey FlyCapture SDK (Windows-only) has been enhanced with some runtime configurable options. See http://www.artoolworks.com/support/library/ Configuring_video_capture_in_ARToolKit_Professional# AR_VIDEO_DEVICE_WINDOWS_DRAGONFLY for details. - The OSG-based projects now build for 32- and 64-bit on Mac OS X, provided OSG v3.1.3 or later is used. See http://www.artoolworks.com/dist/openscenegraph for an installer for OSG for Mac OS X. - A full OSG release is now bundled with ARToolKit for Windows. Bug fixes: - When using calib_camera or calib_stereo, camera frame sizes bigger than the screen were being cropped. This has been corrected by retaining the full frame tracking but scaling the drawn frame onscreen. - A buffer overrun error in arUtilGetFileURI has been fixed. Other changes: - For examples using gsub_lite, initialisation via arglSetup has changed. Now, an ARParam structure (holding the camera parameters) and pixel format are passed in instead of an ARHandle. If debug display mode functionality is required (for non-NFT tracking), this is now initialised separately in a new call. For example, in your non-NFT applications, change: gArglSettings = arglSetupForCurrentContext(gARHandle); to: gArglSettings = arglSetupForCurrentContext(&gARTCparam, arVideoGetPixelFormat()); arglSetupDebugMode(gArglSettings, gARHandle); See main() in simpleLite.c for example usage. - Support for Microsoft Visual Studio 2008 SP1 has been dropped. Known issues in this release. ----------------------------- - No known issues. Changes in earlier releases. ---------------------------- Please see the file ChangeLog.txt. -- EOF
ChangeLog
ARToolKit Professional ChangeLog. ================================= Changes in version 4.6.9 (this release) (2013-04-09). ----------------------------------------------------- New features: - ARToolKit for Android: Added a user-visible camera preferences screen to the examples. The preferences screen is automatically added to any applications based on ARBaseLib's ARActivity class. See http://www.artoolworks.com/support/library/ ARToolKit_for_Android_Camera_Preferences for more information. Bug fixes: - Fixed an initialisation error introduced in 4.6.6 which affected auto-thresholding modes (not enabled by default). - Android ARMovie example: fixed issue with playback not resuming when activity is paused and resumed. Changes in version 4.6.8 (2013-03-27). -------------------------------------- New features: - ARToolKit for Android: Added a user-visible camera preferences screen to the examples. The preferences screen is automatically added to any applications based on ARBaseLib's ARActivity class. See http://www.artoolworks.com/support/library/ ARToolKit_for_Android_Camera_Preferences for more information. Bug fixes: - Fixed an initialisation error introduced in 4.6.6 which affected auto-thresholding modes (not enabled by default). - Android ARMovie example: fixed issue with playback not resuming when activity is paused and resumed. Changes in version 4.6.8 (2013-03-27). -------------------------------------- New features: - ARToolKit for Android now includes an example of playback of a video file on a marker surface. The example is NDK (native)-based and is named ARMovie. Movie playback is only supported by Android OS v4.0 ("Ice Cream Sandwich") and later (Android API level 14), and support varies in quality and reliability from device to device. It is highly recommended that you provide alternate playback mechanisms for devices where playback in the AR environment cannot proceed, e.g. full screen playback. Enhancements: - On iOS and Android examples which load markers from a configuration file (iOS: ARApp2, ARAppMovie, ARAppOSG; Android: ARNativeOSG), the tracking will now automatically be set to match the types of square markers (template (pictorial) vs. matrix (barcode)) used in the configuration file. It is not recommended that template and matrix markers are mixed in the same application, as this lowers the tracking reliability of both types. Bug fixes: - Android: A reliable fix has been found for the long-standing issue on some devices where after an app is exited and relaunched, the camera preview surface appears above the augmented surface. The fix adds a call to GLSurfaceView.setZOrderMediaOverlay(true), and then adds the camera preview to the window before the GLSurfaceView. Java-based apps will automatically inherit the fix (via ARBaseLib). Code based on the native examples should be updated with the updated method in the example's Activity.onStart() method. - Android: Improvements to the startup and shutdown of the example Activity classes mean that the previous requirement for the ARActivity to have noHistory:true set in its manifest has been removed. - Android: The DEBUG preprocessor macro is now defined in the native code modules when building in debug mode. (Previously, only NDEBUG was available, for release mode builds). Changes in version 4.6.7 (2013-03-05). -------------------------------------- Enhancements: - Extra functionality for handling OSG objects with animations has been added to arOSG. Bug fixes: - Android: fixed a bug introduced in 4.6.6 which affected optimised code running on devices with an ARMv7 CPU without NEON (including Nvidia Tegra 2-based devices). - Fixed a rendering bug in EdenSurfacesDraw (added in 4.6.6). Changes in version 4.6.6 (2013-02-11). -------------------------------------- New features: - A new Android native example demonstrated loading of square markers and rendereing with OSG. Enhancements: - Portions of the utility library libEden's "Surfaces" interface for texture handling has been reworked. A new function EdenSurfacesDraw provides a convenient method for drawing a texture in an OpenGL scene. - For the iOS NFT examples, loading/unloading of the .fset data has been moved into the ARMarkerNFT class. For the purposes of page numbering, a weak reference to the data is still held in the ARViewController class. With this change, it is now possible to get the width and height of an NFT surface by querying marker_width and marker_height. Previously this was possible only for square markers. - iOS/Android (ARM) improved performance of image processing for auto-thresholding and NFT. For native Android applications, the Android "cpufeatures" static library must be linked along with ARToolKit's native libraries. - iOS: Improvements to -capturePhoto method and enabled options for optimised flipping/rotating of incoming video. Also enabled "photo", cif (352x288) and 1080p (1920x1080) video resolutions. Changes in version 4.6.5 (2013-01-14). -------------------------------------- New features: - In the OSG-based examples on the desktop platforms (simpleOSG and simpleOSGFilter) support is now included for loading common image formats as models. Additionally, a transparency hint can be supplied. This allows for (for example) transparent .png files to be displayed on markers. An example file has been included in these examples, displaying the ARToolworks logo on the "sample2" pattern. Changes in version 4.6.4 (2012-12-21). -------------------------------------- New features: - Android: Asset handling on Android has been overhauled. Previously, assets required by the native code were unpacked in the Activity's onCreate() method to a folder named "AR" in the external storage, resulting in wasted launch time, unreclaimed storage space if the app was uninstalled, and potentially, asset conflicts. Now, assets are unpacked in an Application subclass to the application's cache on the internal storage. On subsequent launches, the assets are used from cache, saving time. Also, if space on the device is short, Android can clear this cache automatically, or the user manually. Finally, if the app is uninstalled, this space is reclaimed. One rule needs to be observed: if the application's assets are changed, the "VersionCode" field (an integer) in the application's AndroidManifest.xml MUST be changed (usually incremented). Enhancements: - iOS: In iOS video module, added tokens for iPad (4th generation) and iPad mini. Also, renamed iPad (March 2012) to iPad (3rd generation). Both new iPads use the same camera calibration as the iPad 3. - iOS: In CameraVideo, added "flipH" property, and "-capturePhoto" method. - Android: Transfer of video frames from Java to native now always uses JNI_ABORT in the operation. Previously, this behaviour was seen by default on some devices, while others were engaging in expensive reverse copies (causing a lot of garbage collector activity). This is a performance enhancement. Bug fixes: - iOS: Corrected an issue under iOS 6 where the ARViewController was getting unwanted autorotations as the device was rotated. See http://www.artoolworks.com/support/library/ Updating_an_AR_application_with_the_latest_ARToolKit_for_iOS_example_code for more info. - Added an ARLOGperror() macro and used it where required. This should improve debug output on Android. - iOS: The obsolete "screenshot" method has been removed from ARViewController. The recommended means of taking a snapshot of the ARView is -snapshot and related methods in ARApp's ARViewController.m. Other changes: - Android: Changed ARToolKit.java's initialiseNative method to expect path to resources directory, and changed ARActivity.java to supply the cache directory as working directory. Updated Java-based examples to match. However, the native (NDK-based) examples will infer the path to the cache directory based on the package name. This will be improved in a later release. - iOS: In the NFT examples, trackingSub has been made identical to the version on the desktop-OS examples. Changes in version 4.6.3 (2012-12-06). -------------------------------------- New features: - The OpenSceneGraph (OSG) model loader and renderer is now supported in ARToolKit for Android. At present, support is limited to NDK-based applications. A new Android example nftBook provides a full demonstration of OSG rendering. The Android.mk file shows how to link correctly. Note that prior to linking, the OSG libraries are extremely large, but will shrink considerably after symbol and dead code stripping during linking. OSG version 3.1.4 is supplied. Enhancements: - Android: Updated to build with Android NDK r8c, and added support for x86 and mips architectures. Updated to OpenCV 2.4.3. These changes require dropping support for Android 2.1 (API level 7). Android 2.2 (API level 8) is now the minimum supported version. - Video encoded with an alpha channel is now supported by the QuickTime video input module. (Available on 32-bit Windows and Mac OS X only, can be selected by using "-device=QUICKTIME" for video config.) The calling application must enabled blending on the OpenGL texture for video with an alpha channel to render correctly. (Typically: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND);) Bug fixes: - A bug in mk_patt which prevented pattern-based square markers with non-standard border sizes being correctly saved has been fixed. Markers generated with non-standard border sizes should be regenerated. - A correction to a macro in video2.c now allows the new VideoImage module to open correctly on non-Mac OS X platforms. Other changes: - The Android ARNativeNFT example has been renamed to nftSimple, for consistency with other supported ARToolKit platforms. Changes in version 4.6.2 (2012-10-29). -------------------------------------- Enhancements: - A new video input module "VideoImage" allows input from one or more JPEG images. This module is enabled by default on Windows, Linux and Mac OS X, and can also be enabled on iOS with a single change to include/AR/config.h. - iOS: Add a notification and properties to ARView for touch events. - iOS: In ARAppOSG's VEObjectOSG, listen for touches and correctly work out when they intersect the models. Bug fixes: - Fixed a serious issue with filtering. On all platforms using the ARMarker structure or class, filters were not being automatically reset after loss of tracking, resulting in some circumstances in the filtered position placing the object well outside the field of view. This bug fix should solve one source of the "disappearing object" bug in ARToolKit for Unity. - Created a user-editable constant "PAGES_MAX" for the NFT examples (nftSimple & nftBook on Mac OS X, Windows and Linux; ARAppNFT & ARAppNFTOSG on iOS, ARNativeNFT on Android) which sets the maximum number of NFT pages that may be specified in the markers.dat file. - iOS: Corrected a bug in ARView in touch-coord projection when the OpenGL content was drawn rotated with the device. - iOS: Fixed bug where some of the iPhone .nib files were missing the "fullscreen" property on their UIWindow instances, resulting in loss of touch events along the bottom of the screen. - iOS: Added clearing of stencil buffer (when present, which by default was never), in ARView. Changes in version 4.6.1 (2012-10-03). -------------------------------------- Enhancements: - Support for iPhone 5 and iPod touch 5th Generation screen size and cameras. - Support for Apple's iOS 6 has been added. Support for iOS 6.0 requires use of Xcode 4.5, and this has a number of consequences; binaries are now built as armv7 + armv7s. armv6 is no longer supported, meaning that the minimum deployment target is now iOS 4.3, and the iPhone 3G can no longer be supported (the oldest supported model is now the iPhone 3GS). The project files have been updated to reflect this change. Users who still wish to support iPhone 3G can continue to use ARToolKit for iOS 4.6.0 (release 11) with Xcode 4.4.x.' - The bundled OpenSceneGraph libraries have been updated to v3.1.3 on iOS. Bug fixes: - A problem with texture loading when using Wavefront .obj models in the Android examples has been fixed. Now, a new function glmReadOBJ2 delays loading and submission of the textures until the model is ready to be drawn. Previously, texture loading was performed when the model was loaded, and typically no OpenGL context would be valid at that point. - On Android, debug output now goes to the Android logging facility, meaning that debug output from native ARToolKit should now be visible in Logcat (with the log tag "libar"). - calib_camera now accepts file names with spaces when saving the calibrated parameters. - Extraneous header inclusions removed from simpleMovie.c. Changes in version 4.6.0 (2012-08-31). -------------------------------------- New features: - NFT tracking is now included in all ARToolKit releases on all platforms. - Two new examples NFT-based for the desktop platforms: nftSimple, and nftBook. These display simple and advanced rendering on NFT surfaces. The formats used in the markers.dat and objects.dat file match those found in the ARToolKit for iOS and Android NFT examples. - NFT dataset creation utilities with the same improved ease of use and functionality as found on the mobile platforms are now provided for the desktop platforms. This means NFT datasets can be shared seamlessly between applications on mobile and desktop. The genTexData utility replaces the genImageSet, genFeatureMap, genFeatureSet and makeKpmTemplate utilities. The dispFeatureSet replaces the dispFeatureMap and checkKpmTemplate utilities. Enhancements: - The checkid utility has had some minor improvements in command-line handling and the types of information displayed. Please see its help page. - If opening movie files as video streams (via the QuickTime video module on Mac OS X or Windows), note that only URLs are now accepted. To construct a "file://" URI for a local file, a new convenience function arUtilGetFileURI has been added to libAR. The simpleMovie example shows the new simplified usage. - Pixel format information is now handled more consistently throughout the SDK, with AR_PIXEL_FORMAT used everywhere and AR_PIXEL_FORMAT_INVALID used to signal an invalid or unhandled format. - The calib_camera, calib_stereo and check_id applications have been improved and enhanced with better handling of command-line options. Run these utilities with the -h or --help option to see a summary of available options. - The winDF video module for interfacing with the Point Grey FlyCapture SDK (Windows-only) has been enhanced with some runtime configurable options. See http://www.artoolworks.com/support/library/ Configuring_video_capture_in_ARToolKit_Professional# AR_VIDEO_DEVICE_WINDOWS_DRAGONFLY for details. - The OSG-based projects now build for 32- and 64-bit on Mac OS X, provided OSG v3.1.3 or later is used. See http://www.artoolworks.com/dist/openscenegraph for an installer for OSG for Mac OS X. - A full OSG release is now bundled with ARToolKit for Windows. Bug fixes: - When using calib_camera or calib_stereo, camera frame sizes bigger than the screen were being cropped. This has been corrected by retaining the full frame tracking but scaling the drawn frame onscreen. - A buffer overrun error in arUtilGetFileURI has been fixed. Other changes: - For examples using gsub_lite, initialisation via arglSetup has changed. Now, an ARParam structure (holding the camera parameters) and pixel format are passed in instead of an ARHandle. If debug display mode functionality is required (for non-NFT tracking), this is now initialised separately in a new call. For example, in your non-NFT applications, change: gArglSettings = arglSetupForCurrentContext(gARHandle); to: gArglSettings = arglSetupForCurrentContext(&gARTCparam, arVideoGetPixelFormat()); arglSetupDebugMode(gArglSettings, gARHandle); See main() in simpleLite.c for example usage. - Support for Microsoft Visual Studio 2008 SP1 has been dropped. Changes in version 4.5.11 (2012-07-18). --------------------------------------- Enhancements: - Handling of pre-supplied iOS camera calibration data has been improved. More information can be found in the iOS release notes. - The artoolkit-setenv script (which sets the ARTOOLKIT_4_ROOT environment variable on Mac OS X and Linux) should now function correctly on Mac OS X again. - Add Android-compatibility to arUtilChangeToResourcesDirectory(). The current "best" Android behaviour is to change to the root of the external storage (typically /mnt/sdcard or /sdcard (pre-Android OS 3.0)). Bug fixes: - The default filter cutoff (5 Hz) was a bit too low. The default is now 15Hz. This can of course be changed by the user. - Fixed a packaging error on Windows installers that left out some files required by the simpleOSG and simpleOSGFilter examples. Changes in version 4.5.10 (2012-07-04). --------------------------------------- Enhancements - Improved the Windows configure script. Changes in version 4.5.9 (2012-04-17). -------------------------------------- Bug fixes: - iOS: Fixed bug introduced in version 4.5.8 whereby incorrect tear-down of the camera connection could under some circumstances lead to a crash. - iOS: Corrected Objective C object disposal in case of initialisation failure in VirtualEnvironment and VEObject* classes. Other changes: - iOS/Android: Changed marker handling to search for maximum of 30 markers per frame, and maximum of 25 picture (template) markers. (Limits on other platforms are 60 and 50 respectively.) - Android: the ARSimpleBarcode example has been renamed ARNativeBarcode, to better reflect its structure. - iOS: Users of the MovieVideo class can now listen for the NSNotification MovieVideoPlayBackEndedNotification to be notified of the end of playback of a movie file. - iOS: Improved handling of errors during movie loading in MovieVideo and VEObjectMovie classes. - iOS: Added correct compile-time flag for disabling Thumb code-generation when using LLVM compiler. Changes in version 4.5.8 (2012-03-28). -------------------------------------- Enhancements: - Added support for the iPad (March 2012) to the iOS release. Also improved support for future iOS-based devices. Bug fixes: - Fixed bug in an OSG header encountered when using Xcode 4.3.x. Other changes: - Modification in behaviour of arPattLoadFromBuffer to allow use of const string parameter. Changes in version 4.5.7 (2012-02-14). -------------------------------------- Enhancements: - Added arUtilChangeToResourcesDirectory function to allow one-line control of application resource path search behaviour. Bug fixes: - Mac OS X: Fixes for calling into the QuickTime7 video module from non-Objective C applications. Other changes: - Support for Microsoft Visual Studio 2005 SP1 (vs80sp1) has been dropped. - SGI Irix has not been supported for some time, and has now been dropped. Changes in version 4.5.6 (2011-10-18). -------------------------------------- Enhancements: - iOS: The iPhone 4S is now supported; a full set of camera calibration files is included. Bug fixes: - iOS: Some memory leaks in marker and object file loading have been fixed. Changes in version 4.5.5 (2011-08-09). -------------------------------------- Enhancements: - Extended controls and modes for ARvideo 1394dc. - Provides support for ARToolKit NFT v3.50.0. - Added matrix scaling functions to EdenMath. - arOSG now supports the concept of a "local transform". This is applied after the object's normal pose transform. Typically the pose transform is used to set the modelview matrix for the object, so the local transform allows translation, rotation, scaling or any combination Bug fixes: - Changed default threshold mode back to MANUAL. Auto modes have proven unreliable and will be improved in a future release. Changes in version 4.5.4 (2011-05-30). -------------------------------------- Enhancements: - Extended controls and modes for ARvideo 1394dc. - Provides support for ARToolKit NFT v3.50.0. Changes in version 4.5.3 (2011-05-05). -------------------------------------- New features: - An online 2D barcode marker generator is available now at http://www.artoolworks.com/support/app/marker.php. Enhancements: - The 4x4 barcode marker set, and two new error-checking and correction codes can now be selected at runtime. - check_id now has command-line switches to control parameters of the markers being used. Bug fixes: - A bug that prevented use of variable-border size markers has been fixed. Changes in version 4.5.2 (2011-04-20). -------------------------------------- Enhancements: - arOSG now allows lighting to be turned on or off per model in the model .dat files. Also, it now allows for setting of viewpoints with the origin left or below (0,0). - A programmatic interface to the QuickTime movie interface is now exposed as <AR/sys/videoQuickTimeMovie.h>. The QuickTime "movie" object can be retrieved via a new function call ar2VideoGetMovieQuickTime(). - A number of iOS-specific code improvements are documented in the iOS release notes. Bug fixes: - ar2VideoGetParams now correctly accepts a pointer to a string for the returned string parameter. - arOSG now turns off all ambient lighting. - The examples now create a window the same size as the incoming camera frame. Previously, a hard-coded window size was used. - A number of iOS-specific bug fixes are documented in the iOS release notes. Changes in version 4.5.1 (2011-03-18). -------------------------------------- Enhancements: - The arOSG library has added support for intersection queries, plus enabling/disabling lighting. Also, much more state information can now be queried. Bug fixes: - Mac OS X: An error which occured when closing the video stream has been corrected. - Mac OS X: The QuickTime7 video module will now default to supplying 32-bit BGRA pixels on Intel architectures and 32-bit ARGB pixels on ppc architectures. This can be overridden (e.g. to supply 2vuy or yuvs-format pixels) using the video config string. Changes in version 4.5.0 (2011-01-24). -------------------------------------- New features: - arFilterTransMat functions to provide pose-estimate filtering. - Support for Microsoft Visual Studio 2010. - mk_patt can now train markers with non-standard border widths. The command line switch "-border=n" (n between 0 and 0.5 (not inclusive)) specifies the desired border width as a proportion of the marker width. The portion of the marker which will be used as the pattern is now indicated by mk_patt by outlining in blue. Note that in order to use markers with non-standard border widths, the border width must be specified in the application by using the arSetBorderSize() function (see reference documentation for more information.) Changes in version 4.5.0d3 (2011-01-06). ---------------------------------------- New features: - New QuickTime7 video input module for Mac, using the new QTKit Capture APIs. It is now the default video input module on the Mac. This new module offers a dramatic improvement in capture speed from high-definition video sources. If desired, ARToolKit can now be built with Mac OS X 10.6 the minimum version supported. - New example simpleMovie, demonstrating use of the QuickTime video input module to show a video file on a marker. - New utility, check_id, which allows low-level debugging of multi-marker tracking, particularly barcode marker tracking. See http://www.artoolworks.com/support/library/Debugging_marker_recognition_problems for a tutorial. Other changes: - Support for Microsoft Visual Studio .NET 2003, and OpenVRML 0.14.3 have been dropped. Changes in version 4.5.0d2 (2010-11-22). ---------------------------------------- New features: - Variable marker border width. See documentation for arSetBorderSize()/arGetBorderSize(). - Error detection and correction codes with 3x3 matrix markers. Two modes are available, one using parity, and allowing for detection of single-bit errors with up to 32 markers, and one using a Hamming (6,3) code, allowing for detection of up to 3 bit errors and correction of up to 2 bit errors with up to 8 markers. Marker patterns for these modes can be found in the doc/patterns directory. - For identified square regions, which ultimately are not judged by ARToolKit to be known patterns, support is now included for discovering which stage of marker matching cutoff occured. See the documentation for the cutoffPhase member of the ARMarkerInfo structure. Enhancements: - On Mac OS X, adaptive thresholding makes use of the Accelerate framework for improved performance. Changes in version 4.5.0d1 (2010-10-05). ---------------------------------------- New features: - Adaptive thresholding. This algorithm adjusts the threshold intra-frame, and thus should help ARToolKit find markers when lighting condtions are non-uniform across a frame. Adaptive thresholding requires a fast computer, and is not enabled by default. The processing time taken is proportional to the number of pixels in the image; using an 800x600 image size or smaller is recommended. It can be enabled by calling arSetLabelingThreshMode(arHandle, AR_LABELING_THRESH_MODE_AUTO_ADAPTIVE); Manually changing the threshold will disable adaptive thresholding. The kernel size (AR_LABELING_THRESH_ADAPTIVE_KERNEL_SIZE_DEFAULT) must be an odd number, and can be changed at compile-time. Larger values will provide better thresholding but require a faster CPU. Changes in version 4.4.3 (2010-08-20). -------------------------------------- New features: - Added arVideoSaveImageJPEG() funtion, which saves video frame to a jpeg file. - Added a new auto threshold algorithm, based on Otsu's method, and changed this to the default method. Otsu's method typically selects a better threshold than the median, particularly when one or more markers are close to the camera. Enhancements: - Add new config token AR_ENABLE_MINIMIZE_MEMORY_FOOTPRINT. Enabled by default on iPhone, it removes support for the debug image, and saves several hundred KB of memory. Bug fixes: - Extraneous debug output from the pose estimator (ICP) now only present in debug builds, and goes to stderr. - Fix for small memory leak in arVideo. Changes in version 4.4.2 (this release) (2010-03-16). ----------------------------------------------------- New features: - Auto-thresholding. ARToolKit will now by default automatically adjust the binarization threshold to the median image brightness. The brightness is measured using a full-image histogram, which runs by default every 8 frames. Note that if your ARToolKit application manually sets the threshold at any time (including during initialization) the auto-thresholding will be disabled. - New OpenSceneGraph-based rendering library, arOSG. arOSG is intended to provide access to the modern plugin-based scene graph OpenSceneGraph, and its attendant model formats and graphical capabilities. An example and full API documentation is included. Enhancements: - Windows binaries of ARToolKit are now supplied with win64-x64 versions of ARICP. win32-i386 versions now also build to subfolder of lib. - Update Windows DragonFly video module for latest FlyCapture SDK release (changes submitted by Henry Chu). - Reduced contrast required to identify barcode patterns (changed AR_PATT_CONTRAST_THRESH2 in arConfig.h to 15.0). This should enhance detection of barcode patterns. Bug fixes: - Fixup of handling of path separators on Win32 in utility functions to support osgART Professional Editon v1.1.3 ARToolKit4 and ARToolKit4NFT tracker plugins. Changes in version 4.4.1 (2009-09-15). -------------------------------------- Bug fixes: - Moved some symbols from libARvideo to libAR to avoid requirement to co-link. Changes in version 4.4.0 (2009-07-16). -------------------------------------- New features: - Add line matching to pose estimator. - ARG: added "flipmode" for horizontal and vertical flipping. Enhancements: - Mac can also now use video1394dc. - New version of video1394dc, with headers and source, and configuration items. - Add draw square to ARG. - Add video pixel format name utility function. Bug fixes: - AR_AREA_MAX changed from 1e5 to 1e6. Tracking will now function better with HD images when marker is close to the camera. - Bug fixes in video1394dc. - Robust ppose estimator now makes better probability estimates. - Removal of 'static' qualifiers in multi lib. - Remove erroneous default video config in mk_patt for Windows DirectShow video. - Syntax error fixed in arViewerCapi.cpp. - Fix bug in videoQuickTime when UVC driver incorrectly reports frame timing. - Correct potential error in marker detection loop in examples. - Fix bug whereby request for a non-default pixel format was ignored by gsub_lite. - Change internal lib linkage in Xcode. - Removed some debug output from ARICP library. Changes in version 4.3.4 (2008-11-11). -------------------------------------- Enhancements: - Add support for 3 packed pixel formats (RGB565, RGBA5551 and RGBA4444). - Addition of asynchronous fetching of video frames. New function ar2VideoGetImageAsync. At present, implemented only in dummy video. - Support for requesting power-of-2 sized buffers (via config string "-bufferpow2") from dummy video lib. - Replaced all double-precision floating point declarations with a macro which can be redefined to single-precision floating point as an optimisation. - Add 4x3 and 8x6 multi patterns and PDFs and Letter-size multi PDF. - Change multi-marker loading to allow backwards compatibility with config files from ARToolKit v2.x. Bug fixes: - Some gstreamer fixes incorporated, including correct pre-rolling with some additional source types, correction of default video config, and compatibility with new gstreamer releases. - Fixes to dual-mode marker detection (two pass detection of both matrix and template markers). arSetPatternDetectionMode no longer incorrectly rejects two-pass modes as invalid. - Debug image alpha channel (where appropriate) is now set to opaque. - More headerDoc documentation added. Changes in version 4.3.3 (2008-02-18). -------------------------------------- New features: - Scripts to set and unset the ARTOOLKIT_4_ROOT environment variable have been added for the Linux and Mac OS X platforms. See the "share" directory. - A script "share/artoolkit4-config" allows 3rd-party applications to query ARToolKit build settings on the Linux and Mac OS X platforms. Bug fixes: - ARToolKit now assumes a little-endian architecture on Linux if the __BIG_ENDIAN__ macro is not defined by the preprocessor. - Change in multi-marker pattern file format (arMultiReadConfigFile); pattern filenames in a multimarker config file are now relative to the config file, rather than the working directory. Changes in version 4.3.2 (2008-01-20). -------------------------------------- New features: - A new example, multiCube, demonstrates the use of non-planar multimarker sets, in this case a cube. Sample PDFs for cube markers are in doc/patterns/Cubes. - Add VideoGStreamer (LGPL license) which uses the GStreamer library for video input. Copyright Hartmut Seichter and ARToolworks, Inc. Enhancements: - The environment variable ARTOOLKIT_4_CONFIG can now be used to globally set the video configuration to be used when none is specified in the call to ar(2)VideoOpen(). Bug fixes: - Configuration of Makefile builds (Linux, and optionally Mac OS X) has been cleaned up. - "-device=" option can now safely be passed to video input modules which don't use "-option" syntax. - gsub_lite is now correctly built in Makefile builds. Changes in version 4.3.1 (2008-01-08). -------------------------------------- Other changes: - Update Xcode project for Xcode 3.0 compatibility. - Add arVideoUtilGetPixelFormat to libARvideo (duplicate of libAR's arUtilGetPixelFormat) to allow independent linkage. Changes in version 4.3 (2007-10-31). ------------------------------------ New features: - Hirokazu Kato has rewritten his original fast pose estimator a modern algorithm. The new pose estimator offers comparable accuraccy, with much improved speed. - A robust pose estimator has been added. See the documentation for functions arGetTransMatRobust() and arGetTransMatStereoRobust(). These functions are also available under multi-marker tracking. - Examples for multi-marker tracking and stereo tracking added. - Video input via QuickTime from file and streaming video sources has been added on Mac OS X and Windows. Full documentation is available in the ARToolworks support library. - A set of utilities for Linux 1394dc video have been added: whitebalance, checkimage, listcamera. Enhancements: - Camera calibration is now performed using the OpenCV library and is greatly simplified. A new version 4 of the camera calibration parameters is now saved. Camera calibration files generated with the earlier (versions 1 through 3) of the camera calibration utility may still be used. The old camera calibration utility is available as calib_camera_old-v3. - Multi-marker tracking is now available in two modes, template (pictorial markers) and matrix (2D-barcode markers). These modes can be used exclusively or together in a two-pass arrangement. - Some convenience functions added to gsub library: argGetScreenSize(), argSetWindowSize(). - Video parameters under the Linux 1394dc video library can now be saved and restored. - ARvrml, the VRML renderer, now supports openvrml-0.16.6 on all platforms, and builds as a DLL on Windows to ease Building of programs that use ARvrml. Bug fixes: - arUtilSleep() now correctly operates in milliseconds on Unix-based systems. Other changes: - Minor changes in the parameters to some functions: please check the documentation for more information: arGetDebugMode(), arGetLabelingMode(), arGetLabelingThresh(), arGetImageProcMode(), arGetPattDetectionMode(), arGetMarkerExtractionMode(), arGetTransMat(), arGetTransMatStereo(), argGenImageTexture(). - The following functions have been removed: arGetTransMatSub(), arGetTransMatSubStereo(), arModifyMatrix(), arModifyMatrixStereo(), arGetAngle(), arGetRot(), arGetNewMatrix(), arGetInitRot(). Known issues in this release. ----------------------------- - The Mac video library does not yet use the new QuickTime 7 video pipeline. - SGI video input is missing. Changes in version 4.1.3 (2007-05-12). -------------------------------------- - Addition of routines to load and save optical calibration sets, updated calib_optical, and simpleLiteOptical example. Changes in version 4.1.2 (2007-04-24). -------------------------------------- - Addition of calib_optical tool for calibration of optical see-through camera-display combinations. Changes in version 4.1.1 (2007-04-03). ----------------------------------------------------- - Major modification to accommodate changing distortion function version at runtime. Several function prototypes have changed. - Lots of new headerDoc documentation in code. - Began maintaining ChangeLog inside release archives. -- EOF