Android STL File Viewer Pro
Download and install the app from the Android Market. When you run the app you are presented with an opening screen. The banner at the top takes you to the web site of the app's sponsor, Solid Technologies. The next choice (the ball icon) opens the file browser which shows just folders, STL files and point cloud files (.asc, .csv, .pts, .xyz). The third choice is the ASCII to binary converter. Select "View point clouds and STL files". The first time you run the app you will see the contents of the top level storage folder in your phone. Scroll down and click on the folder /sdcard. Now scroll down again and click on /sdcard/download where you will find any files downloaded from the web. Alternatively, if you have put STL files or point clouds elsewhere on your phone, navigate to them by clicking on folders. The top item in every list is "." which reloads the current folder, and the second item is ".." which takes you up to the parent folder.
The app remembers the last folder viewed and returns there automatically on startup.
When you see a file called (for example) enneper.stl, click on it and the STL file will be displayed. Click and drag on the screen to rotate the model in any direction, use two fingers to pinch zoom in and out or use two fingers to drag.
If you are using a phone, you may be holding it in 'portrait' mode (the screen is taller than it is wide). Try rotating it and the display will reformat to follow you. Some larger 'tablets' default to 'landscape' format (wider than they are tall), but either way is good. The display reacts according to how the device is shaped and how it is held.
You can load STL files with up to 250,000 facets.
When using the file browser, there are just two menu options, Settings and About. When you are viewing a model or a point cloud the menu includes further options:
Settings: Allows you to toggle on and off various elements of the display:
- Show facets: the STL model itself (sometimes referred to as a mesh) which is made up of a collection of triangular facets
- Show vertices: each triangular facet, as you might expect, has three corners, these are called vertices and they are shared by adjoining facets. They can be highlighted by clicking this check box
- Show XYZ axes: displays the X, Y and Z axes (red, green and blue)
- Show bounding box: the smallest xyz aligned rectalinear box which encloses the model.
- STL Model Colour: Change model colour (R, G, B or grey)
- Filtering: To make the most of the memory on your Android device, you can choose to filter out some points in a cloud. This loads the file faster and makes the screen display less dense. It also allows you to load larger clouds. Load 500,000 points (load all) up to 16 million points (load one point in 32). The limits for ASCII files are 250k to 8 million.
- Point cloud file extensions: point clouds come in many flavours and with many file extensions. You can show or hide the four commonest file extensions.
Stats: Facts and figures about the current file: the name,size and load-time, whether it is a binary or ascii file, the number of facets or points and the dimensions, including STL model volume.
3D Quote (when viewing STL files): Emails a copy of the current STL file to Solid Technologies in Pennsylvania, USA for a quotation on a 3D print in a range of materials.
Reset: Spins the model or point cloud back to its starting position, size and rotation.
Screenshot: Takes a screenshot of the current model, exactly as it appears on the screen, and saves it as a PNG file on your SD card. The file name is STL.your_file_name.PNG. The file is saved in the root (top-level) folder on the card.
Save points: Saves a quick binary point cloud of the current file on your SD card, exactly as it appears on the screen (so if you used a filter to load just a sub-set of points, just those points will be saved). The file name is STL.your_file_name.xyz. The file is saved in the same folder as the original file. This works for point clouds and STL files. When you use this on an STL file you get a binary point cloud file containing just the vertices of the current STL file. For dedicated ASCII to binary conversion, see the converter described below.
Invert (when viewing STL files): If your STL model looks odd (perhaps too dark, or you seem to be seeing part of the inside of the model and not the outside) some or all of the facets may be inverted - facing the wrong way. You can't fix that with this app, you need to go back to the software you used to create the file and reorient the facets. However, this menu option just flips all facets so they face the other way. If that makes your model look right (although though darker than a correctly formed model) then you definitely have incorrect normals.
About: Some brief details about the app and links to this site.
Z-Boost (when viewing point clouds): Some point clouds, typically those from geo surveys, can be wide and deep but not very high. The difference in altitude (the Z axis) compared to the extent of the site is sometimes very small. To show an exaggerated view of the site, this option toggles a 5x boost to the Z axis.
Press the 'back' button on your phone until you reach the app's initial screen. The third choice allows you to convert ASCII files to binary. The benefit of doing this is speed. Binary files load around 20 - 30 times faster than ASCII files. If you only have access to the ASCII file you can use this part of the app to convert the file to its binary equivalent - it works for both STL files and point clouds.
If you have very large point cloud files, the conversion will take some time. The rate is around 750 to 1000 points per second, but once you have a binary file it will load far more quickly - every time you view it.
The file list looks very similar to the one used to select files for viewing, but the icons are a little different. Simply select a known ASCII file and the conversion will begin. If you choose a binary file a message will tell you and nothing else will happen. You can do something else while a file is converting, even exit the app, check your email, browse the web... (just keep pressing the back button), but the app will only convert one file at a time. When the conversion starts and when it completes, a message is sent to the phone's notification bar at the top of the screen. The new file is given the same name as the original file with an addional extension of either .stl or .xyz.
Recognised point cloud file formats
There are many ways of saving a point cloud as ASCII data, and if your format is not currently recognised by the app, let me know, give me some sample data and I'll try to add it to the list of recognised formats. The app does not use intensity, colour, scan angle, time, data, gravity or other attributes - just x, y and z. The position of the x, y and z coordinates in each line of data are not the same for each format, but these are the formats currently recognised:
No file header, just sets of x, y and z coordinates stored as floats (3 floats per point, so each point occupies 12 bytes of the file).
The first line of the file may contain a single number which indicates the number of points in the file. Alternatively the first line may contain a series of labels indicating the position of various attributes. Here the conventions easting, northing and elevation refer to x, y and z coordinates respectively. All files may be comma, space or tab delimited. Lines starting with the hash character, #, are treated as comments and discarded. Attributes which appear after the last x, y or z value on the line are discarded. The lines may contain:
Easting, Northing, Elevation
ID, Easting, Northing, Elevation
ID, Northing, Easting, Elevation
Northing, Easting, Elevation
Easting, Northing, ID, Elevation
Northing, Easting, ID, Elevation.
Sample STL Files
Want to try out the app out on some STL files but don't have your own ready yet? Try these:
An ASCII STL file of a tetrahedron; 4 facets. As simple as it gets.
A 'catalan' isosurface; 36,860 facets. Just a strange shaped surface, created with K3DSurf and Rhino3D.
A wire frame dodecahedron; 68,832 facets. One of the Platonic solids, built by a script running in Rhino3D.
Another isosurface; 223,104 facets; 12 facets. Again from K3DSurf and Rhino3D.