mainpage.dox 7.52 KB
Newer Older
1
/**
2
\mainpage A BRDF analysis library
3

4
<center style="color:red">
5
ALTA is currently in an alpha stage.
6
</center>
7

8
### Description
Laurent Belcour's avatar
Laurent Belcour committed
9

10 11 12 13
ALTA is a cross-platform software library to analyze, fit and understand
BRDFs.  It provides a set of command line softwares to fit measured data
to analytical forms, tools to understand models and data.  You can find
an overview presentation of ALTA [here][alta-wk].
14

15
  [alta-wk]: http://hal.inria.fr/hal-01016531
Laurent Belcour's avatar
Laurent Belcour committed
16

17

18
### Target audience
19

20
You are working on BRDFs and you want to **benchmark new BRDF models** and would like
21 22
to compare them with state-of-the-art BRDF models and data easily.
You are working on optical measurements and you want to **experiment different fitting procedures and models**,
23
or just perform **statistical analysis** on your data.
24

25

26
### Main Features
27

28 29 30 31
 + Import/Export common \ref datas "BRDF data formats"
 + \ref fitters "Rational &amp; Non-linear fitting" of BRDF
 + Analytic \ref functions "BRDF models"
 + \ref python "Scripting mechanisms" to automatize processing
32

33
The full list of features is available in the \ref features "features" page.
34

Laurent Belcour's avatar
Laurent Belcour committed
35

36 37 38
### Download

ALTA is free software available under the [Mozilla Public License,
39 40
version 2.0](http://mozilla.org/MPL/2.0/).  The latest release, version
0.2, can be obtained from the Git repository:
41

42
    $ git clone https://gitlab.inria.fr/alta/alta.git
43
    $ git checkout v0.2
44 45 46

See \ref install "the installation instruction" for more information.

47 48 49 50
The master branch is where new developments take place.  We highly
recommend using the above release instead of master.


51 52
### Getting Started

53
Examples of use can be found in the \ref tutorials "tutorials" section. Also, for a more advance usage of ALTA, please refer to the \ref documentation "APIs and references" page.
54 55


56
### Sample results
Laurent Belcour's avatar
Laurent Belcour committed
57

58
Here are results one can obtain using ALTA for *nonlinear fitting*, *rational fitting* and *data conversion* of BRDF data (please click on the picture to change the position of the vertical cut). To see how those results where generated, follow the link above the picture.
59 60 61

@htmlonly
<center >
62
<table id="image-table" style="border-spacing:10px 0px">
63
	<tr>
64
		<td style="text-align:center"><a href="tutorial1.html" >Non-linear fitting</a></td>
65 66
		<td style="text-align:center"><a href="tutorial2.html" >Rational fitting</a></td>
		<td style="text-align:center"><a href="tutorial3.html" >Data conversion</a></td>
67 68
	</tr>
	<tr>
69 70 71
		<td><div class="image" id="compare-nonlinear"></div></td>
		<td><div class="image" id="compare-rational"></div></td>
		<td><div class="image" id="compare-data-conversion"></div></td>
72 73 74 75 76 77 78
	</tr>
	<tr>
		<td style="text-align:center"><tt>blue-metallic-paint</tt></td>
		<td style="text-align:center"><tt>gold-metallic-paint</tt></td>
		<td style="text-align:center"><tt>red-fabric</tt></td>
	</tr>
</table>
79
</center>
80
@endhtmlonly
81

82
Those images have been produced using [Mitsuba renderer](http://www.mitsuba-renderer.org/) and the ALTA plugin designed for it. Check its [GitHub page](https://github.com/belcour/AltaBRDF) for more information on how to integrate Mitsuba and ALTA. The scene and environment map were created by Jonas Pilo and Bernhard Vogl respectively.
83
<br /><br />
84

85

86
<!--
87 88
How to use it
-------------
89

90
ALTA uses \ref commands "commands" to perform actions such as BRDF fitting, data conversion, etc. Each program needs plugins to handle its inputs and outputs. We provide three kind of plugins: \ref functions "functions" which correspond to BRDF models, \ref datas "datas" which correspond to BRDF measurments, and \ref fitters "fitters" which correspond to  fitting algorithms. In the following, we illustrate the use of programs and plugins.
91

92
After compiling the different programs, plugins, and updating your environment, launch this command line:
93

94
    $ ./build/data2brdf --input ../data/1d/NIST/Kirby2/Kirby2.dat --output Kirby.brdf --fitter rational_fitter_eigen
95 96

Tada! You have produced your first fit. The produced output is a 1D rational function, using a monomial basis, interpolating the [Kirby2](http://www.itl.nist.gov/div898/strd/nls/data/kirby2.shtml) dataset. You can find an ALTA compatible version of this dataset [here](http://alta.gforge.inria.fr/data/Kirby2.dat). Note that this fit is not a BRDF.
97

98 99
@htmlonly
<center>
100
   <img src="Kirby2.png" width="60% alt="Fitting the Kirby2 dataset with a rational polynomial" />
101 102
</center>
@endhtmlonly
103

104
The \a data2brdf is one of many \ref commands "commands" available in ALTA. It allows to perform a fitting procedure by converting a \ref data object into a brdf object (also named \ref function).
105 106

To convert this brdf file (in ALTA \ref format), you will need another command:
107 108 109

    $ ./build/brdf2brdf --input Kirby.brdf --output Kirby.m --export matlab

110

111
\a brdf2brdf converts an ALTA brdf file into another format such as Matlab m file, C++ code, or BRDF Explorer shader. Note that this tool cannot convert to another ALTA file (e.g. converting a Blinn lobe to a Beckmann distribution).
112

113
You can find more examples of how to use ALTA on the \ref tutorials page.
114
<br /><br />
115

116
-->
117

118
<!--
119
Contributing
120
----------
121

122
There are many ways in which you can extend ALTA. Please refer to \ref
123
contribute "contribute" for more information.
124
<br /><br />
125
-->
126

127
Citing ALTA
128 129
-------

130
If you are a happy user of ALTA and use it in one of your publication, you are more than welcomed to cite us!
131
You can safely use our [EGSR MAM presentation][egsr-mam] reference or the following software citation:
132 133 134 135

    @misc{alta-lib,
      title = {{ALTA: A BRDF Analysis Library}},
      author = {Belcour, Laurent and Courtes, Ludovic and Pacanowski, Romain and others},
136
      year = {2013-2015},
137 138 139
      howpublished = {http://alta.gforge.inria.fr/}
    }
<br /><br />
140

141

142
ALTA started with the [ANR 11-BS02-006][alta-anr], a research project on light transport analysis.
143 144

  [alta-anr]: http://hal.inria.fr/hal-01016531
145
  [egsr-mam]: http://dx.doi.org/10.2312/mam.20141293
146

147
<br />
148
@htmlonly
149 150 151
<center>
<table border="0px">
	<tr>
152
		<td><img src="http://manao.inria.fr/wp-content/uploads/2013/03/logo_inria.png" alt="Inria" height="50px" /></td>
153
		<td width="30px"></td>
154
		<td><img src="http://manao.inria.fr/wp-content/uploads/2013/03/logo_cnrs.jpg" alt="CNRS" height="50px"/></td>
155
		<td width="30px"></td>
156
		<td><img src="http://www.umontreal.ca/images/iu/logo-udem.gif" alt="UdeM"  height="50px" /></td>
157 158 159
	</tr>
</table>
</center>
160
@endhtmlonly
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177


@htmlonly
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
var compareNonlinear = Compare('compare-nonlinear', 250, 200);
compareNonlinear.add('nonlinear_example_01_ref.png', 'MERL');
compareNonlinear.add('nonlinear_example_01_alta.png', 'Blinn');

var compareRational = Compare('compare-rational', 250, 200);
compareRational.add('rational_example_01_ref.png', 'MERL');
compareRational.add('rational_example_01_alta.png', 'Rational');

var compareData = Compare('compare-data-conversion', 250, 200);
compareData.add('data_example_01_ref.png', 'MERL');
compareData.add('data_example_01_alta.png', 'Stark 2D');

178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
compareNonlinear.update();
compareRational.update();
compareData.update();

/* Test if the image table is not larger than the body */
var elemImg = document.getElementById('image-table');
var rectImg = elemImg.getBoundingClientRect();
var rectBdy = document.body.getBoundingClientRect();

var widthImg = elemImg.offsetWidth;
var parentNd = elemImg.parentNode;
var widthBdy = parentNd.offsetWidth;
if(widthImg > widthBdy) {
	elemImg.style.transform = 'scale(' + widthBdy/widthImg + ')';
}

194 195 196
</script>
@endhtmlonly

197
\defgroup core
198
\defgroup commands
199 200
\defgroup plugins
\defgroup softs
201
\defgroup fitters
Laurent Belcour's avatar
Laurent Belcour committed
202
\defgroup functions
203
\defgroup datas
204
*/