My Tickets

Fledermaus 7

Technical Note Fledermaus: Storage Limits in 7.3.0 (64bit systems)

As of 7.3.0 we have updated the TDR file support to allow 64-bit based files removing the 2GB limit on individual file sizes. This means you can save scene files many gigabytes in size. However, scene files larger than 2 gigabytes will only be able to load on 64-bit versions of Fledermaus. If you load a scene that is too large on a 32 bit version of Fledermaus you will get an error dialog saying that this scene is too large for this system. 

It is important to note that for the moment we are maintaining a 2 gigabyte limit on individual data blocks inside any given TDR file so that does impose some hard limits on the maximum data set sizes for individual SD objects in Fledermaus. 

The maximum size of the largest data block of a surface (the shaded imagery) component is 536,870,912 cells (which is about 23,170 x 23,170 rows by cols) or 5.37 times larger than our current 10,000x10,000 limit). 

Thus the limits for a number of object types are: 

(Whether textured or not) are limited by the size of the image block which is described above as 536,870,912 pixels. 

In the special case of draping a surface with a grey scale image which only requires 2 bytes rather than four per pixel, the limit is twice as large but can only be realized in special circumstances. 

GeoImage/Vertical Image/Vertical Curtain: 
For color or RGBA imagery the limit is: 536,870,912 pixels 

For greyscale (GA) imagery the limit is: 1,073,741,824 pixels (or 32768x32768 rows x cols) 

Point3D object:
Each point is stored in memory in a struct of a pointer to a union plus a 32-bit ID number and 3 32-bit float values used for drawing. This is about 192 bits overhead per point (64-bit system) or 160 bits overhead for 32-bit systems. In addition there are a minimum of 3 64-bit generic values stored plus a 32-bit value for colour. There are 3 values stored for position, even for 2D points - the Z-value is zero in that case - and at least one colour value. There is also some overhead for each attribute stored (only once for each attribute), about 232 bits per attribute total. 

Optimistically, a maximum of around 65 million points could be stored in memory on a 32-bit Windows system* (2GB limit). Less when there are more attributes. 

*: [Calc: ( 2GB - 300MB ) / (( 3 * 64 + 32 )/8) ] 

On disk, the size of the SD_POINT3D block is the restricting factor, with a minimum of 3 8-byte values saved per point, plus overhead of 24 bytes for the header. Plus 8 bytes for each extra point attribute over a basic set of 3D points. String attributes are 4 bytes plus the length of the string including terminator (one extra byte). For just 2D or 3D points, approximately 89,478,484 points or less can be stored. 

Line3D object: 
On disk, the size of the SD_LINES3D block is the limiting factor. Each vertex takes up 24 bytes plus an overhead of 136 bytes header. The maximum number of vertices is 89,478,479 vertices or less. Each additional attribute takes 8 bytes more per vertex. Labels take 4 bytes plus the length of the string including null terminator. 

The above are the updated limits for single SD objects. 

Scene files can combine many SD objects thus scene files can be very large on 64 bit OS’s - currently limited by the RAM available on the machine (2^64 bytes hard max). 

Note however that TDR files larger than 2GB will not load on machines with a 32 bit OS (You will get a file too big error message). Also realize that if you create a scene that uses 8GB of RAM on one 64 bit system and then try to load it on a machine with a 64bit OS but with less memory it will fail to load (or be unusably slow).