In this tutorial it is assumed you have a working knowledge of creating a 3D character and applying a skeleton and control system in 3ds max, it will therefore focus on how to export a character in a way that is compatible with the HP Reveal Studio & 3D engine.
HP Reveal is capable of supporting relatively highly detailed models, however considerations need to be made based on the conditions your audience will find themselves in. For example, if your audience will have high-end phones and access to high-speed wifi then you have more of an opportunity to push the limits of the tech - if these conditions will not be met then it is best to avoid highly processor intensive models with large download size.
In order to successfully export geometry with a skeleton and a skin modifier, the following instructions should be followed:
- Objects being exported cannot be linked to objects which are not being exported. This will cause a Null Array error or may drag unnecessary information about the objects into the DAE
- Using a combination of position and orientation constraints will effectively lock one object to another. When one of those objects needs to follow the motion of the other, constrain it instead of linking it, otherwise constraining to a duplicate of itself will work - the constraint target does NOT need to be exported.
- Objects being exported can only have a single material applied to them, but multiple texture maps within a material’s channels are fine – multi-sub materials, blends, mixes or any form of procedural texturing, however, will be rejected.
- All colour, aside from flat solid colour, needs to be derived from a texture map.
- Do not animate the scale of anything to absolute 0 (0.01 is near enough to invisible on a phone screen).
- Any object can be part of a skin modifier however we recommend that only bones or point helpers are used. Removing zero weights (in the advanced tab of the skin modifier) will clear out unused vertex information and optimize the data exported. This methodology can also be used to clear the weight influences below a defined threshold, which will ultimately improve performance on the device.
As an example we will be using a cartoon mole character – made by HP Reveal’s in-house Creative team.
The control setup for this character is a conventional setup – he is a single editable poly object, including the pickaxe, and has a standard set of texture maps applied to a single material including diffuse, specular and normal bump.
About the Scene
It is recommended that scenes are managed in layers – this helps to ensure that export objects are separate from non-export objects.
This character consists of two skeleton rigs – an export skeleton, which is used in the skin modifier, and an intermediate skeleton, which allows for position and orientation constraints. All the characters created at HP Reveal follow this methodology.
As a first step, it is advisable to create a skeleton from scratch – this will then need to be duplicated so that there are two identical skeletons. Prefix each skeleton with an appropriate naming convention, for example ‘sk_’ for the skin skeleton and “int_” for the intermediate skeleton. Creating separate layers in each case is advised (as seen above).
Constraining the skin skeleton to the intermediate skeleton will allow for more complex rigging techniques. This is because these constraints will be applied to the intermediate skeleton and then baked down to simple position/rotation info once the skin skeleton is exported.
As you can see in this image – the number of exported objects (highlighted in white) are greatly outnumbered by the other bones, controllers and point helpers which drive the character, however they are not needed for export.
Objects not being exported can be linked into an exported hierarchy – but only applied to the child of the export objects. Adding another export object directly to the hierarchy would in effect create a gap which would cause any upload to the HP Reveal Studio to fail.
As mentioned earlier, objects being exported cannot be linked to objects which are not being exported, therefore all the objects here are either individual un-linked objects or the entire hierarchy itself being exported.
It is worth bearing in mind that linking is overridden by constraints and therefore objects can be constrained in totally different hierarchy set-ups as long as either the pivot points of each object occupy the same space, OR bone stretching has been disabled in the bone tools window.
Maya specific rule:
For exporting rigged characters in Maya it is necessary for any objects included in a skin/smooth bind effect to be parent to an object at world zero. Otherwise they objects will experience weird off-setting with their animation.
Once the correct layers have been selected (skin objects, mesh(s) and lights), choose export --> export selected.
Select the file type as DAE (OpenCollada).
This particular scene contains no animation so the animation section of the export window has been left clear. Obviously when you come to do this - you will have animation to export, so ticket the "enable export" checkbox in the animation rollout & set the ranges accordingly.
Ideally every rigged character should be exported and tested in app before being animated to ensure the rig is stable & avoid having to redo animation if a significant rig change is required.
Creating the .tar file:
Select the DAE file in your file browser and (if using 7zip) right-click and add it to archive. You can download 7Zip here, its free.
This will open 7zip file managers add to archive window – select the archive format to TAR and click OK.
Next, open up the TAR archive and drag and drop in the texture files applied to any meshes exported – in this case there are 3 files; mole_diffuse, mole_normal and mole_specular. The environment texture also seen in this folder was not applied to any export object and therefore is not referenced inside the DAE file & so doesn't need to go into the tar archive.
Create a thumbnail for your Overlay. It can be any 256x256 pixel PNG image however for 3D Overlays it is recommended a simple render of the asset is used.
Add the thumbnail to the tar archive and you are ready to upload to the Studio.
Finally upload the tar file to the Studio & test it out on your device.