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.

coneYUP.jpg
Model in Maya - Y-up

unifeyeZUp.png
Loaded in Unifeye - Z-up

unifeyeRotated.png
Rotation on x-axis 90 degree

mayareference.png
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

textureConsideration.png

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.

zfighting1.png

Two planes very close to each other cause Z-fighting

zfighting3.png

By adjusting the renderer clipping planes (increasing near plane or
decreasing far plane) ...

zfighting2.png

... 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.


normal1.jpg
Object.

normal2.jpg
Mirrored with scale -1 on x-axis.

normal3.jpg.png
Only one object is visible - normals of
mirrored object have to be corrected


Return to content preparation overview

-- SupportMetaio - 2010-02-24

Topic attachments
I Attachment Action Size Date Who Comment
jpgjpg coneYUP.jpg manage 13.6 K 2010-02-25 - 13:27 SupportMetaio  
jpgjpg gettowork.jpg manage 53.3 K 2010-02-24 - 13:44 SupportMetaio  
pngpng mayareference.png manage 65.8 K 2010-02-25 - 13:27 SupportMetaio  
jpgjpg normal1.jpg manage 9.8 K 2010-02-25 - 15:17 SupportMetaio  
jpgjpg normal2.jpg manage 9.4 K 2010-02-25 - 15:17 SupportMetaio  
pngpng normal3.jpg.png manage 12.7 K 2010-02-25 - 15:18 SupportMetaio  
pngpng textureConsideration.png manage 193.5 K 2010-02-25 - 13:58 SupportMetaio  
pngpng unifeyeRotated.png manage 99.6 K 2010-02-25 - 13:27 SupportMetaio  
pngpng unifeyeZUp.png manage 107.8 K 2010-02-25 - 13:27 SupportMetaio  
pngpng zfighting1.png manage 127.6 K 2010-02-25 - 14:49 SupportMetaio  
pngpng zfighting2.png manage 122.9 K 2010-02-25 - 14:49 SupportMetaio  
pngpng zfighting3.png manage 2.4 K 2010-02-25 - 14:49 SupportMetaio  
Topic revision: r6 - 2012-01-03 - 08:41:16 - SupportMetaio
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback