Available with 3D Analyst license.
Textured 3D objects are features that have both 3D geometry and image data for each displayed face. Examples of textured 3D objects include buildings, airplanes, street furniture, and vehicles. They are commonly used to add photo-realism to a 3D view. In ArcGIS, textured 3D objects are stored as multipatch features.
One common issue when using textured multipatch features in ArcGlobe is that the 3D navigation might become sluggish. The problem can be aggravated when a multipatch feature class contains many textured features or the texture sizes are very large (for example, more than 1,024 pixels on a face).
To help avoid this problem, textured multipatch features automatically adjust their image texture resolution based on how far they are from the current view's camera position. Each feature calculates the 3D distance to the camera individually, so near objects display their textures with a higher resolution than far objects, even within the same layer and feature class.
There are two additional methods for further lowering the cost of using textured 3D objects in ArcGlobe. The first is to take advantage of the graphics card hardware to compress the textures natively within it. The second is to reduce the resolution of the textures used on the multipatch features. Both solutions limit the maximum quality of the textures displayed for the multipatch layer, thereby reducing memory usage and enhancing navigation performance.
See Symbolizing multipatches for more details on how to set display properties for textured multipatch layers.
Textures and memory
Both main memory (RAM) and the graphics card's texture memory are used to render textures. Textures are first loaded into main memory then sent to the graphics card to be rendered. When the texture memory on the graphics card is exhausted, the operating system starts paging to disk, resulting in a sharp decline in performance. This means that reduced memory usage in both RAM and graphics card texture memory improves application performance and allows larger datasets to be loaded.
Hardware texture compression
Hardware texture compression leverages the native support for compressed textures in 3D graphics cards to improve the performance of rendering textured 3D objects.
Since ArcGIS 9, material textures are maintained on disk in JPEG compressed format. On loading, the JPEG compressed textures are decompressed and sent to the graphics card to be rendered, thus consuming the graphics card's texture memory. However, graphics cards do not support the JPEG format natively and there is a performance overhead when textures are decompressed. In addition, decompressed textures can be several times larger in memory than their JPEG compressed versions on disk.
A specific set of texture compression formats are supported by graphics cards. These are currently exposed through OpenGL extensions. Extensions are standardized over a period of time, and texture compression extensions will soon be part of standard OpenGL. Textures that are compressed in supported formats can be sent to the graphics card directly.
At ArcGIS 9.2, ArcGlobe can use the OpenGL-supported DXT format to compress and preserve textures instead of JPEG compression. This eliminates the decompression overhead and the inflated sizes in both RAM and texture memory. It is important to note that both JPEG and DXT are lossy compression formats, so there is some deterioration in the image quality when using compressed textures. While JPEG compressed texture size depends on the quality setting, DXT has a fixed compression ratio (1:6 for RGB and 1:4 for RGBA).
Hardware texture compression can be enabled at the layer level in ArcGlobe.
Reducing texture resolution
You can reduce the volume of texture pixels (texels) that are sent to the graphics card by downscaling the resolution of textures. For instance, a 640 x 480 texture can be downscaled to 320 x 240, thus lowering in-memory size by a factor of 4.
The amount of downscaling that can be applied to a texture without greatly reducing the quality of the display varies from texture to texture. For example, a repetitive window texture absorbs a greater reduction in resolution than that of a stop sign.
Texture downscaling is applied as a layer property and is only applicable to multipatch layers. Setting texture downscaling for a layer reduces the in-memory requirements to render it, freeing up resources for other tasks such as navigation. You can optionally maintain the reduced texture resolution when using the Layer 3D To Feature Class geoprocessing tool to export the layer to a new feature class. The standard Data > Export Data function does not incorporate the texture downscaling settings in the output feature class.
The OpenGL GLU library, which is available on all platforms that support ArcGIS, is used to downscale the textures.