source: GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp @ 1121

Revision 1121, 1.5 KB checked in by mattausch, 18 years ago (diff)
Line 
1#include "X3dExporter.h"
2#include "VrmlExporter.h"
3#include "VspOspTree.h"
4#include "KdTree.h"
5
6
7namespace GtpVisibilityPreprocessor {
8
9Exporter *
10Exporter::GetExporter(const string filename)
11{
12  Exporter *exporter = NULL;
13
14  if (strstr(filename.c_str(), ".x3d"))
15  {
16          exporter = new X3dExporter(filename);
17  }
18  else if (strstr(filename.c_str(), ".wrl"))
19  {
20          exporter = new VrmlExporter(filename);
21  }
22  else
23  {
24          cerr<<"Error: Currently unsuported export format, filename " << filename << endl;
25  }
26
27  return exporter;
28}
29
30
31bool Exporter::ExportOspTree(const OspTree &ospTree, const int maxPvs)
32{
33        vector<KdLeaf *> leaves;
34        ospTree.CollectLeaves(leaves);
35
36        mUseForcedMaterial = true;
37
38        vector<KdLeaf *>::const_iterator it, it_end = leaves.end();
39
40        Material white;
41        white.mDiffuseColor.r = 1;
42        white.mDiffuseColor.g = 1;
43        white.mDiffuseColor.b = 1;
44       
45        for (it = leaves.begin(); it != it_end; ++ it)
46        {
47                KdLeaf *leaf = *it;
48
49                SetWireframe();
50                SetForcedMaterial(white);
51                ExportBox(ospTree.GetBBox(leaf));
52
53                SetFilled();
54
55                if (maxPvs) // color code pvs
56                {
57                        mForcedMaterial.mDiffuseColor.b = 1.0f;
58                        const float importance = (float)ospTree.ComputePvsSize(leaf->mObjects) / (float)maxPvs;
59
60                        mForcedMaterial.mDiffuseColor.r = importance;
61                        mForcedMaterial.mDiffuseColor.g = 1.0f - mForcedMaterial.mDiffuseColor.r;
62                }
63                else
64                {
65                        SetForcedMaterial(RandomMaterial());
66                }
67
68                ExportGeometry(leaf->mObjects);
69        }
70
71        return true;
72}
73
74}
Note: See TracBrowser for help on using the repository browser.