Update to language in READMEs
This commit is contained in:
parent
d3e244bebf
commit
5a8e748f3a
|
@ -14,7 +14,7 @@ Would you like to buy one?
|
||||||
|
|
||||||
GNAL stands for Gnal's Not A Lomo because it isn't. While inspired by a certain motion picture development tank the goal of this project is to create a free, open-source, modification-friendly processing system for small format movie film with the added constraint that it be 3D printable or otherwise able to be fabricated on a small scale. All source code and STL files for printing will be made available in this repository.
|
GNAL stands for Gnal's Not A Lomo because it isn't. While inspired by a certain motion picture development tank the goal of this project is to create a free, open-source, modification-friendly processing system for small format movie film with the added constraint that it be 3D printable or otherwise able to be fabricated on a small scale. All source code and STL files for printing will be made available in this repository.
|
||||||
|
|
||||||
GNAL is built using [OpenSCAD](https://www.openscad.org/). OpenSCAD is a free, open-source CAD program that uses scripts to generate objects. Building this project in OpenSCAD serves two purposes: it uses only free and open source software to create the GNAL processing spirals and it future-proofs the design by preserving its dimensions in human-readable text format. Even if OpenSCAD were to disappear tomorrow (and we sincerely hope it doesn't) it would still be possible to recreate the GNAL models in another CAD program just by reading the code and reproducing the measurements.
|
GNAL is built using [OpenSCAD](https://www.openscad.org/). OpenSCAD is a free, open-source CAD program that uses scripts to generate objects. Building this project in a scripting language serves two purposes: it uses only free and open source software to create the GNAL processing spirals and it future-proofs the design by preserving its dimensions in human-readable text format. Even if OpenSCAD were to disappear tomorrow (and we sincerely hope it doesn't) it would still be possible to recreate the GNAL models in another CAD program just by reading the code and reproducing the measurements.
|
||||||
|
|
||||||
While the files are all free, open-source and readily available to download; actually printing them can be a challenge. Please read through this README for information about materials, printers and troubleshooting your prints.
|
While the files are all free, open-source and readily available to download; actually printing them can be a challenge. Please read through this README for information about materials, printers and troubleshooting your prints.
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ The diameter of these spiral reels limit the printers that are capable of making
|
||||||
|
|
||||||
**50ft/15m Capable Printers**
|
**50ft/15m Capable Printers**
|
||||||
|
|
||||||
* [PrintrBot Metal Plus](https://www.adafruit.com/product/2302) **Discontinued** **Tested**
|
* [PrintrBot Metal Plus](https://www.adafruit.com/product/2302) **Tested** **[Discontinued]**
|
||||||
* [LulzBot TAZ 6](https://www.lulzbot.com/store/printers/lulzbot-taz-6) Untested
|
* [LulzBot TAZ 6](https://www.lulzbot.com/store/printers/lulzbot-taz-6) Untested
|
||||||
* [aniwaa.com Search: Printers with print bed > 225mm x 225mm](https://www.aniwaa.com/comparison/3d-printers/?sort=price&order=asc&filter_search&filter_price_minimum&filter_price_maximum&filter_build_size_width=225&filter_build_size_height=225&filter_build_size_depth)
|
* [aniwaa.com Search: Printers with print bed > 225mm x 225mm](https://www.aniwaa.com/comparison/3d-printers/?sort=price&order=asc&filter_search&filter_price_minimum&filter_price_maximum&filter_build_size_width=225&filter_build_size_height=225&filter_build_size_depth)
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,13 @@ The `scripts/benchmark.sh` script will run various tests on the different approa
|
||||||
|
|
||||||
### V1
|
### V1
|
||||||
|
|
||||||
Intended to be mostly compatible with existing processing spirals with some caveats. A spacer that is typically threaded has been replaced by a friction fit part so they are not interchangeable.
|
Intended to be mostly compatible with existing processing spirals with some caveats. A spacer that is typically threaded has been replaced by a friction fit part so they are not interchangeable. This version is designed to fit in existing tanks and use the same spindle screws.
|
||||||
|
|
||||||
This version is designed to fit in existing tanks and use the same spindle screws.
|
|
||||||
|
|
||||||
In the process of building this first version several approaches were evaluated to generate the spiral shape. The first is what's best described as a brute force approach laying out an excessive amount of rectangular facets and unioning them together in such a way that the result would be a single continuous spiral. This took hours to days to render depending on the machine used.
|
In the process of building this first version several approaches were evaluated to generate the spiral shape. The first is what's best described as a brute force approach laying out an excessive amount of rectangular facets and unioning them together in such a way that the result would be a single continuous spiral. This took hours to days to render depending on the machine used.
|
||||||
|
|
||||||
Besides the exhausting render times this approach bugged me for one reason: all facets of the spiral were the same size, meaning that the small diameter inner parts of the spiral were packing in millions of unnecessary polygons to allow for the large diameter parts of the spiral to be smooth. This didn't sit well with me. How many CPU hours are being burned by adding detail to a place that doesn't matter? Answer: a lot.
|
Besides the exhausting render times this approach bugged me for one reason: all facets of the spiral were the same size, meaning that the small diameter inner parts of the spiral were packing in millions of unnecessary polygons to allow for the large diameter parts of the spiral to be smooth. This didn't sit well with me. How many CPU hours are being burned by adding detail to a place that doesn't matter? Answer: a lot.
|
||||||
|
|
||||||
Finally an external library called [`path_extrude.scad`](https://github.com/gringer/bioinfscripts/blob/master/path_extrude.scad) by [@gringer](https://github.com/gringer) was brought in to handle the complicated spiral extrusion step. A simple function that plots a spiral in Cartesian coordinates is used to draw the path and a 2D triangle is extruded along it by the library. This allowed for the path to be drawn at a consistent "resolution" throughout the entire spiral, so the facets of the outermost and innermost parts were the same or extremely similar.
|
Finally, an external library called [`path_extrude.scad`](https://github.com/gringer/bioinfscripts/blob/master/path_extrude.scad) by [@gringer](https://github.com/gringer) was brought in to handle the complicated spiral extrusion step. A simple function that plots a spiral in Cartesian coordinates is used to draw the path and a 2D triangle is extruded along it by the library. This allowed for the path to be drawn at a consistent "resolution" throughout the entire spiral, so the facets of the outermost and innermost parts were the same or extremely similar.
|
||||||
|
|
||||||
Here is that function reduced to a single line in order to generate an array of coordinates.
|
Here is that function reduced to a single line in order to generate an array of coordinates.
|
||||||
|
|
||||||
|
@ -118,7 +116,7 @@ The goals of V3 are to **greatly** optimize the spiral generation code for speed
|
||||||
|
|
||||||
Since the benchmarking process ([see below](#benchmarks)) was developed between V2 and V3, render times are optimized in this iteration of the project. The success of the [`spiral_3.scad`](scad/spiral/spiral_3.scad) approach stood out from the rest as fastest, so it was reworked into what exists in V3.
|
Since the benchmarking process ([see below](#benchmarks)) was developed between V2 and V3, render times are optimized in this iteration of the project. The success of the [`spiral_3.scad`](scad/spiral/spiral_3.scad) approach stood out from the rest as fastest, so it was reworked into what exists in V3.
|
||||||
|
|
||||||
The spiral itself is plotted in 2D with a relatively simple formula that is expressed in the OpenSCAD script through a number of in-line helper functions. It draws the position of various points along the spiral path and then uses the `path_extrude.scad` library to extrude a shape along those coordinates. This proves to be fast and efficient while not sacrificing any of the detail in the geometry.
|
The spiral itself is plotted in 2D with a relatively simple formula that is expressed in this OpenSCAD script through a number of in-line helper functions. It draws the position of various points along the spiral path and then uses the `path_extrude.scad` library to extrude a shape along those coordinates. This proves to be fast and efficient while not sacrificing any detail in the geometry.
|
||||||
|
|
||||||
Prior to release a serious flaw was found while printing the V3 design. The attempt to remove the need for supports in V2, actually printing the spiral was creating curious side effects during fabrication. Not having material in the voids below the spiral, it seems, allowed air to cool the part and would consistently cause prints to fail when it reached the actual spiral at the top of the reel. Since this is the most important element of the reel, the triangles have been removed and the design is more similar to V1. Testing continues on this version.
|
Prior to release a serious flaw was found while printing the V3 design. The attempt to remove the need for supports in V2, actually printing the spiral was creating curious side effects during fabrication. Not having material in the voids below the spiral, it seems, allowed air to cool the part and would consistently cause prints to fail when it reached the actual spiral at the top of the reel. Since this is the most important element of the reel, the triangles have been removed and the design is more similar to V1. Testing continues on this version.
|
||||||
|
|
||||||
|
@ -157,7 +155,7 @@ Rendered using OpenSCAD version 2020.08.18 on a 2.2 GHz Core i7 (I7-4770HQ) chip
|
||||||
<a name="benchmarks"></a>
|
<a name="benchmarks"></a>
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
In the process of publishing this repository I started questioning claims I was making in this README. Throughout the development of this processing reel I've been plagued by long render times. As a sanity check, I went through my personal development history on this project and produced 6 distinct spiral generation scripts that I ran through a series of tests to benchmark the render performance, total volume generated and number of facets produced. Render time was the primary metric that concerned me, but I considered the other important in comparing these different approaches.
|
In the process of publishing this repository I started questioning claims I was making in this README. Throughout the development of this processing reel I've been plagued by long render times. As a sanity check, I went through my personal development history on this project and produced 6 distinct spiral generation scripts that I ran through a series of tests to benchmark the render performance, total volume generated and number of facets produced. Render time was the primary metric that concerned me, but I considered the others important in comparing these different approaches.
|
||||||
|
|
||||||
This work led to the creation of the approach in `spiral_7.scad` and was ultimately used in V3.
|
This work led to the creation of the approach in `spiral_7.scad` and was ultimately used in V3.
|
||||||
|
|
||||||
|
@ -165,7 +163,7 @@ An example of a single test pulled from the `notes/benchmark.csv` results. These
|
||||||
|
|
||||||
|Spiral Test|Diameter (mm)|Rotations| [$fn](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#$fa,_$fs_and_$fn) |Size (bytes)|Facets|Volume (mm<sup>3</sup>)|Time (sec)|
|
|Spiral Test|Diameter (mm)|Rotations| [$fn](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#$fa,_$fs_and_$fn) |Size (bytes)|Facets|Volume (mm<sup>3</sup>)|Time (sec)|
|
||||||
|---|---|---|---|---|---|---|---|
|
|---|---|---|---|---|---|---|---|
|
||||||
|[scad/spiral/](spiral_1.scad)|47|10|100|7409653|41064|5391.819336|209|
|
|[spiral_1.scad](scad/spiral/spiral_1.scad)|47|10|100|7409653|41064|5391.819336|209|
|
||||||
|spiral_2.scad|47|10|100|15349620|86646|3639.441162|855|
|
|spiral_2.scad|47|10|100|15349620|86646|3639.441162|855|
|
||||||
|spiral_3.scad|47|10|100|1336635|8004|3589.485596|0|
|
|spiral_3.scad|47|10|100|1336635|8004|3589.485596|0|
|
||||||
|spiral_4.scad|47|10|100|1607691|9624|3830.134521|23|
|
|spiral_4.scad|47|10|100|1607691|9624|3830.134521|23|
|
||||||
|
@ -173,11 +171,11 @@ An example of a single test pulled from the `notes/benchmark.csv` results. These
|
||||||
|spiral_6.scad|47|10|100|4265376|25396|14337.455078|120|
|
|spiral_6.scad|47|10|100|4265376|25396|14337.455078|120|
|
||||||
|spiral_7.scad|47|10|100|990006|5924|3581.499756|0|
|
|spiral_7.scad|47|10|100|990006|5924|3581.499756|0|
|
||||||
|
|
||||||
As you can see, the different approaches lead to wildly different render times for different tests. If you look at the complete results you will see many tests did not even finish due to exhausting the memory on the machine or the process being killed by
|
As you can see, the different approaches lead to wildly different render times for the same test. If you look at the complete results you will see many tests did not even finish due to exhausting the memory on the machine or the process being killed by the cloud host (using too much CPU for too long, most likely). In the case of `spiral_3.scad` and `spiral_7.scad` measuring "0" seconds, this just means that the process finished rendering in less than 1 second.
|
||||||
|
|
||||||
In the `scad/spiral` directory you will find each individual script in a `scad/spiral/spiral_#.scad` file. The `scripts/benchmark.sh` script will render spirals at various resolutions and rotation counts and record the results in `notes/benchmark.csv`.
|
In the `scad/spiral` directory you will find each individual script in a `scad/spiral/spiral_#.scad` file. The `scripts/benchmark.sh` script will render spirals at various resolutions and rotation counts and record the results in `notes/benchmark.csv`.
|
||||||
|
|
||||||
Consider this comparison of just the 50ft spirals (top spiral from V1).
|
Insights gleaned from these benchmarks was incorporated into the latest versions of design. Consider this comparison of just the 50ft spirals (top spiral from V1).
|
||||||
|
|
||||||
| # | Model | Size (bytes) | Facets | Volume (mm<sup>3</sup>) | Render Time (sec) |
|
| # | Model | Size (bytes) | Facets | Volume (mm<sup>3</sup>) | Render Time (sec) |
|
||||||
|---|-------|--------------|--------|-------------------------|-------------------|
|
|---|-------|--------------|--------|-------------------------|-------------------|
|
||||||
|
|
Loading…
Reference in New Issue