@@ -97,11 +97,8 @@ bool RtiBuilder::setupFromFolder(const string &folder) {
97
97
imageset.images .removeAt (skip_image);
98
98
dome.directions .erase (dome.directions .begin () + skip_image);
99
99
}
100
- imageset.lights1 = dome.directions ;
101
- imageset.light3d = false ;
102
-
103
100
imageset.initImages (folder.c_str ());
104
-
101
+ imageset. setLights (dome. directions , Dome::DIRECTIONAL);
105
102
106
103
} catch (QString e) {
107
104
error = e.toStdString ();
@@ -474,13 +471,13 @@ MaterialBuilder RtiBuilder::pickBaseHSH(std::vector<Vector3f> &lights, Rti::Type
474
471
void RtiBuilder::pickBases (PixelArray &sample) {
475
472
// rbf can't 3d, bilinear just resample (and then single base)
476
473
if (!imageset.light3d ) {
477
- materialbuilder = pickBase (sample, imageset.lights1 );
474
+ materialbuilder = pickBase (sample, imageset.lights () );
478
475
479
476
} else {
480
477
481
478
if (type == RBF || type == BILINEAR) {
482
479
483
- materialbuilder = pickBase (sample, imageset.lights1 ); // lights are unused for rbf
480
+ materialbuilder = pickBase (sample, imageset.lights () ); // lights are unused for rbf
484
481
485
482
} else {
486
483
materialbuilders.resize (resample_width * resample_height);
@@ -782,14 +779,14 @@ bool RtiBuilder::saveJSON(QDir &dir, int quality) {
782
779
}
783
780
stream << " \" ,\n " ;
784
781
785
- if (imageset.lights1 .size ()) {
782
+ if (imageset.lights () .size ()) {
786
783
if (type == RBF)
787
784
stream << " \" sigma\" : " << sigma << " ,\n " ;
788
785
stream << " \" lights\" : [" ;
789
- for (uint32_t i = 0 ; i < imageset.lights1 .size (); i++) {
790
- Vector3f &l = imageset.lights1 [i];
786
+ for (uint32_t i = 0 ; i < imageset.lights () .size (); i++) {
787
+ Vector3f &l = imageset.lights () [i];
791
788
stream << QString::number (l[0 ], ' f' , 3 ) << " , " << QString::number (l[1 ], ' f' , 3 ) << " , " << QString::number (l[2 ], ' f' , 3 );
792
- if (i != imageset.lights1 .size ()-1 )
789
+ if (i != imageset.lights () .size ()-1 )
793
790
stream << " , " ;
794
791
}
795
792
stream << " ],\n " ;
@@ -1296,9 +1293,9 @@ size_t RtiBuilder::save(const string &output, int quality) {
1296
1293
int side = 32 ;
1297
1294
QImage img (side*(nplanes+1 ), side, QImage::Format_RGB32);
1298
1295
img.fill (qRgb (0 , 0 , 0 ));
1299
- for (uint32_t i = 0 ; i < imageset.lights1 .size (); i++) {
1296
+ for (uint32_t i = 0 ; i < imageset.lights () .size (); i++) {
1300
1297
float dx, dy;
1301
- toOcta (imageset.lights1 [i], dx, dy, side);
1298
+ toOcta (imageset.lights () [i], dx, dy, side);
1302
1299
int x = dx;
1303
1300
int y = dy;
1304
1301
int r = (int )materialbuilder.mean [i*3 +0 ];
@@ -1310,9 +1307,9 @@ size_t RtiBuilder::save(const string &output, int quality) {
1310
1307
Material::Plane &plane = material.planes [p];
1311
1308
float *eigen = materialbuilder.proj .data () + p*dim;
1312
1309
uint32_t X = (p+1 )*side;
1313
- for (size_t i = 0 ; i < imageset.lights1 .size (); i++) {
1310
+ for (size_t i = 0 ; i < imageset.lights () .size (); i++) {
1314
1311
float dx, dy;
1315
- toOcta (imageset.lights1 [i], dx, dy, side);
1312
+ toOcta (imageset.lights () [i], dx, dy, side);
1316
1313
uint32_t x = dx;
1317
1314
int y = dy;
1318
1315
int r = (int )(127 + plane.range *eigen[i*3 +0 ]);
@@ -1474,10 +1471,11 @@ void RtiBuilder::processLine(PixelArray &sample, PixelArray &resample, std::vect
1474
1471
for (uint32_t y = 0 ; y < sample.nlights ; y++)
1475
1472
A (y, 0 ) = sample[x][y].mean ();
1476
1473
1477
- for (uint32_t y = 0 ; y < imageset.lights1 .size (); y++) {
1478
- b (y, 0 ) = imageset.lights1 [y][0 ];
1479
- b (y, 1 ) = imageset.lights1 [y][1 ];
1480
- b (y, 2 ) = imageset.lights1 [y][2 ];
1474
+ for (uint32_t y = 0 ; y < imageset.lights ().size (); y++) {
1475
+ Eigen::Vector3f &l = imageset.lights ()[y];
1476
+ b (y, 0 ) = l[0 ];
1477
+ b (y, 1 ) = l[1 ];
1478
+ b (y, 2 ) = l[2 ];
1481
1479
}
1482
1480
1483
1481
Eigen::MatrixXf r = (A.transpose () * A).ldlt ().solve (A.transpose () * b);
@@ -1685,7 +1683,7 @@ void RtiBuilder::resamplePixel(Pixel &sample, Pixel &pixel) { //pos in pixels.
1685
1683
// notice how sample are already intensity corrected.
1686
1684
vector<Vector3f> RtiBuilder::relativeNormalizedLights (int x, int y) {
1687
1685
1688
- vector<Vector3f> relights = imageset.lights1 ; ;
1686
+ vector<Vector3f> relights = imageset.lights () ;
1689
1687
for (Vector3f &light: relights) {
1690
1688
light = imageset.relativeLight (light, x, y);
1691
1689
light.normalize ();
@@ -1695,7 +1693,7 @@ vector<Vector3f> RtiBuilder::relativeNormalizedLights(int x, int y) {
1695
1693
1696
1694
void RtiBuilder::buildResampleMaps () {
1697
1695
if (!imageset.light3d ) {
1698
- buildResampleMap (imageset.lights1 , resamplemap);
1696
+ buildResampleMap (imageset.lights () , resamplemap);
1699
1697
return ;
1700
1698
}
1701
1699
resamplemaps.resize (resample_height*resample_width);
@@ -1900,7 +1898,7 @@ std::vector<float> RtiBuilder::toPrincipal(Pixel &pixel, MaterialBuilder &materi
1900
1898
float weight = 0 ;
1901
1899
for (uint32_t i = 0 ; i < ndimensions; i++) {
1902
1900
Color3f &c = pixel[i];
1903
- float w = 0.25 - pow (asin (imageset.lights1 [i][2 ])/(M_PI/2 ) - 0.5 , 2 );
1901
+ float w = 0.25 - pow (asin (imageset.lights () [i][2 ])/(M_PI/2 ) - 0.5 , 2 );
1904
1902
mean += c*w;
1905
1903
weight += w;
1906
1904
}
0 commit comments