How to use SDK API in C# or C++ to get best compression on meshes?
PDF3DConverter class has the method: converter.Initialize(PDF3DConversionManager.Format3D.ePRC,id)
The SetQualityFactor only applies for U3D encoded scenes, and is ignored for PRC.
PDF3DConversionManager. Format3D.ePRC mode does not support any domain-specific quality settings, and does not apply any domain-specific compression schemes beyond general compression, that is the reason for large result file size.
Please try to use PDF3DConversionManager.Format3D.ePRC_HCT instead, i.e.: converter.Initialize(PDF3DConversionManager.Format3D.ePRC_HCT,id)
HCT stands for “highly compressed tessellation”, it applies special predictive methods for point data storage as well as for topological connectivity resulting in good compression ratio.
ePRC_HCT has the following methods to specify spatial tolerance:
PDF3DConversionManager::SetPRCTolerance(double tolerance); and PDF3DConversionManager::SetPRCToleranceIsRelative(bool value);
Typically, tolerance, could be 0.001 or 0.01 or even 0.1.
SetPRCToleranceIsRelative() specifies should be tolerance relative to the 3D scene bounding box or be absolute. However, normally default PRC tolerance value is OK.
For compression purposes it is better to use connectivity with shared vertices between adjacent triangles (there is even algorithm in PDF3D-SDK to reconstruct connectivity, it is controlled by parameters of PDF3DIntermediateScene::PrepareForConversion method).