DAVID4 SDK  1.8.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
SimpleShapeFusion.cpp
1 /// @example SimpleShapeFusion.cpp
2 ///
3 /// Shows usage of david::ShapeFusion class.
4 
5 #include "davidSDK/david.h"
6 
7 namespace examples {
8 
9 /// Shows usage of david::ShapeFusion class.
10 ///
12 {
13  try
14  {
15  // INITIALIZE, CONNECT TO SERVER:
16  david::Client david;
17  david.Connect();
18 
19  // IMPORT SOME SCANS:
20  // File paths are relative to SERVER application folder:
21  int id1 = david.fusion().ImportMesh("Scan01.obj");
22  int id2 = david.fusion().ImportMesh("Scan02.obj");
23  int id3 = david.fusion().ImportMesh("Scan03.obj");
24 
25  // Best to use absolute paths like "C:/Scans/Scan01.obj".
26 
27  // ALIGN SCAN 2 to SCAN 1, then SCAN 3 to SCAN 2:
28  david.fusion().AlignPairCoarse(id2, id1, david::CoarseAlignParams(david::GetMotionInfo_Free())); // first, coarse alignment (free)
29  david.fusion().AlignPairFine(id2, id1, david::FineAlignParams()); // then fine alignment
30 
31  david.fusion().AlignPairCoarse(id3, id2, david::CoarseAlignParams(david::GetMotionInfo_Free())); // first, coarse alignment (free)
32  david.fusion().AlignPairFine(id3, id2, david::FineAlignParams()); // then fine alignment
33 
34  // FUSE ALL SCANS:
35  int fusionMeshID = david.fusion().Fuse(500);
36 
37  // EXPORT FUSION RESULT:
38  david.fusion().ExportMesh(fusionMeshID, "FusionResult.obj");
39  }
40  catch (david::Exception& e)
41  {
42  e.PrintError();
43  }
44 }
45 
46 } // namespace