CONSIDERATIONS FOR MODELING
→
Return to content preparation overview
When you create 3D content, there are some factors that need to be considered:
- Hardware: Will the application run on a highend PC or a netbook ?
- Camera: HD camera (1920x1080), Webcam (640x480) or built-in camera (320x240) ?
- User: Visitor at a trade fair, customer at a shop, designer, children ?
- Deployment: Over the internet or as CD/DVD ?
These factors have direct influence on the quality of the CG content. An AR application for a designer using a HD camera, running on
a high end workstation with a powerful graphics card and a full HD display requires much more detail, (high poly models, large textures,
smooth animations) than an application that has to run on a netbook. As most AR scenarios make use of a live video stream it is important,
that the AR scene can be rendered in realtime (> 20 fps) to create a smooth live augmentation.
It is very important to keep the realtime aspect in mind, because for a lot of scenarios there are 3D assets already available, which were
created for offline rendering. Most of the time these datasets cannot be used for realtime rendering, as they tend to be very complex.
(Millions of polygons, complex shading networks, very high res textures) The rendertime for this data can sometimes take hours for a single
image. For a use in realtime the geometries and textures would have to be reduced (or completely remodeled), and the shading networks
need to be replaced with VRLM compatible materials or realtime shaders. The following section presents a few tips and tricks for optimizing
3D data for AR scenes and realtime rendering in general.
Coordinate System
The coordinate system for markers and markerless patterns in Unifeye Design is Z-up. However, most DCC tools use Y-up as default setting.
When you export your model to VRML and load it into Unifeye Design you will probably have to rotate it on the X-axis by 90-degrees to account
for the different coordinate systems. You might also switch the setting of your modeling tool to Z-up and use a virtual marker as reference.

Model in Maya - Y-up
Loaded in Unifeye - Z-up
Rotation on x-axis 90 degree
Using a reference marker in Maya
Keep file size small
Lightweight VRML files reduce loading times, which is especially important for web based applications. Another important
goal is to minimize run-time memory usage.
Tips for small file size
- Low poly modeling
- Reduce High Polygon geometry
- Eliminate invisible geometry (e.g. inside faces)
- Use instancing whenever possible (DEF/USE)
- Discard detail (user view is limited by camera)
- Discard texture coordinates and normals if not required
- Do not export every frame in animations (Try to export every 5th frame, if necessary export more frames)
- Key only animated channels to minimize animation data
- Remove empty transforms or invalid geometry (Clean up your scene before export)
Optimize rendering speed
- Use power of 2 textures
- Avoid using a large number of indexed face sets with few faces
- Combine small geometries if possible to improve throughput
- Subdivide large indexed face sets to optimize view frustum culling
- Do not use too many transparent materials
- Disable backface culling (SOLID FALSE) only if necessary
- Reduce the number of light sources by baking lighting information and shadows
- Adjust texture size according to rendering resolution
- Use the selection node (deactivates picking and collision detection), especially when using vertex animation
Choose texture size according to rendering resolution, keep in mind that the user
cannot examine objects as close as in VR applications (marker has to be tracked).
When your scenario requires the use of a VRML TouchSensor (e.g. to trigger animations) you cannot use the selection
node as picking will no longer work.
VRML Selection Node:
Selection
{
collide FALSE
select FALSE
children
[
#your scene
]
}
Z-Fighting
If you place two geometries very close to each other, you might encounter flickering. This phenomenon is known
as Z-fighting and is caused by the limited resolution of the Z-buffer, which the graphics card uses to determine
visiblity and occlusion.
Two planes very close to each other cause Z-fighting
By adjusting the renderer clipping planes (increasing near plane or
decreasing far plane) ...
... you can eliminate Z-fighting.
Mirroring
Symetric objects are often created by duplicating one side of an object with a scale of -1.(E.g. cars
or characters) This may lead to problems as the normals of the mirrored object might not be oriented
correctly afterwards. Always check the normals before export and reverse normals that are pointing
inside.

Object.

Mirrored with scale -1 on x-axis.

Only one object is visible - normals of
mirrored object have to be corrected
→
Return to content preparation overview
--
SupportMetaio - 2010-02-24