Structure of Anisotropic BSDF Files

The following example of *.anisotropicbsdf files only describes the *.txt version of *.anisotropicbsdf files.

A binary version of *.anisotropicbsdf files also exists. This binary version is generated by the OMS2 or after applying some treatments to the .anisotropicbsdf files.

The Anisotropic BSDF is able to handle transmission as well as reflection.

Important: Prior versions of *.anisotropicbsdf files are supported. It is not recommended to manually create *.brdf files to avoid issues.
Row Description
Row 1

Header.

Ex: OPTIS - Anisotropic BSDF surface file v8.0

The version number of this file does not change regardless of the selected mode (text or binary).

Row 2 Defines the mode: 0 for text mode, 1 for binary mode.
Row 3 Comment line.
Row 4

Number of characters to read for the measurement description.

Several lines are permitted for the measurement description.

Row 5 Measurement description (cannot be edited from the viewer).
Row 6 Contains the anisotropy vector in the global coordinates system.
Row 7

Contains two boolean values (0=false and 1=true):

  • The first bReflection tells whether the surface has reflection data or not.
  • The second bTransmission tells whether the surface has transmission data or not.
Row 8

Contains a boolean value describing the type of value stored in the file:

  • 1 means the data is proportional to the BSDF (the data stored in the file are BSDF values).
  • 0 means the data is proportional to the measured intensity or to the probability density function (the data stored in the file are intensity values).
Note: The normalization of the values is done by the software using the measurement values according to following formula:

If i0 is not measured, α0 is calculated for the 2 incidences around i0 and weighted in function of the distance to i0.

If i0 is lower than the first incidence measured then i0=first incidence.

If data is proportional to BRDF: BRDF(lambda, I, theta, phi) = α0 * RelativeIncidenceValue(i, theta, phi)

If data is proportional to Intensity: BRDF(lambda, I, theta, phi) = α0 * RelativeIncidenceValue(i,theta,phi) / cos(theta)

Row 9 Number of anisotropy angles in reflection.
Row 10 List of anisotropy angles in reflection.
Row 11

Number of incident angles in reflection, for anisotropy angle N°1.

If you manually create the file, give it minimum two incident angles.

Row 12

List of incident angles in reflection, for anisotropy angle N°1.

If the number of anisotropy angles is higher than 1, rows 11 and 12 are repeated.

Row 13 Number of anisotropy angles in transmission.
Row 14 List of anisotropy angles in transmission.
Row 15

Number of incident angles in transmission, for anisotropic angle N°1.

If you manually create the file, give it at least 2 incident angles.

Row 16

List of incident angles in transmission, for anisotropy angle N°1.

If the number of anisotropy angles is higher than 1, rows 15 and 16 are repeated.

Row 17 Theta angle and a Phi angle for each spectrum measurement in reflection.
Row 18 Reflective Spectrum description: wavelength (nm), coefficient (%)
Row 19 Number of wavelength measurements in reflection.
Row 20

Wavelength measurements in reflection (in nm).

One wavelength takes one line. There are as many lines as wavelengths.

Row 21 Theta angle and a Phi angle for each spectrum measurement in transmission.
Row 22 Transmission Spectrum description: wavelength (nm), coefficient (%)
Row 23 Number of wavelength measurements in transmission.
Row 24

Wavelength measurements in transmission (in nm).

One wavelength takes one line. There are as many lines as wavelengths.

Row 25 Number of angles measured for Theta and Phi, in reflection, for the anisotropy angle N°1 and the incident angle N°1 of the anisotropy angle N°1.
Row 26

Table of the measured BSDF according to Theta and Phi angles, in reflection, for the anisotropy angle N°1 and the incident angle N°1 of the anisotropy angle N°1.

See Row 25 to 29 below.

The table may take several lines.

Row 27 Number of angles measured for Theta and Phi, in reflection, for the anisotropy angle N°1 and the incident angle N°2 of the anisotropy angle N°1.
Row 28

Table of the measured BSDF according to Theta and Phi angles, in reflection, for the anisotropy angle N°1 and the incident angle N°2 of the anisotropy angle N°1.

See Row 25 to 29 below.

The table may take several lines.

Row 29 From the row 23, the model of the rows is repeated according to the number of anisotropy angles and the number of incident angles of each anisotropy angle, in reflection and in transmission.

Row 25 to 29

This part of the file contains all the goniometric measurement data. The format is described as pseudo code:

If(bReflection is true) { for a=1 to nAnisotropy for i=1 to nIncidence Put the BRDF(a,i) block in the file } If(bTransmission is true) { for a=1 to nAnisotropy for i=1 to nIncidence Put the BTDF(a,i) block in the file }

BRDF and BTDF blocks share the same structure, only the Theta angle range changes (from 0° to 90° for reflection and from 90° to 180° for transmission).

The first row of these blocks contains two integers nTheta and nPhi giving the number of Theta and Phi angles.

The second row contains the list of the Phi angles that are not necessarily equidistantly sampled.

For the next following rows nTheta rows are following.

The first value on the row is the Theta angle (first column), then the following values are the nPhi sampled goniometric data (BSDF or intensity according to the boolean value described in row 8).

Note: If your anisotropic surface shows a symmetry in its behavior, it is possible to put the data for the [0° 90°] or the [0° 180°] intervals for the anisotropy angle instead of [0° 360°].
Note: In both cases (intensity and BRDF), the BSDF values used in simulation are modulated by the spectral reflection/transmission values. The shape of the BSDF is defined by the BSDF values. They can be either relative, absolute or normalized since they are "scaled" by the spectral R/T during simulation.

For more details, see anisotropic BSDF surface example from . this example