The outside appearance of cars is mostly defined through only two distinct materials – glass and car paint. While glass can rather easily be simulated by the simple physical laws of reflection and refraction, modelling car paint is more challenging.
In this paper we present a framework for the efficient acquisition and realistic rendering of real-world car paint. This is achieved by building an easy-to-reproduce measuring setup, fitting the measured data to a general BRDF model for car paint, adding a component for simulating the sparkling effect of metallic paints, and rendering using a specially designed shader in a realtime ray tracer.
[pdf][bib] |
VMV 2005 9 pages 8233 kb bibtex entry |
[ppt] |
Slides 9318 kb |
Here we provide our measured BRDF data sets.
LicenceYou may download and use the data only for non-commercial and research purposes!Format descriptionThe 3-dimensional BRDF is stored using the halfway vector based parameterization (see Section 4.1 in the paper for details). φd is split into 180 bins, while θh and θd are subdivided into 90 bins. The order of the dimensions is φd, θh, θd. Each table entry consists of 3 float values, representing the red, green and blue channel.This is more or less the raw measured data. The BRDF values are not normalized (there can be values grater than 1.0) and no color calibration has been done. Invalid values are marked with -1.0. Example code#include <fstream> using namespace std; typedef struct { float r, g, b; } Color; const unsigned THETA = 90; const unsigned PHI = 180; Color *data = new Color[THETA * THETA * PHI]; ifstream file("brdf_data"); // skip header file.seekg(84); Color col; for (unsigned phi_d = 0; phi_d < PHI; phi_d++) for (unsigned theta_h = 0; theta_h < THETA; theta_h++) for (unsigned theta_d = 0; theta_d < THETA; theta_d++) { fread(&col, sizeof(Color), 1, file); // now a different order of the dimensions can be used data[(theta_h * THETA + theta_d) * PHI + phi_d] = col; } Data sets
|