Most of existing visualization applications use 3D geometry as their basic rendering primitive. As users demand more complex datasets, the memory requirements for retrieving and storing large 3D models are becoming excessive. In addition, the current 3D rendering hardware is facing a large memory bus bandwidth bottleneck at the processor to graphics pipeline interface. Rendering 1 million triangles with 24 bytes per triangle at 30Hz requires as much as 720 MB/sec memory bus bandwidth. This transfer rate is well beyond the current low-cost graphics systems. A solution is to compress the static 3D geometry as an off-line preprocess. Then, only the compressed geometry needs to be stored in main memory and sent down to the graphics pipeline for real-time decompression and rendering. We present several new techniques for compression of 3D geometry that produce 2 to 3 times better compression ratios than existing methods. We first introduce several algorithms for the efficient encoding of the original geometry as generalized triangle meshes. This encoding allows most of the mesh vertices to be reused when forming new triangles. Our second contribution allows various parts of a geometric model to be compressed with different precision depending on the level of details present. Together, our meshifying algorithms and the variable compression method achieve compression ratios of 30 and 37 to one over ASCII encoded formats and 10 and 15 to one over binary encoded triangle strips. Our experimental results show a dramatically lowered memory bandwidth required for real-time visualization of complex datasets.