metaio Mobile SDK FAQs
General questions
Which platforms are supported?
The
metaio Mobile SDK is currently supported on two major smartphone platforms:
- iOS (for optical tracking iOS 4.0 is required)
- Android (starting from version 2.2)
For each platform the
metaio Mobile SDK offers the similar functionality and behavior. This makes it easy to develop on one platform and later one port the application to a different platform.
The following platforms were previously supported and have been discontinued.
- Android 1.6 and 2.1
- Windows Mobile 6.5
- Symbian S60 (starting from FP1)
The following platforms are not supported due to technical limitations:
If you like to see the metaio Mobile SDK on another platform,
contact us.
What are the minimum hardware requirements?
The mimimun hardware requirement depend on the platform and the mobile phone. We fully support the iPhone 3G S and iPhone 4. For Android and custom platforms we expect an 800 Mhz processor and a dedicated graphics processor.
Minimum:
- CPU with about 800 MHz.
- CPU with ARMv7
- 32 MB RAM (without ROM memory).
- Integrated GPU with full OpenGL ES 2.0 support (PowerVR MB/MBX).
- Integrated camera with about a 3 Megapixel resolution.
Recommended:
- CPU with 1Ghz
- 64 MB RAM
- OpenGL 2.0 class GPU
What is Application Identifier and Signature?
The
Application Identifier (or Application ID) refers to a string that uniquely identifies the application. In case of iOS, it is the so called Bundle identifier, while on Android it is the
application package name declared in
AndroidManifest.
The
Application Signature refers to a string that correspondes to the
Application Identifier. Any application that is using
metaio Mobile SDK needs to provide an Application Signature string which has to match the Application Identifier.
Important: If the Application Identifier is changed, the corresponding Application Signature has to be changed as well.
Please refer also to the next question for generating an Application Signature from an Application Identifier.
How to generate an Application Signature for a given Application Identifier?
Creating an Application Signature is free of charge. The following steps are required:
- Register at the Mobile SDK Developer Portal
- Add the Application Identifier (i.e. Application ID) of your application. This will instantly create an according signature that corresponds to the Application ID. You will receive it via email or you can use it directly from the developer portal.
- Copy & paste the signature into your application for using it with the function
CreateUnifeyeMobileIPhone() or CreateUnifeyeMobileAndroid() (depending on the according platform).
Please note that whenever you change the Application Identifier a new Application Signature has to be created.
Which 3D content formats are supported?
The Mobile SDK supports
OBJ and
MD2 file formats. Also have a look at our content
tutorials, especially on how to export from
Blender and
3Ds Max.
What is the difference between PC SDK and the Mobile SDK?
The interfaces of the Mobile SDK and the PC SDK are very similar. Therefore, anyone with programming experience for Unifeye SDK can easily switch to mobile development.
How to create non-overlapping Junaio-like billboards
- Make sure that a valid tracking configuration for GPS/inertial sensors is loaded
- Create a billboard group by calling createBillboardGroup, this will return billboard group instance
- Next, add the billboards to this group by calling addBillboard
- Optionally, set billboard expand parameters by calling setBillboardGroupExpandFactors
The billboards will automatically expand if they overlap. For more details on the functions, please have a look at the
API documentation.
How to determine if we are currently tracking a target
To determine if the Mobile SDK is currently tracking a target, you can use the method getTrackingValues( int cosID ). This will return a pose structure which contains a quality value. This quality value will be 1.0 in case the system is currently tracking the respective coordinate system. In case it's not tracking anymore, but a smoothing fuser is active, the quality value will be 0.5. In all other cases the quality value is 0.0 to indiciate that the system is not tracking.
How to read Barcodes and QR codes?
Barcodes and
QR codes reading has been added to Mobile SDK v3.0. To use, you need to load a tracking configuration for barcodes reading. The following is an example configuration:
<TrackingData>
<Sensors>
<Sensor type="BarCodeSensorSource">
<SensorID>BarCodeSensor</SensorID>
<SensorCOS>
<SensorCosID>COS1</SensorCosID>
</SensorCOS>
</Sensor>
</Sensors>
</TrackingData>
Once the tracking configuration is loaded, the barcode (or QR code) data can be retrieved by calling
getValidTrackingValues.
The first pose will contain barcode data if its quality is greater than 0. The data can be obtained by calling
Pose.getAdditionalValues.
Updating to the new 3.0 SDK interface
We try to prevent API changes as much as possible, but sometimes it just makes sense to simpilfy the API to cleanly integrate new featuers. You may have a look at the new example applications for iPhone and Android, they show the new interfaces in detail. Other things you may keep in mind when updating your application are:
- The renderer needs to be initialized in a separate function initializeRenderer for Android and iPhone
- The android example do no longer require to directly create a camera in the application. This will be done by the SDK internally
- We added a new interface IUnifeyeMobileCallback to handle all the callback in a convinient way. For iPhone, there is also a delegate available.
- IUnifeyeMobile::getCoordinateSystemName() has bee removed
- displayRenderingFrameRateCounter(..) is no longer supported, please use getRendererFrameRate() and native GUI elements to draw a FPS counter.
- setImage( const ImageStruct& image ) is not supported, please use setImageSource(const std::string& source) instead
- setCameraFormat(..) has been replace by activateCamera(..) width a wished format
- freezeTracking(..) and unfreezeTracking(..) are now merged to setFreezeTracking( bool freeze )
- The onError callback has been replaced by direct error logging output
Creating Movie Textures
The movie textures can be used with any 3D geometry:
- loading a 3D geometry
- call geometry->setMovieTextre( filename )
The geometry you can use, is any 3D object, even animated MD2 models. The only thing to keep in mind is texture coordinates. Use a 256x256 texture, the movie will then be copied to the 176x144 upper left region.
To support video playback on Android and iPhone, the codec and video specifaction is limited. On the junaio.com developer section you will find a tutorial on how-to
convert a movie. There you will also find example 3D models. There is also an example movie for
download to start with.
How to create ID Markers?
ID markers can be created using Marker Generator Tool which can be found in
Unifeye Design installer.
A PDF containing all 512 ID Markers can be download from
here.
Known Issues
The following is a list of known issues with current Mobile SDK. If you experience any issues, please report us.
General
- Billboard geometries will not be correctly rendered if attached to camera coordinate system (0)
- Front facing camera is mirrored on iOS, not mirrored on Android
- texturecoordinates can sometimes have inaccuracies (visible on borders of semi-transparent shadow planes)
Android
The following are known issues on some of the Android devices
- Samsung Galaxy Tab 7"
- Some devices may not be able to start the camera.
- Loading large models can fail.
- Crashes if screen is locked and unlocked by the user.
- ASUS Eee Pad devices
- Back facing camera (0) fails on Asus EEE Pad Transformer TF101G and ASUS Eee Pad Slider SL101
Unity Plugin
- The Unity3d plugins currently do not support sensors (accelerometer, compass or location).
Android
The Android FAQs can be
found here.
iOS
The iOS FAQs can be
found here