00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "cloud.h"
00025 #include "paramset.h"
00026 #include "dynload.h"
00027
00028 using namespace lux;
00029
00030
00031 VolumeRegion * Cloud::CreateVolumeRegion(const Transform &volume2world,
00032 const ParamSet ¶ms) {
00033
00034 RGBColor sigma_a = params.FindOneRGBColor("sigma_a", 0.);
00035 RGBColor sigma_s = params.FindOneRGBColor("sigma_s", 0.);
00036 float g = params.FindOneFloat("g", 0.);
00037 RGBColor Le = params.FindOneRGBColor("Le", 0.);
00038 Point p0 = params.FindOnePoint("p0", Point(0,0,0));
00039 Point p1 = params.FindOnePoint("p1", Point(1,1,1));
00040
00041 float radius = params.FindOneFloat("radius", 0.5);
00042 float noiseScale = params.FindOneFloat("noisescale", 0.5);
00043 float turbulence = params.FindOneFloat("turbulence", 0.01);
00044 float sharpness = params.FindOneFloat("sharpness", 6.0);
00045 float offSet = params.FindOneFloat("noiseoffset", 0.);
00046 int numSpheres = params.FindOneInt("spheres", 0 );
00047 int octaves = params.FindOneInt("octaves", 1 );
00048 float omega = params.FindOneFloat("omega", 0.75 );
00049 float variability = params.FindOneFloat("variability", 0.9 );
00050 float baseflatness = params.FindOneFloat("baseflatness", 0.8 );
00051 float spheresize = params.FindOneFloat("spheresize", 0.15 );
00052 return new Cloud(sigma_a, sigma_s, g, Le, BBox(p0, p1), radius,
00053 volume2world, noiseScale, turbulence, sharpness, variability, baseflatness, octaves, omega, offSet, numSpheres, spheresize );
00054 }
00055
00056 static DynamicLoader::RegisterVolumeRegion<Cloud> r("cloud");