source: GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.h @ 1723

Revision 1723, 1.9 KB checked in by mattausch, 18 years ago (diff)
Line 
1#ifndef _VssPreprocessor_H__
2#define _VssPreprocessor_H__
3
4#include <fstream>
5using namespace std;
6
7#include "Preprocessor.h"
8#include "VssRay.h"
9
10namespace GtpVisibilityPreprocessor {
11
12class VssTree;
13class VssTreeLeaf;
14
15
16
17/** Sampling based visibility preprocessing. The implementation is based on heuristical
18    sampling of view space */
19class VssPreprocessor : public Preprocessor {
20public:
21 
22  int mSamplesPerPass;
23  int mVssSamplesPerPass;
24  int mInitialSamples;
25  int mVssSamples;
26  bool mUseImportanceSampling;
27  bool mEnlargeViewSpace;
28  //AxisAlignedBox3 mViewSpaceBox;
29
30  ofstream mStats;
31       
32  ObjectContainer mObjects;
33
34  /// if initial samples should be loaded from file
35  bool mLoadInitialSamples;
36  /// if initial samples should be stored in file
37  bool mStoreInitialSamples;
38 
39  // rays cast during the processing
40  VssRayContainer mVssRays;
41       
42  VssPreprocessor();
43  ~VssPreprocessor();
44
45  virtual bool ComputeVisibility();
46
47  Vector3
48  GetViewpoint(AxisAlignedBox3 *viewSpaceBox);
49
50  Vector3
51  GetDirection(const Vector3 &viewpoint,
52                           AxisAlignedBox3 *viewSpaceBox
53                           );
54       
55
56  bool
57  ExportRays(const char *filename,
58                         const VssRayContainer &vssRays,
59                         const int number
60                         );
61
62  int
63  GenerateImportanceRays(VssTree *vssTree,
64                                                 const int desiredSamples,
65                                                 SimpleRayContainer &rays
66                                                 );
67
68
69  bool
70  ExportVssTreeLeaf(char *filename,
71                                        VssTree *tree,
72                                        VssTreeLeaf *leaf);
73
74  void
75  ExportVssTreeLeaves(VssTree *tree, const int number);
76       
77
78  bool
79  ExportVssTree(char *filename,
80                                VssTree *tree,
81                                const Vector3 &dir
82                                );
83
84
85  float
86  GetAvgPvsSize(VssTree *tree,
87                                const vector<AxisAlignedBox3> &viewcells
88                                );
89 
90  void TestBeamCasting(VssTree *tre, ViewCellsManager *vm, const ObjectContainer &objects);
91
92  bool mTestBeamSampling;
93
94};
95
96}
97
98#endif
Note: See TracBrowser for help on using the repository browser.