Skip to content

Commit

Permalink
Fixed fov degrees/radians confusion. Added first rendertests. More te…
Browse files Browse the repository at this point in the history
…sts and proper image comparison needed
  • Loading branch information
peteanderson80 committed Nov 7, 2017
1 parent 6547d3b commit 3512796
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 29 deletions.
4 changes: 2 additions & 2 deletions include/MatterSim.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ namespace mattersim {
void setCameraResolution(int width, int height);

/**
* Sets camera vertical field-of-view in degrees. Default is 45 degrees.
* Sets camera vertical field-of-view in radians. Default is 0.8, approx 46 degrees.
*/
void setCameraFOV(double vfov);
void setCameraVFOV(double vfov);

/**
* Enable or disable rendering. Useful for testing. Default is true (enabled).
Expand Down
Empty file added sim_imgs/.gitkeep
Empty file.
6 changes: 3 additions & 3 deletions src/lib/MatterSim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ void setupCubeMap(GLuint& texture, cv::Mat &xpos, cv::Mat &xneg, cv::Mat &ypos,
Simulator::Simulator() :state{new SimState()},
width(320),
height(240),
vfov(45.0),
vfov(0.8),
minElevation(-0.94),
maxElevation(0.94),
navGraphPath("./connectivity"),
Expand All @@ -90,7 +90,7 @@ void Simulator::setCameraResolution(int width, int height) {
this->height = height;
}

void Simulator::setCameraFOV(double vfov) {
void Simulator::setCameraVFOV(double vfov) {
this->vfov = vfov;
}

Expand Down Expand Up @@ -273,7 +273,7 @@ void Simulator::populateNavigable() {
cv::Point3f curPos = state->location->point;
double adjustedheading = M_PI / 2 - state->heading;
glm::vec3 camera_dir(cos(adjustedheading), sin(adjustedheading), 0.f);
double cos_half_hfov = cos(vfov * width / height * M_PI / 180.f / 2.f);
double cos_half_hfov = cos(vfov * width / height / 2.f);
for (unsigned int i = 0; i < locations.size(); ++i) {
if (i == idx) {
// Current location is pushed first
Expand Down
6 changes: 3 additions & 3 deletions src/lib_python/MatterSimPython.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ namespace mattersim {
void setCameraResolution(int width, int height) {
sim.setCameraResolution(width, height);
}
void setCameraFOV(double vfov) {
sim.setCameraFOV(vfov);
void setCameraVFOV(double vfov) {
sim.setCameraVFOV(vfov);
}
void init() {
sim.init();
Expand Down Expand Up @@ -130,7 +130,7 @@ PYBIND11_MODULE(MatterSim, m) {
.def("setDatasetPath", &SimulatorPython::setDatasetPath)
.def("setNavGraphPath", &SimulatorPython::setNavGraphPath)
.def("setCameraResolution", &SimulatorPython::setCameraResolution)
.def("setCameraFOV", &SimulatorPython::setCameraFOV)
.def("setCameraFOV", &SimulatorPython::setCameraVFOV)
.def("init", &SimulatorPython::init)
.def("setSeed", &SimulatorPython::setSeed)
.def("setElevationLimits", &SimulatorPython::setElevationLimits)
Expand Down
17 changes: 11 additions & 6 deletions src/test/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ TEST_CASE( "Simulator can start new episodes and do simple motion", "[Simulator]
std::vector<std::string> viewpointIds {"cc34e9176bfe47ebb23c58c165203134", "5b9b2794954e4694a45fc424a8643081"};
Simulator sim;
sim.setCameraResolution(200,100); // width,height
sim.setCameraFOV(45); // 45deg vfov, 90deg hfov
sim.setCameraVFOV(radians(45)); // 45deg vfov, 90deg hfov
sim.setRenderingEnabled(false);
CHECK(sim.setElevationLimits(radians(-40),radians(50)));
REQUIRE_NOTHROW(sim.init());
Expand Down Expand Up @@ -75,7 +75,7 @@ TEST_CASE( "Simulator state->navigableLocations is correct", "[Simulator]" ) {
}
Simulator sim;
sim.setCameraResolution(20,20); // don't really care about the image
sim.setCameraFOV(90); // 90deg vfov, 90deg hfov
sim.setCameraVFOV(radians(90)); // 90deg vfov, 90deg hfov
double half_hfov = M_PI/4;
sim.setRenderingEnabled(false);
sim.setSeed(1);
Expand Down Expand Up @@ -201,8 +201,8 @@ TEST_CASE( "Simulator state->navigableLocations is correct", "[Simulator]" ) {
TEST_CASE( "Simulator state->rgb is correct", "[Simulator, Rendering]" ) {

Simulator sim;
sim.setCameraResolution(200,100); // width,height
sim.setCameraFOV(45); // 45deg vfov, 90deg hfov
sim.setCameraResolution(640,480); // width,height
sim.setCameraVFOV(radians(60)); // 60deg vfov, 80deg hfov
CHECK(sim.setElevationLimits(radians(-40),radians(50)));
REQUIRE_NOTHROW(sim.init());
Json::Value root;
Expand All @@ -219,10 +219,15 @@ TEST_CASE( "Simulator state->rgb is correct", "[Simulator, Rendering]" ) {
auto heading = testcase["heading"].asFloat();
auto elevation = testcase["elevation"].asFloat();

REQUIRE_NOTHROW(sim.newEpisode(scanId, viewpointId, radians(heading), radians(elevation)));
REQUIRE_NOTHROW(sim.newEpisode(scanId, viewpointId, heading, elevation));

SimStatePtr state = sim.getState();
auto reference_image = cv::imread(imgfile);
cv::imwrite("sim_imgs/"+imgfile, state->rgb);

//cv::imshow("displaywin", state->rgb);
//int key = cv::waitKey(1000);

auto reference_image = cv::imread("webgl_imgs/"+imgfile);
double err = cv::norm(reference_image, state->rgb, CV_L2);
err /= reference_image.rows * reference_image.cols;
CHECK(err < 0.1);
Expand Down
30 changes: 15 additions & 15 deletions src/test/rendertest_spec.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
[{"reference_image":"foo.jpg",
"scanId":"2t7WUuJeko7",
"viewpointId":"cc34e9176bfe47ebb23c58c165203134",
"heading":1.5,
"elevation":0},
{"reference_image":"foo.jpg",
"scanId":"2t7WUuJeko7",
"viewpointId":"cc34e9176bfe47ebb23c58c165203134",
"heading":1.53,
"elevation":0},
{"reference_image":"foo.jpg",
"scanId":"2t7WUuJeko7",
"viewpointId":"cc34e9176bfe47ebb23c58c165203134",
"heading":1.5,
"elevation":-0.08}]
[{"reference_image":"17DRP5sb8fy_10c252c90fa24ef3b698c6f54d984c5c.png",
"scanId":"17DRP5sb8fy",
"viewpointId":"10c252c90fa24ef3b698c6f54d984c5c",
"heading":3.5062574734165004,
"elevation":0.019270390413879606},
{"reference_image":"17DRP5sb8fy_85c23efeaecd4d43a7dcd5b90137179e.png",
"scanId":"17DRP5sb8fy",
"viewpointId":"85c23efeaecd4d43a7dcd5b90137179e",
"heading":2.551961945320492,
"elevation":0.008557380839564054},
{"reference_image":"17DRP5sb8fy_da5fa65c13e643719a20cbb818c9a85d.png",
"scanId":"17DRP5sb8fy",
"viewpointId":"da5fa65c13e643719a20cbb818c9a85d",
"heading":4.67491975988158,
"elevation":0.008536541120190906}]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 3512796

Please sign in to comment.