Evan Rosson
CSC 570
Winter 2007
This program has been tested on Ubuntu Linux 6.10. You'll need OpenGL and GLUT. All other required libraries should be included, though you may have to play around with the makefiles for the libraries included in the source's /lib
directory.
Command line usage:
./vrip [OPTIONS...] alignment.conf [data.ply...]
Ply files should be in ASCII format. (See the included Stanford Bunny data.)
Command Line Options | ||
---|---|---|
--res X Y Z | Volume resolution; X * Y * Z voxels. Default 10 * 10 * 10. | |
--cutoff VALUE | Weight cutoff value used when generating volume. Default 0.20. Used to prevent surfaces on opposite sides of the model from interacting | |
--zthresh VALUE | Z threshhold used when generating range surfaces. Default 0.005 Increase this value if your range surfaces are connected where no connection should appear. |
Camera controls | |
---|---|
a,d | Move left/right |
w,s | Move up/down |
z,x | Move forward/backward |
A,D | Rotate along x-axis |
W,S | Rotate along y-axis |
Z,X | Rotate along z-axis |
r | Reset to starting camera angle/size |
g | Show next stage* |
G | Show previous stage* |
o | Show all input files |
n | Show only the next input file |
h | Display help |
i | Image alignment on/off |
f | Flatten image |
q | Scale image up (enlarge) |
Q | Scale image down (shrink) |
c | Toggle colors |
l | List alignment/display settings |
Most of these issues are relatively straightforward fixes, if enough time were available; there are no glaring architectural problems with the program that I'm aware of.
A single range image, read from a PLY file. Data taken from Stanford's repository. | |
A single range surface, generated from the previous range image. | |
The volume generated from the above range image. Resolution is 25 * 25 * 25 voxels. | |
Multiple aligned range surfaces. Each range surface is a different color. | |
The result of merging the volumes generated from the preceding six range images. | |
The surface generated from the above volume using Marching Cubes. | |
The surface generated from the above volume using Marching Cubes on a 50 * 50 * 50 volume. Some parts are more apparent at a higher resolution, especially the back leg; but it's apparent that there are still some problems with volume intersection calculations. |
More results, obtained using a cutoff of 0.05 at a resolution of 25 * 25 * 25:
make && ./vrip --res 25 25 25 --cutoff 0.05 data/bunny/data/bun.conf data/bunny/data/bun000.ply data/bunny/data/bun045.ply data/bunny/data/bun090.ply data/bunny/data/bun180.ply data/bunny/data/bun270.ply data/bunny/data/bun315.ply
Even more results, obtained using a cutoff of 0.05 at a resolution of 50 * 50 * 50:
make && ./vrip --res 50 50 50 --cutoff 0.05 data/bunny/data/bun.conf data/bunny/data/bun000.ply data/bunny/data/bun045.ply data/bunny/data/bun090.ply data/bunny/data/bun180.ply data/bunny/data/bun270.ply data/bunny/data/bun315.ply