About textured 3D objects in ArcScene
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 ArcScene is that 3d navigation might become sluggish. The problem can be aggravated when a multipatch feature class contains many textured features or if the texture sizes are very large (for example, more than 1,024 pixels on a face).
There are two methods for reducing the cost of using textured 3D objects in ArcScene. 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. The purpose of both solutions is to reduce the memory usage so the real-time navigation performance can be enhanced.
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 will start 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 persisted on disk in JPEG compressed format. On loading, the JPEG compressed textures are uncompressed 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 uncompressed. In addition, uncompressed 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 get 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, ArcScene can use the OpenGL-supported DXT format to compress and persist textures instead of JPEG compression. This eliminates the uncompression 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 will be 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 ArcScene.
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 will vary from texture to texture. For example, a repetitive window texture will absorb a greater reduction in resolution than that of a shop sign.
Texture downscaling is applied as a layer property and is only applicable to multipatch layers. Setting texture downscaling for a layer will reduce the in-memory requirements to render it, freeing up resources for other tasks such as navigation. You can optionally persist 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.
- You can also choose to completely disable textures for the layer. The geometry continues to be displayed, and the use of simple colors can be used as symbology.