source: GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.h @ 863

Revision 863, 2.5 KB checked in by mattausch, 18 years ago (diff)

working on preprocessor integration
added iv stuff

Line 
1#ifndef _RssPreprocessor_H__
2#define _RssPreprocessor_H__
3
4#include <fstream>
5using namespace std;
6
7#include "Preprocessor.h"
8#include "VssRay.h"
9
10namespace GtpVisibilityPreprocessor {
11
12
13class RssTree;
14class RssTreeLeaf;
15
16
17/** Sampling based visibility preprocessing. The implementation is based on heuristical
18    sampling of view space */
19class RssPreprocessor : public Preprocessor {
20 
21public:
22  int mPass;
23  int mSamplesPerPass;
24  int mRssSamplesPerPass;
25  int mInitialSamples;
26  int mRssSamples;
27  bool mUseImportanceSampling;
28
29  bool mExportPvs;
30  bool mExportRssTree;
31  bool mExportRays;
32  int mExportNumRays;
33
34  bool mUseViewcells;
35  bool mUpdateSubdivision;
36
37  bool mObjectBasedSampling;
38  bool mDirectionalSampling;
39 
40  AxisAlignedBox3 *mViewSpaceBox;
41
42  ofstream mStats;
43  RssTree *mRssTree;
44
45  // rays cast during the processing
46  VssRayContainer mVssRays;
47       
48   /// if initial samples should be loaded from file
49  bool mLoadInitialSamples;
50  /// if initial samples should be stored in file
51  bool mStoreInitialSamples;
52
53  RssPreprocessor();
54  ~RssPreprocessor();
55
56  virtual bool ComputeVisibility();
57
58
59  void
60  SetupRay(Ray &ray,
61                   const Vector3 &point,
62                   const Vector3 &direction
63                   );
64
65
66       
67  int
68  CastRay(
69                  Vector3 &viewPoint,
70                  Vector3 &direction,
71                  const float probability,
72                  VssRayContainer &vssRays
73
74                  );
75               
76
77       
78  virtual bool BuildBspTree() { return false; }
79 
80  void
81  CastRays(
82                   SimpleRayContainer &rays,
83                   VssRayContainer &vssRays
84                   );
85
86  bool
87  ExportRays(const char *filename,
88                         const VssRayContainer &vssRays,
89                         const int number
90                         );
91
92  void
93  ExportObjectRays(VssRayContainer &rays,
94                                   const int objectId);
95       
96  int
97  GenerateImportanceRays(RssTree *vssTree,
98                                                 const int desiredSamples,
99                                                 SimpleRayContainer &rays
100                                                 );
101
102
103  bool
104  ExportRssTreeLeaf(char *filename,
105                                        RssTree *tree,
106                                        RssTreeLeaf *leaf);
107
108  void
109  ExportRssTreeLeaves(RssTree *tree, const int number);
110       
111
112  bool
113  ExportRssTree(char *filename,
114                                RssTree *tree,
115                                const Vector3 &dir
116                                );
117
118
119  float
120  GetAvgPvsSize(RssTree *tree,
121                                const vector<AxisAlignedBox3> &viewcells
122                                );
123 
124
125  void
126  ExportPvs(char *filename,
127                        RssTree *rssTree
128                        );
129
130
131  void
132  ComputeRenderError();
133
134  /** Redefininition of the get sample rays method from the preprocessor */
135  bool
136  GenerateRays(
137                           const int number,
138                           const int sampleType,
139                           SimpleRayContainer &rays
140                           );
141
142};
143
144
145};
146
147#endif
Note: See TracBrowser for help on using the repository browser.