HP Reveal has its own 3D engine, which can support a range of 3D model complexities from simple static models up to realistically textured, lit, rigged & animated 3D scenes, think of it more like a computer games engine and remember that processing power on portable devices is still limited.
To upload a 3D model as an Overlay, the Studio requires it to be packaged inside a '.tar' archive file which is very much like a '.zip' file. It can be created with a number of programs; we recommend one called ‘7zip’ - its free. Download it here.
A ‘.tar’ file must contain the following:
- .dae file (exported scene/model using OpenCollada or Collada exporter).
- .png textures file(s).
- .png thumbnail image (256x256 pixels) must be named ‘thumbnail’.
It can also contain:
- .mp3 sound file
- 'newconfig.cfg" file - more on that later in this article.
Make sure none of these files are contained within subfolders, this will cause the .tar file to be rejected by the Studio. Frequently we see that creating the .tar file on a Mac operating system will often create a folder automatically (as well as unnecessary temp files with a “._” prefix) – remove them & ensure all your files are in the root of the tar archive.
What 3D formats are supported?
Our 3D model support is based on the Collada format (v1.4 or v1.5), as exported by Maya and 3DS Max. We support the OpenCOLLADA Exporter and to a lesser extent the Autodesk Collada Exporter, however we strongly recommend the OpenCOLLADA Exporter.
How is a .dae file created?
A .dae file is a file exported from a 3D authoring program - of which there are plenty to choose from.
HP Reveal supports 3D models based on the Collada format (v1.4 or v1.5). For best results, the most compatible packages are 3ds Max or Maya 2012-2015, using the OpenCollada DAE Exporter. These are the programs our in-house creative team use and as such we can offer the best support for content created in them.
You can download the free OpenCollada exporter plugin for 3ds Max and Maya here.
Preparing the scene for export
It is not necessary to export all object within you 3D scene, things such as controllers/animation handles should not be exported unless desired.
From your scene you should export:
• Bones (if exporting rigged geometry)
Other 3D Software:
3D assets can be exported using the standard Collada - supported by most programs - exporter however they are far more unstable and prone to errors/unsupported features.
3DS Max export settings:
Use these Settings for the OpenCollada plugin for 3ds Max - these settings will support (provided they're set up correctly);
- Materials with all supported map - diffuse, specular colour, self-illumination, tangent normal maps.
- Animated objects.
- Skin modifiers.
- Morph modifiers (must be used under a Skin modifier).
- Point helpers.
- Point and Spot lights.
If you're not animating any of your 3d objects you don't need to worry about the "Animation" section - just leave it un-ticked.
Maya export settings:
These settings should be suitable to export exactly the same things as 3ds Max, listed above.
Cinema 4D export settings:
The Open Collada group has not yet released an OpenCollda plugin for Cinema 4D.
Cinema4D will export models and texture maps using Collada 1.4, but using Collada 1.5 will not export texture map.
Additionally the lighting & animation data is exported in a format not recognised by the HP Reveal engine – use of diffuse maps in the luminance channel can circumvent the lighting setback.
Blender export settings:
Blender's Collada exporter (according to their website) and from the tests we have done it is possible to export dae files with the following attributes:
- Materials with diffuse & specular colour maps.
- Animated objects.
- Skin modifiers.
- Point lights.
Our in-house testing with Blender is limited, but if you have to use a free 3D package to create you're assets - then this is the one we suggest.
Setting up your 3D file correctly:
These settings are primarily for 3ds Max, but most can be applied to any platform:
- Individual texture maps (.png format) have to be power of 2 textures: 32x32, 64x64, 128x128, 256x256, 512x512 and a maximum of 1024x1024.
- No procedural shaders, nodes or textures: all the textures have to be baked to maps or use standard shader with colour value.
- One material per mesh. If you need two materials then use two meshes.
- A material might be applied to several objects but objects can only have a single material applied to them.
- Multi materials/shaders are not supported.
- Use smaller texture maps where appropriate, consider the size your model(s) will actually appear on device's screen/how close the user will be able to get.
- Emissive, normal and diffuse maps are supported, as well as specular colour - which drives specular level. If you are not using the OpenCollada exporter, not all these maps will be supported.
- Displacement maps are not supported.
- Use the simplest shader possible for each situation. The order of complexity is as follows: Simple - constant < lambert < phong < blinn - Heavy
- Transparency blending is very processor intensive, if you use transparency on sections of mesh, put it in its own shader.
- Transparency on solid objects is not recommended and is better suited to planes - in some cases it can cause draw issues.
- Material & texture file names must not contain spaces/brackets/capitals, stick to lower-case characters & underscores.
- Material & texture file names must not start with a number.
- No more than 10,000-15,000 triangles, there is a direct trade-off between poly count and device performance.
- No N-gons (i.e. polygons that are more than 4 sides).
- Check for holes and flipped normals in the mesh as they may cause visual anomalies.
- Object names must not contain capital letters/spaces/brackets, stick to lower-case characters & underscores..
- Scene should be centred around the world origin (0,0,0) to ease placement in Studio.
- Meshes must not have any non-uniform scaling.
- Everything must be converted to editable polygons, with all the modifiers collapsed unless it is going to be rigged - in which case only the Skin modifier and Morpher (if used) would remain. Skin modifier at the top of the stack.
- Exported meshes should be triangulated on export - this is usually an option in the export window.
- No more than 20 objects (meshes) in a scene. Animated rigid geometry is less processor intensive than skinned geometry, but extra draw calls are more intensive. Ultimately, once you have passed 10 or so objects, it is something that needs to be approached on an individual basis
- Groups are not supported in the engine.
NOTE: Consider what you’re making and how much screen space it will take up - you won’t need 15,000 triangles and a 1024 square texture for an object that may only be 3cm high on an iPad screen.
As a rule of thumb keep everything as simple and optimized as possible - while still looking awesome.
- You need to add lights to your scene before you export, otherwise your model will appear black.
- Only omni/point lights are supported.
- Light value is based on the light’s colour value not intensity e.g. mid grey = 0.5 intensity multiplier.
- 3 lights are recommended – more than this will cause performance slow down on less powerful devices.
- Lights parameters cannot be animated, such as light colour.
Tip: if you don't want to use lights, you can put your model's diffuse texture map into the self-illumination channel. You won't need to export any lights in your scene this way.
- Default play speed of 3D overlays is 25fps.
- All animated export objects must have a key on the first and last frames.
- When exporting a ‘.dae’ you must bake keys in the Collada options (see above).
- No animated materials/material parameters.
- No animated light colour.
- All animation transforms are supported (Translate, Rotate and Scale).
- Do not scale to 0 (0.001 is supported)
- Bone names must not contain spaces, brackets or special characters – replace spaces with underscores if needed.
- The export rig should contain a maximum of 100 bones to optimise playback – the performance hit comes largely from skinning weight calculation. less bones = faster device performance.
- It is advisable to name all bones properly - naming conventions make it easier to see whats causing errors.
- Objects cannot be linked/parented to non-export objects – Position and Orientation constraint targets do not need to be exported.
- Make sure every vertex in a mesh with a skin modifier has a skinning weight.
In circumstance where a number of 3D assets are going to be used in a single Aura (for example, an interactive game), creating a .cfg file ensures that any 3D Overlay is correctly scaled and rotated upon upload to the Studio.
The .cfg file is a simple text document that can be created in notepad, and contains 8 lines of code:
By default the scale value is 1 - depending on your software's scale settings this might be too high.
It is important to note that in the 3ds Max environment the Z axis is up – in the Aurasma 3D environment Y is the up axis direction. Maya has a Z up axis - so will display upright in HP Reveal, each program differs so check which axis is up in the program you use.
Typically there are three ways to correct a dae with a different up-axis: rotate your scene 90 degrees before export, create a .cfg file or rotate the Overlay manually in the HP Reveal Studio’s 3D view.
The code example above shows that the scene has been rotated backwards by exactly 90 degrees, this therefore restores it to the correct orientation when viewed in HP Reveal.