[885] | 1 | View Space Partitioning and PVS computation modules
|
---|
| 2 | ===================================================
|
---|
| 3 |
|
---|
| 4 |
|
---|
| 5 | This directory contains a standalone application implementing the view
|
---|
| 6 | space partitioning and PVS computation modules of the GTP WP3.
|
---|
| 7 |
|
---|
| 8 | The usage of the application is illustrated in the example scripts:
|
---|
| 9 |
|
---|
| 10 | scripts/generate_viewcells (view space partitioning)
|
---|
| 11 | scripts/preprocess_visibility (PVS computation)
|
---|
| 12 |
|
---|
| 13 | These are simple shell scripts for usage with cygwin. It is easy to modify the
|
---|
| 14 | scripts for using with windows command shell.
|
---|
| 15 |
|
---|
| 16 | The precompiled application binary as well as the linked libraries can be found in the
|
---|
| 17 | bin directory. Note that the bin directory should be included in your PATH in order to
|
---|
| 18 | run the application.
|
---|
| 19 |
|
---|
| 20 |
|
---|
| 21 | Using the View Space Partitioning module
|
---|
| 22 | =========================================
|
---|
| 23 |
|
---|
| 24 | The view space partitioning is implemented as a standalone
|
---|
| 25 | application. Alternatively the module can be compiled as a library
|
---|
| 26 | which can be linked to a 3rd party code. An example of such an
|
---|
| 27 | application is the online occlusion culling module (integrated with
|
---|
| 28 | OGRE engine) which links the library in order to load the preprocessed
|
---|
| 29 | data and use them in runtime.
|
---|
| 30 |
|
---|
| 31 | The module uses a number of parameters which can be specified by the
|
---|
| 32 | user through the "environment file" or command line parameters. The
|
---|
| 33 | parameters can have one of the following types: string, int, float,
|
---|
| 34 | and boolean. All parameters have implicit values set by the
|
---|
| 35 | preprocessor (listed in the table). This value can be redefined by the
|
---|
| 36 | environment file (see for example preprocess_visibility.env). This
|
---|
| 37 | value can further be overwritten by a command line argument. There are
|
---|
| 38 | two possibilieties how to specify the command parameter: using a
|
---|
| 39 | shorcut or define construct. The define construct uses the following
|
---|
| 40 | syntax: -Dparameter_name=value. With the exception of Boolean
|
---|
| 41 | parameters the shorcut version is specified as follows:
|
---|
| 42 | -paremter_shorcut=value. The boolean parameter shorcut is directly
|
---|
| 43 | followed by + or - sign (e.g. -preprocessor_use_gl_render+). The
|
---|
| 44 | usage of the parameters is illustrated in the example scripts and
|
---|
| 45 | environment files (preprocess_visibility, preprocess_visibility.env,
|
---|
| 46 | generate_viewcells, generate_viewcells.env).
|
---|
| 47 |
|
---|
| 48 | Bellow we give a list of the most important parameters. For other
|
---|
| 49 | parameters see the environment file (generate_viewcells.env) and the
|
---|
| 50 | documentation included in the source code of the module.
|
---|
| 51 |
|
---|
| 52 | Scene.filename (-scene_filename=) [string]
|
---|
| 53 |
|
---|
| 54 | Scene description file. Currently simplified X3D (.x3d), Unigraphics
|
---|
| 55 | (.dat), UNC (.ply) formats are supported. This option has to be
|
---|
| 56 | specified!
|
---|
| 57 |
|
---|
| 58 | Preprocessor.type (-preprocessor=) [string, one of: vss, rss, exact, sampling, render]
|
---|
| 59 |
|
---|
| 60 | Type of the preprocessor to use. Currently only the "rss" type is
|
---|
| 61 | supported for PVS computation (rss stands for Ray Space Subdivision
|
---|
| 62 | explained in the previous chapters of the documentation). For view
|
---|
| 63 | cells construction the "vss" preprocessor should be used (vss stands
|
---|
| 64 | for View Space Subdivision).
|
---|
| 65 |
|
---|
| 66 |
|
---|
| 67 | Preprocessor.useGlRenderer (-preprocessor_use_gl_renderer) [boolean]
|
---|
| 68 |
|
---|
| 69 | Tells the preprocessor to open an OpenGL window which serves for
|
---|
| 70 | visualization, testing and visual debugging of the preprocessor. This
|
---|
| 71 | functionality is currently implemented using Qt OpenGL widget.
|
---|
| 72 |
|
---|
| 73 |
|
---|
| 74 | ViewCells.type (-view_cells_type=) [string, one of: vspBspTree, .....]
|
---|
| 75 |
|
---|
| 76 | Type of view cells to be generated. Use "vspBspTree", which
|
---|
| 77 | corresponds to our optimized algorithm.
|
---|
| 78 |
|
---|
| 79 | ViewCells.Construction.samples (-view_cells_construction_samples=) [int]
|
---|
| 80 |
|
---|
| 81 | Number of visibility samples to be used for the view cell construction.
|
---|
| 82 |
|
---|
| 83 | ViewCells.maxViewCells (-view_cells_max_view_cells=) [int]
|
---|
| 84 |
|
---|
| 85 |
|
---|
| 86 | Using the PVS computation module
|
---|
| 87 | =================================
|
---|
| 88 |
|
---|
| 89 | The PVS computation module is implemented as a standalone application.
|
---|
| 90 | The parameters for the module can be specified by the user through the
|
---|
| 91 | "environment file" or on the command line as described for the view
|
---|
| 92 | space partioting module. Bellow we give a list of the most important
|
---|
| 93 | parameters. For other parameters see the environment file
|
---|
| 94 | (preprocess_visibility.env) and the documentation included in the
|
---|
| 95 | source code of the module.
|
---|
| 96 |
|
---|
| 97 | Scene.filename (-scene_filename=) [string]
|
---|
| 98 |
|
---|
| 99 | Scene description file. Currently simplified X3D (.x3d), Unigraphics
|
---|
| 100 | (.dat), UNC (.ply) formats are supported. This option has to be
|
---|
| 101 | specified!
|
---|
| 102 |
|
---|
| 103 | Preprocessor.type (-preprocessor=) [string, one of: vss, rss, exact, sampling, render]
|
---|
| 104 |
|
---|
| 105 | Type of the preprocessor to use. Currently only the "rss" type is
|
---|
| 106 | supported for PVS computation (rss stands for Ray Space Subdivision
|
---|
| 107 | explained in the previous chapters of the documentation). For view
|
---|
| 108 | cells construction the "vss" preprocessor should be used (vss stands
|
---|
| 109 | for View Space Subdivision).
|
---|
| 110 |
|
---|
| 111 |
|
---|
| 112 | Preprocessor.useGlRenderer (-preprocessor_use_gl_renderer) [boolean]
|
---|
| 113 |
|
---|
| 114 | Tells the preprocessor to open an OpenGL window which serves for
|
---|
| 115 | visualization, testing and visual debugging of the preprocessor. This
|
---|
| 116 | functionality is currently implemented using Qt OpenGL widget and thus
|
---|
| 117 | requires compiling the preprocessor with Qt library.
|
---|
| 118 |
|
---|
| 119 |
|
---|
| 120 | Preprocessor.detectEmptyViewSpace (-preprocessor_detect_empty_viewspace=) [boolean]
|
---|
| 121 |
|
---|
| 122 | Empty view space detection allows more efficient sampling for scenes
|
---|
| 123 | with properly modelled watertight objects (those which can be
|
---|
| 124 | correctly rendered with backface culling on).
|
---|
| 125 |
|
---|
| 126 | Preprocessor.applyVisibilityFilter (-preprocessor_apply_visibility_filter) [boolean]
|
---|
| 127 |
|
---|
| 128 | Tells the pre-processor if the visibility filter should be applied.
|
---|
| 129 |
|
---|
| 130 | Preprocessor.visibilityFilterWidth (-preprocessor_visibility_filter_width=) [float]
|
---|
| 131 |
|
---|
| 132 | Width of the visibility filter specified as a ratio of the size of the
|
---|
| 133 | bounding box of the scene. A reasonable value for common scenes is
|
---|
| 134 | 0.01.
|
---|
| 135 |
|
---|
| 136 | Preprocessor.visibilityFile (-preprocessor_visibility_file=) [string]
|
---|
| 137 |
|
---|
| 138 | Name of the file into which the preprocessed visibility information
|
---|
| 139 | should be exported.
|
---|
| 140 |
|
---|
| 141 | RssPreprocessor.initialSamples (-initial_samples=) [int]
|
---|
| 142 |
|
---|
| 143 | Number of initial samples to use. These samples are distributed
|
---|
| 144 | uniformly in the whole view space.
|
---|
| 145 |
|
---|
| 146 | RssPreprocessor.vssSamples (-rss_vss_samples=) [int]
|
---|
| 147 |
|
---|
| 148 | Number of samples cast using importance and stratified sampling based
|
---|
| 149 | on RSS.
|
---|
| 150 |
|
---|
| 151 |
|
---|
| 152 | RssPreprocessor.useImportanceSampling (-rss_use_importance) [bool]
|
---|
| 153 |
|
---|
| 154 | Tells the preprocessor whether to use RSS based sampling at all. If
|
---|
| 155 | false then even the RssPreprocessor.vssSamples are cast using the
|
---|
| 156 | uniform distribution.
|
---|
| 157 |
|
---|
| 158 |
|
---|
| 159 | RssPreprocessor.vssSamplesPerPass (-rss_vss_samples_per_pass=) [int]
|
---|
| 160 |
|
---|
| 161 | Number of samples cast per pass of the RSS algortihm. After each pass
|
---|
| 162 | the RSS tree is updated and the new set of rays is generated according
|
---|
| 163 | to the estimated sample contributions.
|
---|
| 164 |
|
---|
| 165 |
|
---|
| 166 |
|
---|
| 167 |
|
---|
| 168 |
|
---|
| 169 |
|
---|
| 170 |
|
---|
| 171 |
|
---|