In this first of a two-part series, Rick Tewell of Fujitsu Semiconductor describes the process of 3D graphics design, with tips and techniques for creating high-quality models suitable for use in a variety of embedded designs.
3D objects (buttons, menus, drop-down lists and other widgets) not only greatly enhance the look and feel of a user interface, they convey information and have little impact on memory usage. It’s no wonder 3D user interfaces are showing up just about anywhere an LCD screen exists: in consumer, industrial, medical, and automotive products ranging from vending machines to automotive dashboards. It’s generally expected that 3D interfaces will be the norm by 2014 or 2015.
Enhanced 3D user interfaces are made possible by the powerful 3D graphics engines found in most higher-end graphics SoCs today. In some cases, the 3D capabilities equal or rival that of the iPad 2. To be prepared, the embedded software engineer needs to master the art of 3D design. Fortunately, the process is straightforward, and working in 3D adds only a small amount of programming time.
The first step in creating 3D graphical interfaces is creating 3D models. This article outlines that process, with tips and techniques for creating high-quality models suitable for use in embedded applications.
The Basics of 3D Modeling
A 3D model is a construct in three dimensions (height, width, and depth) that contains details about the outline or “form” of the model. The model also contains information about the color of the object, how it should respond to light, and how a high-quality decal (called a texture) should be applied to the object. 3D models are significantly different from 2D objects.
3D models are created using a 3D authoring software package, such as:
- Blender (free, open source)
- Caligari trueSpace (commercial, free as of this writing)
- Google SketchUp (free and pro [paid] versions)
- Autodesk 3ds Max (commercial)
- Autodesk May (commercial)
- Maxon Cinema 4D (commercial)
Unfortunately, simply acquiring a 3D authoring package does not a 3D artist make. If you can’t draw anything more sophisticated than a stick figure, then you aren’t going to start creating incredible 3D models without learning traditional art methods. However, this does not mean that 3D authoring packages are useful only for artists. You can buy existing 3D models and change them as needed for your specific application – simply search online for 3D models. However, to modify an existing 3D model, you need to understand the steps involved in 3D modeling: creating the model’s form (the “polygonal mesh”), texture mapping, and texture creation.
3D Polygonal Mesh
A 3D model is made up individual polygons in the form of a mesh. These polygons are typically triangles because mathematically it is easier to deal with triangles than with any other type of polygon.
As an example, imagine that you want to model a car in 3D. Once modeled in your 3D authoring tool, you will have a “wire frame” that is the form of the car made up entirely of a mesh of triangles, each with its own set of three vertices expressed as points in 3D space (Figure 1). Each vertex of every triangle has its own X, Y, and Z coordinate, representing a specific location relative to an origin point in Euclidian space. So a 3D model‘s polygonal mesh will be made up of a list of three coordinates (X, Y, and Z) for every vertex of every triangle.
on image to enlarge.
The more triangles making up the model, the better the model will look to the viewer. This is referred to as “polygon count.” To maximize performance in an embedded system, you need to use the smallest polygon count possible while still maintaining a good visual appearance – a real balancing act. The usual technique is to start with a high polygon count model and reduce the count either through a process within your 3D modeling tool or by using a helper tool like Simplygon, VizUp, or PolyTrans.
Unfortunately, it isn’t as simple as just creating a high polygon count object that looks fantastic and using it with your 3D graphics controller because there are limits to the number of polygons embedded 3D graphics controllers can handle at an acceptable display rate. Higher polygon 3D objects render more slowly than lower polygon 3D objects.
Also, there is a big difference between the 3D graphics controller in your mobile phone or tablet and your desktop PC. The 3D graphics controllers in your mobile phone or tablet are a block within a single IC. They draw little power and share memory with the host processor. Desktop 3D graphics controllers are usually standalone graphics ICs with their own cooling and power systems and their own high-bandwidth memory architectures with dedicated memory.
If you want high-performing 3D graphics for embedded devices, you need to create high-quality, lower-polygon-count 3D models. Figure 2 shows an example of high-, mid-, and low-polygon counts of the same 3D model.
on image to enlarge.
Figure 2: High-, mid-, and low-polygon count models