fssr icon indicating copy to clipboard operation
fssr copied to clipboard

Introduction

This is a guideline how to compile and use FSSR, the Floating Scale Surface Reconstruction software accompanying the following paper:

Floating Scale Surface Reconstruction
Simon Fuhrmann and Michael Goesele
In: ACM ToG (Proceedings of ACM SIGGRAPH 2014).
http://tinyurl.com/floating-scale-surface-recon

This software is based on MVE, the Multi-View Environment. See the link below for details on MVE, and the next section for downloading and building MVE.

http://www.gris.tu-darmstadt.de/projects/multiview-environment/

Downlaoding and Building MVE and FSSR

MVE requires libjpeg, libpng and libtiff as dependencies, which can be obtained using the package system of your distribution.

The following commands should get you started:

# Download and compile MVE
git clone https://github.com/simonfuhrmann/mve.git
make -j8 -C mve

# Download and compile FSSR
git clone https://github.com/simonfuhrmann/fssr.git
make -j8 -C fssr

The binaries will be located and ready for execution here:

fssr/apps/fssr_octree
fssr/apps/fssr_surface

FSSR Input Data

FSSR requires as input a point set which contains several required and some optional attributes per sample. Currently, only PLY is supported as input format. All required and optional attributes are listed below:

Name           PLY Attribute(s)   Type                 Required?
------------------------------------------------------------------
3D positions   x, y, z            float 3-vector       required
normals        nx, ny, nz         float 3-vector       required
scale values   value              single float value   required
confidence     confidence         single float value   optional
color          red, green, blue   uchar 3-vector       optional

A typical PLY header (without color) then looks like this:

format binary_little_endian 1.0
element vertex 36228
property float x
property float y
property float z
property float nx
property float ny
property float nz
property float confidence
property float value
end_header

If you are using MVE and want to create a surface from a set of depth maps, you can use the 'scene2pset' tools, which is included in the MVE distribution.

Usage: scene2pset [ OPTS ] SCENE_DIR MESH_OUT

Make sure the parameters --depth and --image specify the correct depth map and corresponding image. Also enable normals, scale and confidence with the parameters --with-normals, --with-scale and --with-conf.

Running FSSR

First, the implicit function defined by the input points is sampled and stored in an octree. This is done with the 'fssr_octree' tool.

Usage: fssr_octree [ OPTS ] IN_PLY [ IN_PLY ... ] OUT_OCTREE

It takes one or more PLY files as input (connectivity information is ignored) and samples the implicit function over an octree hierarchy. The result is stored in a binary format. (Check the code for details.)

Second, the sampling of the implicit function must be converted to a surface mesh. This is done with a second 'fssr_surface' tool.

Usage: fssr_surface [ OPTS ] IN_OCTREE OUT_PLY_MESH

The tool takes as input the octree and produces a mesh. Several options can control the resulting mesh. See the tools output for details.

Trouble? Contact!

Contact information can be found on the FSSR and MVE websites.