00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "stdafx.h"
00027 #include "volumes/exponential.h"
00028 #include "paramset.h"
00029
00030
00031 ExponentialDensity *CreateExponentialVolumeRegion(const Transform &volume2world,
00032 const ParamSet ¶ms) {
00033
00034 Spectrum sigma_a = params.FindOneSpectrum("sigma_a", 0.);
00035 Spectrum sigma_s = params.FindOneSpectrum("sigma_s", 0.);
00036 float g = params.FindOneFloat("g", 0.);
00037 Spectrum Le = params.FindOneSpectrum("Le", 0.);
00038 Point p0 = params.FindOnePoint("p0", Point(0,0,0));
00039 Point p1 = params.FindOnePoint("p1", Point(1,1,1));
00040 float a = params.FindOneFloat("a", 1.);
00041 float b = params.FindOneFloat("b", 1.);
00042 Vector up = params.FindOneVector("updir", Vector(0,1,0));
00043 return new ExponentialDensity(sigma_a, sigma_s, g, Le, BBox(p0, p1),
00044 volume2world, a, b, up);
00045 }
00046
00047