Ply Tools

Below are a set of tools for manipulating ply files.  For the marching cubes datasets, we strongly recommend that you run plyclean on them before doing anything further.  After that, you might want to run qslim to get the polygon counts more reasonable.

The tools are compiled under linux.  On departmental machines, you will find them in:

 /cse/courses/cse558/bin

On GRAIL machines:   

~curless/558/bin

Here are some quick links to the descriptions of these tools.

 

ply2asc

Usage:  

ply2asc < in.ply > out.ply

Converts a ply file into ascii format.


ply2bin

Usage: 

ply2bin < in.ply > out.ply

Converts a ply file to binary format.

 

plyclean

Usage (for marching cubes output): 

plyclean -defaults < in.ply > out.ply

Removes sliver triangles from marching cubes output.


plyhead

Usage: 

plyhead in.ply

Prints out the header of a ply file.

 

ply2smf

Usage: 

ply2smf < in.ply > out.smf

Converts a ply file to "smf" format used by "qslim" (see below).

 

smf2ply

Usage: 

smf2ply < in.smf > out.ply

Converts a qslim "smf" file to ply format.

 

qslim

Usage (N = target # of triangles): 

qslim -t N < in.smf  > out.smf

Qslim is a decimation program developed by Michael Garland.  It will reduce the number of triangles using a "quadric error metric" to decide which triangles should be removed.  Here's the typical usage:

Obviously, the fewer triangles you decimate to, the less faithful the model will be to the original.  You should experiment with the value of N for each dataset.

For more details on the usage of qslim, please refer to qslim_readme.txt.  For more command line options recognized by qslim. To understand those options, you want to read his SIGGRAPH97 paper.

 

plys2set

Usage:

plys2set file.set file1.ply file2.ply ... fileN.ply

Creates a ".set" file consisting of names and sizes of a set of meshes.  This set is typically created for a mesh and successively simplified versions of that mesh.  The ".set" file can be read into scanalyze, and the various resolutions explored using the "." and "," keys.

 

plybbox

Usage:

plybbox < in.ply

Computes and prints the bounding box for a ply file.