VonMisesFischerApprox::VonMisesFischerApprox(const float* data, int length): kappas(), mus(), radiosities() { int nLobes = (length-1)/7; kappas.resize(nLobes,0.0f); mus.resize(nLobes,V3f(0,0,0)); radiosities.resize(nLobes,C3f(0,0,0)); for (int i=0; i < nLobes; i++) { kappas[i] = data[i*7+1]; mus[i] = V3f(data[(i*7+2)],data[(i*7+3)],data[(i*7+4)]); radiosities[i] = C3f(data[(i*7+5)],data[(i*7+6)],data[(i*7+7)]); } }
PhongModelApprox::PhongModelApprox(const float* data, int length): lobeDirs(), lobeCols() { int nLobes = (length-5)/6; phong = (int) data[1]; N = V3f(data[2],data[3],data[4]); lobeDirs.resize(nLobes,V3f(0,0,0)); lobeCols.resize(nLobes,C3f(0,0,0)); for (int i=0; i < nLobes; i++) { lobeDirs[i] = V3f(data[(i*6+5)],data[(i*6+6)],data[(i*6+7)]); lobeCols[i] = C3f(data[(i*6+8)],data[(i*6+9)],data[(i*6+10)]); } }
VonMisesFischerApprox::VonMisesFischerApprox(int nLobes) : kappas(nLobes,0), mus(nLobes,V3f(0,0,0)), radiosities(nLobes,C3f(0,0,0)) { }
PhongModelApprox::PhongModelApprox(int nLobes) : lobeDirs(nLobes,V3f(0,0,0)), lobeCols(nLobes,C3f(0,0,0)) { }