
The files fit_o*.mat contain the fitted parameters for the BSDF, i.e., the equations in §5.4 of the thesis.

The files fitXZ8_o*.mat contain the fitted parameters for the moments of the spatial distribution, i.e., the equations in §5.3 of the thesis.

The numbers in the file names corresponds to the orders of scattering that where fitted (under the form n+1). fit_o1.mat contains the fitted parameters for order 2. fitXZ8_o68.mat contains the fitted parameters for the orders [7,9]. fit_o15p.mat contains the fitted parameters for the orders [16,∞], etc.
BSDF parameters
When you open the matlab files for the BSDF parameters (
fit_o*.mat), you will find the following variables in the workspace. All the variables follow the same "table of control points" format.
Peak value

The variable 'a' contains the fitted values for A_{1}(n, z_{1}, θ) (used in equation 5.48 in the thesis). It the I3D paper, it corresponds to A(t, μ_{V}). It is a table of control points. Each row of the table is a control point. Each control point has 3 values:

z_{1} (in meters)

θ (under the form cos(θ) I believe, i.e., μ_{V} in the I3D paper)

A_{1}
For example if you open fit_o2.mat, and read [50,0.6,0.039801] in the 3rd row, that means A_{1}( n=3, z_{1=}50m, θ=cos^{1}(0.6) ) = 0.039801. And so on.
Note there is a discontinuity around θ=90°. That is normal and expected.

The variable 'x' contains the fitted values for A_{2}(n, z_{1}, θ') (used in equation 5.48 in the thesis). It the I3D paper, it corresponds to X(t, μ_{L}). Each control point has 3 values:
For example if you open fit_o2.mat, and read [50,0.2,1.904] in the 3rd row, that means A_{2}( n=3, z_{1=}50m, θ'=cos^{1}(0.2) ) = 1.904. And so on.
Note that A_{2} is normalized so that A_{2}(n, z_{1}, 0) = 1, as explained in the thesis. Also, θ' ranges from 0° to 90° (whereas θ ranges from 0° to 180°), which is normal since the slab can only be lit from above.
Peak location

The variable 'b1' contains the fitted values for B_{1}(n, z_{1}, θ) (used in equation 5.49 in the thesis). It the I3D paper, it corresponds to B_{1}(t, μ_{V}). Each control point has 3 values:

z_{1} (in meters)

θ (under the form cos(θ) I believe, i.e., μ_{V} in the I3D paper)

B_{1}
For example if you open fit_o2.mat, and read [50,0.6,9.2099] in the 3rd row, that means B_{1}( n=3, z_{1=}50m, θ=cos^{1}(0.6) ) = 9.2099. And so on.

The variable 'b2' contains the fitted values for B_{2}(n, z_{1}, θ') (used in equation 5.49 in the thesis). It the I3D paper, it corresponds to B_{2}(t, μ_{L}). Each control point has 3 values:

z_{1} (in meters)

θ' (under the form cos(θ') I believe, i.e., μ_{L} in the I3D paper)

B_{2}
For example if you open fit_o2.mat, and read [50,0.2,26.066] in the 3rd row, that means B_{2}( n=3, z_{1=}50m, θ=cos^{1}(0.2) ) = 26.066. And so on.
Broadness

The variable 'c' contains the fitted values for C(n, z_{1}, θ) (used in equation 5.50 in the thesis). It the I3D paper, it corresponds to C(t, μ_{V}). Each control point has 3 values:

z_{1} (in meters)

θ (under the form cos(θ) I believe, i.e., μ_{V} in the I3D paper)

C
For example if you open
fit_o2.mat, and read [50,0.6,18.529] in the 3rd row, that means
C( n=3, z_{1=}50m, θ=cos^{1}(0.6) ) = 18.529. And so on.
Logarithmic behavior

The variable 'd' contains the fitted values for D(n, z_{1}, θ) (used in equation 5.51 in the thesis). It the I3D paper, it corresponds to D(t, μ_{V}). Each control point has 3 values:

z_{1} (in meters)

θ (under the form cos(θ) I believe, i.e., μ_{V} in the I3D paper)

D
For example if you open
fit_o2.mat, and read [50,0.6,631.07] in the 3rd row, that means
D( n=3, z_{1=}50m, θ=cos^{1}(0.6) ) = 631.07. And so on.
Anisotropy

The variable 'p' contains the fitted values for P(n, Θ) (used in equation 5.52 in the thesis). It the I3D paper, it corresponds to P(θ). Each control point has 3 values:

z_{1} (in meters)

Θ (under the form cos(Θ) I believe)

P
Note there is an inconsistency here: although in the thesis and paper we say that
P does not depend on
z_{1}, we have
z_{1} as a parameter in the tables. This is simply due to the fact that the fitting was done per slab thickness. If you observe the data, you will note that the values for
P are actually almost identical for a given
Θ, regardless of
z_{1}. This is a nice validation of our assumption that
P does not depend on
z_{1}. In consequence, to read the value for
P, you can either read the values of
P for an arbitrary
z_{1}, or read
P for all values of
z_{1} and take the average. I think we did the latter.
For example if you open fit_o2.mat, and read

[50, 0.5, 2.2514] in the 3rd row,

[100, 0.5, 2.0483] in the 12th row,

[200, 0.5, 2.0575] in the 21st row,

[250, 0.5, 2.0711] in the 30th row,

[300, 0.5, 2.0132] in the 39th row,

[400, 0.5, 2.0722] in the 48th row and

[500, 0.5, 2.0974] in the 57th row,
that means
P( n=3, Θ=cos^{1}(0.5) ) = 2.0873. And so on.
Finally, note that there is no data for
P(n=[16,∞]
, Θ). This is normal: these orders are isotropic, therefore
P(n=[16,∞]
, Θ)=1 everywhere, as explained in the thesis.

I would also like to remind you that z' is the viewpoint depth: z'=z_{1}z (thesis p. 114).

Finally, bear in mind that P(n) (equation 5.26) is not at all the same function than P(n, Θ) (equation 5.52). Similarly, g in equations 5.11 and 5.17 is not the assymetry parameter of the phase function. This is just the result of a poor naming convention.
First moment
Matlab variable

Thesis function equivalent

Control points

I3D paper function equivalent

b

O(n, μ, μ') (eq.5.24)

Column 1&2: μ (i.e., μ_{V }in the I3D paper), Column 3: μ', Column 4: O

N(μ_{V}, μ_{L})

c

I(n, μ) (eq.5.19)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: I

I(μ_{V})

d

M(n, μ) (eq.5.23)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: M

M(μ_{V})

e

E(n, μ) (eq.5.15)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: E

E(μ_{V})

j

G(n, μ) (eq.5.20)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: G

G(μ_{V})

k

F(n, μ) (eq.5.16)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: F

F(μ_{V})

l

H(n, μ) (eq.5.18)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: H

H(μ_{V})

u

K(n, μ) (eq.5.21)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: K

K(μ_{V})

v

L(n, μ) (eq.5.22)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: L

L(μ_{V})

w

J(n, μ) (eq.5.20)

Column 1: μ (i.e., μ_{V }in the I3D paper), Column 2: J

J(μ_{V})

Second moment
The equation 5.25 in the thesis should be
σ(n, z_{1}, z, θ, ψ, θ') = p + q z_{1} log(1 + rz') + s log(1 + tz_{1}), n=[16,∞]
σ(n, z_{1}, z, θ, ψ, θ') = S_{a} + S_{b} log(1 + S_{c }z'), n<16
With these equations, the data for
n=[16,∞] is not present in the matlab files. Here are the values:
P(n=[16,∞]
) = 171.0
Q(n=[16,∞]
) = 0.1645
R(n=[16,∞]
) = 0.002321
S(n=[16,∞]
) = 504.6956
T(n=[16,∞]
) = 0.00096153
For
n<16, the parameters
S_{a}, S_{b}, S_{c} are defined by the scalar variables
sa,
sb, and
sc in the matlab files.
Values outside the control points
The parameters have been fitted only for the given control points. To compute the value of a parameter outside the control points, you have to interpolate. The choice of the interpolation method is important, as it will give different results. We used the
linspace() matlab function to sample uniformly the domain, then interpolated using
interp1() for 1D data and
griddata() for 2D data. Although it is tempting to use a
cubic or
spline interpolation method to get smooth variations, these are bad choices as they result in overshoots. Thus we interpolated all the data using the
linear method, which gave satisfactory results. Care must be taken to interpolate finely enough so that the discontinuities are not smoothed out.