blob: 22a495432df0b687e8b166b016522374ac2c9cec [file] [log] [blame]
/*The dataset is from
*Computer Vision Group
*TUM Department of Informatics Technical
*University of Munich
*https://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_xyz
*/
Scene scene;
void setup() {
size(640, 480, P3D);
// default settings
int frame_no = 0; // frame number
float fov = PI / 3; // field of view
int block_size = 8; // block size
float normalizer = 5000.0f; // normalizer
// initialize
PointCloud point_cloud = new PointCloud();
// synchronized rgb, depth and ground truth
String head = "../data/";
String[] rgb_depth_gt = loadStrings(head + "rgb_depth_groundtruth.txt");
// read in rgb and depth image file paths as well as corresponding camera
// posiiton and quaternion
String[] info = split(rgb_depth_gt[frame_no], ' ');
String rgb_path = head + info[1];
String depth_path = head + info[3];
float tx = float(info[7]), ty = float(info[8]),
tz = float(info[9]); // real camera position
float qx = float(info[10]), qy = float(info[11]), qz = float(info[12]),
qw = float(info[13]); // quaternion
// build transformer
Transform trans =
new Transform(tx, ty, tz, qx, qy, qz, qw, fov, width, height, normalizer);
PImage rgb = loadImage(rgb_path);
PImage depth = loadImage(depth_path);
// generate point cloud
point_cloud.generate(rgb, depth, trans);
// initialize camera
Camera camera = new Camera(fov, new PVector(0, 0, 0), new PVector(0, 0, 1),
new PVector(0, 1, 0));
// initialize motion field
MotionField motion_field = new MotionField(block_size);
// initialize scene
scene = new Scene(camera, point_cloud, motion_field);
}
boolean inter = false;
void draw() {
background(0);
// run camera dragged mouse to rotate camera
// w: go forward
// s: go backward
// a: go left
// d: go right
// up arrow: go up
// down arrow: go down
//+ increase move speed
//- decrease move speed
// r: rotate the camera
// b: reset to initial position
scene.run(); // true: make interpolation; false: do not make
// interpolation
if (keyPressed && key == 'o') {
inter = true;
}
scene.render(
false); // true: turn on motion field; false: turn off motion field
// save frame with no motion field
scene.save("../data/frame/raw");
background(0);
scene.render(true);
showGrids(scene.motion_field.block_size);
// save frame with motion field
scene.save("../data/frame/raw_mv");
scene.saveMotionField("../data/frame/mv");
}