done with initial draft
This commit is contained in:
parent
0795e76a6c
commit
72a888500d
6 changed files with 169 additions and 27 deletions
|
@ -1,5 +1,5 @@
|
||||||
name = "From the Office of the Chief Sundries Officer and Head of R&D"
|
name = "Office of the Chief Sundries Officer and Head of R&D"
|
||||||
title = "From the Office of the Chief Sundries Officer and Head of R&D"
|
title = "From the Desk of the Chief Sundries Officer and Head of R&D"
|
||||||
|
|
||||||
# The URL the site will be built for
|
# The URL the site will be built for
|
||||||
base_url = "https://proclamations.nebcorp-hias.com"
|
base_url = "https://proclamations.nebcorp-hias.com"
|
||||||
|
|
|
@ -3,7 +3,7 @@ title = "A Thoroughly Digital Artifact"
|
||||||
slug = "a-thoroughly-digital-artifact"
|
slug = "a-thoroughly-digital-artifact"
|
||||||
date = "2023-01-17"
|
date = "2023-01-17"
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
tags = ["3dprinting", "CAD", "GIS", "CNC", "art", "sundries", "proclamation"]
|
tags = ["3dprinting", "CAD", "GIS", "CNC", "art", "sundry", "proclamation", "research"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
![A plywood slab carved with CNC into a topographic representation of California][main_image]
|
![A plywood slab carved with CNC into a topographic representation of California][main_image]
|
||||||
|
@ -87,10 +87,11 @@ The CNC shop had requested a model in a format called
|
||||||
[ST**P**](https://www.fastradius.com/resources/everything-you-need-to-know-about-step-files/). `.stp`
|
[ST**P**](https://www.fastradius.com/resources/everything-you-need-to-know-about-step-files/). `.stp`
|
||||||
is the extension for a "STEP" file; STEP is supposed to be short for "standard for the exchange of
|
is the extension for a "STEP" file; STEP is supposed to be short for "standard for the exchange of
|
||||||
product data", so someone was playing pretty fast and loose with their initialisms, but I
|
product data", so someone was playing pretty fast and loose with their initialisms, but I
|
||||||
digress. The main thing about STEP files is that CAD programs can really easily convert them
|
digress. The main thing about STEP files is that CAD programs can really easily convert them into
|
||||||
into their native internal solid body representation, which allows easy manipulation. Another thing
|
their native internal solid body representation, which allows easy manipulation. <a
|
||||||
about them is that a CAD program can usually turn a manifold mesh into an STP file, unless the mesh is
|
name="prophecy"></a> Another thing about them is that a CAD program can usually turn a manifold mesh
|
||||||
too complicated and your computer doesn't have enough RAM (*note: foreshadowing*[^chekhovs-ram]).
|
into an STP file, unless the mesh is too complicated and your computer doesn't have enough RAM
|
||||||
|
(*note: foreshadowing*[^chekhovs-ram]).
|
||||||
|
|
||||||
![an overly-complicated mesh of a cube][meshy-cube]
|
![an overly-complicated mesh of a cube][meshy-cube]
|
||||||
*<center><sup><sub>this cube's mesh has too many vertices and edges, I hope my computer has enough
|
*<center><sup><sub>this cube's mesh has too many vertices and edges, I hope my computer has enough
|
||||||
|
@ -554,8 +555,8 @@ different tools.
|
||||||
This also meant that I would run into limits due to translation overhead when going between
|
This also meant that I would run into limits due to translation overhead when going between
|
||||||
them. Let me explain. I'd get a mesh in Blender, export it to a neutral mesh format like
|
them. Let me explain. I'd get a mesh in Blender, export it to a neutral mesh format like
|
||||||
[OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) that both programs understand well, and it
|
[OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) that both programs understand well, and it
|
||||||
would be a 60 megabyte file. My computer has 32 **giga**bytes, more 500 times more memory than
|
would be a 60 megabyte file. My computer has 32 **giga**bytes, more than 500 times more memory than
|
||||||
that, so you'd think it would not be a problem.
|
that, so you'd think it would not be a problem.
|
||||||
|
|
||||||
The act of asking FreeCAD to import that OBJ file as a *mesh*, and not even as a solid body, caused
|
The act of asking FreeCAD to import that OBJ file as a *mesh*, and not even as a solid body, caused
|
||||||
the memory use to go to 21 gigabytes. This is a lot, but the computer still had plenty of room left
|
the memory use to go to 21 gigabytes. This is a lot, but the computer still had plenty of room left
|
||||||
|
@ -566,7 +567,8 @@ When I attempted to convert that mesh into a solid body, though, memory use ball
|
||||||
encompass all available RAM, and my system slowed to a nearly imperceptible crawl until my frantic
|
encompass all available RAM, and my system slowed to a nearly imperceptible crawl until my frantic
|
||||||
`ctrl-c`s were finally registered by the [signal
|
`ctrl-c`s were finally registered by the [signal
|
||||||
handlers](https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html) in FreeCAD
|
handlers](https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html) in FreeCAD
|
||||||
before I could use it again. This happened a lot.
|
before I could use it again. This happened *a lot*. At last, <a href="#prophecy">the prophecy</a> had
|
||||||
|
come to pass.
|
||||||
|
|
||||||
I went through many rounds of attempting to clean up the mesh and reduce its complexity, but I don't
|
I went through many rounds of attempting to clean up the mesh and reduce its complexity, but I don't
|
||||||
have many notes or intermediate artifacts from this time. A lot of that was being a beginner at both
|
have many notes or intermediate artifacts from this time. A lot of that was being a beginner at both
|
||||||
|
@ -581,12 +583,13 @@ conspired to make this portion of the process a total slog with very little to s
|
||||||
|
|
||||||
Finally, after a couple weeks of trying and failing to get something into FreeCAD that I could then
|
Finally, after a couple weeks of trying and failing to get something into FreeCAD that I could then
|
||||||
work with (like melding it with a thick base and trimming that base to follow the shape of the
|
work with (like melding it with a thick base and trimming that base to follow the shape of the
|
||||||
state), I had had enough. I have some notes from the time:
|
state), I had had enough. I have some notes from the time, from right after I'd started a test print
|
||||||
|
of my latest model:
|
||||||
|
|
||||||
> I'm finally printing something out. I've given up on converting it into a parametric
|
> I'm finally printing something out. I've given up on converting it into [something CAD-friendly];
|
||||||
CAD-like object; it seems this is a Hard Problem, but I'm not sure why. My goal with doing that was
|
it seems this is a Hard Problem, but I'm not sure why. My goal with doing that was to give a
|
||||||
to give a parametric CAD file to a local CNC milling shop, per their request, since when I suggested
|
CAD-friendly file to a local CNC milling shop, per their request, since when I suggested a
|
||||||
a mesh-based file (STL), the guy was like "I can't do much manipulation with that to make it more
|
mesh-based file (STL), the guy was like "I can't do much manipulation with that to make it more
|
||||||
manufacturable, so a real CAD file would be best".
|
manufacturable, so a real CAD file would be best".
|
||||||
>
|
>
|
||||||
> But at least with an STL file, I can print it myself. So that's going now, we'll see how it turns
|
> But at least with an STL file, I can print it myself. So that's going now, we'll see how it turns
|
||||||
|
@ -598,13 +601,13 @@ When that print was done, here's what it looked like:
|
||||||
|
|
||||||
![a piece of literal dogshit][crappy_test_print]
|
![a piece of literal dogshit][crappy_test_print]
|
||||||
|
|
||||||
In case you were not revolted enough, I invite you to cast your gaze upon this eldritch abomination:
|
In case you were not revolted enough, then please allow me to direct your gaze upon this eldritch abomination:
|
||||||
|
|
||||||
![close-up of extremely bad print results][crappy-close-up]
|
![close-up of extremely bad print results][crappy-close-up]
|
||||||
|
|
||||||
As bad as it looked, it felt even worse to touch. Setting aside the hideous base with its weird
|
As bad as it looked, it felt even worse to touch. Setting aside the hideous base with its weird
|
||||||
artifacts due to those areas not being a single flat polygon, but rather several polygons that were
|
artifacts due to those areas not being a single flat polygon, but rather several polygons that were
|
||||||
not parallel or co-planar (modeling artifact), there was just too much high-frequency detail in the
|
not parallel or co-planar (modeling artifact), there was still just too much high-frequency detail in the
|
||||||
terrain, and it was a total mismatch with the 3D printed medium.
|
terrain, and it was a total mismatch with the 3D printed medium.
|
||||||
|
|
||||||
The real thing was going to be carved out of wood by a [CNC
|
The real thing was going to be carved out of wood by a [CNC
|
||||||
|
@ -634,11 +637,12 @@ simplification](https://graphics.stanford.edu/courses/cs468-10-fall/LectureSlide
|
||||||
the geometry was practically homeopathic.
|
the geometry was practically homeopathic.
|
||||||
|
|
||||||
![the final model in blender][final-model]
|
![the final model in blender][final-model]
|
||||||
|
*<center><sup><sub>by the principles of homeopathy, the fewer the vertices, the more potent the mesh</sub></sup></center>*
|
||||||
|
|
||||||
Check out this close-up of Mt Shasta:
|
Check out this close-up of Mt Shasta:
|
||||||
|
|
||||||
![close-up of Shasta in the final model][final-shasta]
|
![close-up of Shasta in the final model][final-shasta]
|
||||||
*<center><sup><sub>a less lonely Mt Shasta</sub></sup></center>*
|
*<center><sup><sub>a chonkier, less lonesome Mt Shasta</sub></sup></center>*
|
||||||
|
|
||||||
Present, but not obnoxious. I printed out another test print to make sure it looked as good in
|
Present, but not obnoxious. I printed out another test print to make sure it looked as good in
|
||||||
physical reality:
|
physical reality:
|
||||||
|
@ -652,25 +656,158 @@ can still look at and interact with a 3D model of it in the browser on that site
|
||||||
of neat. A couple different strangers uploaded pictures of their prints of it, which I thought was
|
of neat. A couple different strangers uploaded pictures of their prints of it, which I thought was
|
||||||
cool!
|
cool!
|
||||||
|
|
||||||
|
I brought the mesh into FreeCAD and finally was able to create the STP[^fancy-iges] file the shop had
|
||||||
|
asked for, a mere twenty-five days after I'd last spoken with them.
|
||||||
|
|
||||||
# Final cut
|
# Final cut
|
||||||
|
|
||||||
# Thank yous, lessons learned, and open questions
|
I emailed the file to the shop, and said,
|
||||||
|
|
||||||
thank you: wife, steve at the shop, friends indulging my oversharing, NASA, Blender, FreeCAD
|
> As modeled, there's probably more high-frequency detail in the mountains than is necessary, as I'm
|
||||||
|
> going for something that feels nice to the touch so smoother is better. It's also modeled at a
|
||||||
|
> slightly larger scale than necessary, though not too far off (it's 500x577mm, and I'm interested
|
||||||
|
> in the 400-500mm range for width; the relief height is in the 20-30mm range depending on scale). I
|
||||||
|
> was imagining it would be carved with contour cuts in some thick nice ply, though I'm happy to
|
||||||
|
> hear better ideas; I have literally no experience with making something like this.
|
||||||
|
|
||||||
lesson: I started basically knowing nothing, but now retracing my steps I feel like I understand everything
|
The shop came back with,
|
||||||
much better than when I was first racing through the material trying to get to a point where I could
|
|
||||||
just produce the artifact.
|
|
||||||
|
|
||||||
lesson: pipeline of geotiff -> mask -> scaled heightmap -> mesh -> solid body
|
> I can’t smooth out the cuts, I can only cut what is there. That being said, if I use a rounded cutter, it will round out the valleys but not the peaks as it won’t go into areas that it can’t reach.
|
||||||
|
>
|
||||||
|
> Hope that makes sense.
|
||||||
|
>
|
||||||
|
> Let me know if this will work for you or not. If you think it will, I will try to program the toolpaths and see what it will look like.
|
||||||
|
|
||||||
lesson: see whole article about GIS stuff
|
I definitely didn't want to lose the sharp seams in the bottoms of the valleys.
|
||||||
|
|
||||||
question: could I do it better in blender? freecad? could I have used gdal_polygonize (doubtful,
|
> Me: I guess what I was really saying is that if some detail is lost due to using a larger cutting
|
||||||
given how much I had to blur and decimate)?
|
head that's probably fine. I wouldn't necessarily want the valleys to be made more concave than they
|
||||||
|
already are, though. Does that make sense?
|
||||||
|
>
|
||||||
|
> Shop: Yes, that makes sense. I can use a Vee cutter and it will cut the sharp edges in the
|
||||||
|
valleys."
|
||||||
|
|
||||||
|
It felt nice to be understood! Next came the issue of cost:
|
||||||
|
|
||||||
|
> I ran the numbers on both sizes using a .01” step-over cut, meaning that is how far apart the
|
||||||
|
> finish cuts will be from each other.
|
||||||
|
>
|
||||||
|
> You will probably see some tool marks depending on what type of material is used.
|
||||||
|
>
|
||||||
|
> The larger one is coming in at around $850.00 and the 12” one at $350.00.
|
||||||
|
>
|
||||||
|
> I can go tighter, say .005” step-over and it will probably not show many marks but I won’t know
|
||||||
|
> until I run it.
|
||||||
|
>
|
||||||
|
> If I do that it will double the cut time so close to doubling the price.
|
||||||
|
|
||||||
|
One of the things that my wife had said she wanted to do with the carving of California was sand and
|
||||||
|
finish it herself, so the coarser 0.01-inch step-over cut was not really a problem. Even the
|
||||||
|
0.005-inch cut would still require a final sanding before staining or sealing.
|
||||||
|
|
||||||
|
The "larger one" the shop referred to was for a 20-inch wide carving, which would be huge anyway; 12
|
||||||
|
inches was fine. Still, $350 was at the top of what I had hoped/expected to spend. I hoped it was
|
||||||
|
worth it!
|
||||||
|
|
||||||
|
After a few more back-and-forths and days, I got a message from the shop saying it was ready. They
|
||||||
|
also said,
|
||||||
|
|
||||||
|
> I decided to run these with half the original step-over, which means it takes twice as long but
|
||||||
|
> the finish is almost smooth. I think you will be pleased with it.
|
||||||
|
|
||||||
|
Whoa! This meant he had used the 0.005-inch cutting resolution, and the job had taken twice as long
|
||||||
|
as originally quoted. Like the [kind and generous tailor from *The Hudsucker
|
||||||
|
Proxy*](https://getyarn.io/yarn-clip/0f78e11f-df94-42e4-8bdf-b11c39326f7c), he had given me the
|
||||||
|
double-stitch anyway, even though I had insisted that single stitch was fine. I was very excited and
|
||||||
|
grateful, and couldn't wait to see it.
|
||||||
|
|
||||||
|
## Pics or it didn't happen
|
||||||
|
|
||||||
|
When I got there, it was almost exactly what I had imagined and hoped it would be. Obviously, you've
|
||||||
|
seen the photo at the top of the page, but please enjoy this CNC-carved topographic California porn.
|
||||||
|
|
||||||
|
![portrait of the whole state][wood-portrait]
|
||||||
|
*<center><sup><sub>some nice soft lighting</sub></sup></center>*
|
||||||
|
|
||||||
|
![our old friend, the Sutter Buttes][wood-buttes]
|
||||||
|
*<center><sup><sub>sutter buttes, we meet again</sub></sup></center>*
|
||||||
|
|
||||||
|
![down low view, like the shot from Blender][wood-blender]
|
||||||
|
*<center><sup><sub>recognize this angle, from blender?</sub></sup></center>*
|
||||||
|
|
||||||
|
![close up of Shasta][wood-shasta]
|
||||||
|
*<center><sup><sub>lookin' good, shasta</sub></sup></center>*
|
||||||
|
|
||||||
|
I wasn't the only one pleased with it; my wife was delighted when she saw it.
|
||||||
|
|
||||||
|
MISSION ACCOMPLISHED, HAPPY *<sub>belated</sub>* BIRTHDAY!
|
||||||
|
|
||||||
|
# Thank yous
|
||||||
|
|
||||||
|
Obviously, I have tons of people to thank for their help with this, either directly or
|
||||||
|
indirectly. First and foremost, my wife, for everything but especially the inspiration and also
|
||||||
|
patience with me during this process.
|
||||||
|
|
||||||
|
A close second goes to Steve at [Triumph CNC](https://www.triumphcnc.com/). He asked me what I was
|
||||||
|
going to do with it, and when I said give it to my wife as a gift, he said, "Oh, that's great! I
|
||||||
|
feel even better about using the smaller step-over now." If you need some CNC milling done in Los
|
||||||
|
Angeles, maybe give them a call!
|
||||||
|
|
||||||
|
Along the way during this journey I got a lot of feedback and suggestions from friends and
|
||||||
|
colleagues, so thank you, 'rades[^short-for-comrades]!
|
||||||
|
|
||||||
|
Of course, this would all have been unthinkably difficult not so long ago, but thanks to things like
|
||||||
|
NASA's missions and public GIS datasets, almost anyone can do something like this.
|
||||||
|
|
||||||
|
And not just public, government data and organizations, but private, passion-driven free software
|
||||||
|
projects like Blender and FreeCAD rival functionality available only in multi-thousand-dollar
|
||||||
|
commercial packages. I'm in awe of their accomplishments; they are true wonders of the modern world.
|
||||||
|
|
||||||
|
# Things I learned, and some lessons
|
||||||
|
|
||||||
|
I said early on that I knew basically nothing about any of this, and that was true. I had had some
|
||||||
|
earlier casual experience with both Blender and FreeCAD, and many, many years ago I had taken a
|
||||||
|
semester of engineering drafting my first year of college. But I knew basically nothing about GIS,
|
||||||
|
about the different map projections, about shapefiles, about any of the tools or jargon. Likewise,
|
||||||
|
I have no experience or instruction in any kind of CNC milling; my scant 3D printing experience
|
||||||
|
doesn't really apply.
|
||||||
|
|
||||||
|
This article is as close as I could get to serializing nearly everything I had to learn and do to
|
||||||
|
create that carving.
|
||||||
|
|
||||||
|
And at the time it was happening, it didn't feel like I was retaining all of it, or that I really,
|
||||||
|
truly understood everything I had done; I was hurrying as fast as I could toward a particular
|
||||||
|
goal. But in the course of writing this, I was basically retracing my steps, and found that I really
|
||||||
|
did have a pretty good handle on it. One of my favorite things to do is learn stuff, so this was a
|
||||||
|
great outcome for me!
|
||||||
|
|
||||||
|
If I were to do this again, or if I were starting for the first time with the benefit of someone
|
||||||
|
else's experience, there are obviously a few things I would do differently. First off, I'd see if I
|
||||||
|
could find a lower-resolution dataset. One arc second is way overkill; at the scale of a topo
|
||||||
|
carving that you can hold in your hands, a resolution of several arc *minutes* (one arc minute is
|
||||||
|
one [nautical mile](https://en.wikipedia.org/wiki/Nautical_mile), which is about 1.1 regular
|
||||||
|
(terrestrial?) miles) would probably be enough.
|
||||||
|
|
||||||
|
I'd also use the USGS [national map downloader](https://apps.nationalmap.gov/downloader/) site to
|
||||||
|
get just the California data; you can upload a shapefile and it'll give you back a masked
|
||||||
|
geotiff. If I had started from that, it would have shaved at least two weeks off the time it took me
|
||||||
|
to make the thing; I could have jumped immediately into being frustrated in Blender and FreeCAD.
|
||||||
|
|
||||||
|
Speaking of, I wish I could give some guidance on effectively using Blender and FreeCAD, but that's
|
||||||
|
a journey only you can plot. That's probably not true, but I still feel like a doofus in those
|
||||||
|
tools, so I don't feel like it's worth anyone's time to hear from me about them. Good luck in your
|
||||||
|
quest!
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
[wood-portrait]: wood-full-portrait.jpg "portrait shot of the whole carving"
|
||||||
|
|
||||||
|
[wood-buttes]: wood_sutter_buttes.jpg "our old friend, the Sutter Buttes"
|
||||||
|
|
||||||
|
[wood-blender]: wooden_like_blender.jpg "down low view, like the shot from Blender"
|
||||||
|
|
||||||
|
[wood-shasta]: wooden_shasta_close-up.jpg "close up of Shasta"
|
||||||
|
|
||||||
[final-print]: final_printed.jpg "the final test print of the final model"
|
[final-print]: final_printed.jpg "the final test print of the final model"
|
||||||
|
|
||||||
[final-shasta]: final_shasta.png "close-up of Shasta in the final model"
|
[final-shasta]: final_shasta.png "close-up of Shasta in the final model"
|
||||||
|
@ -744,3 +881,8 @@ heightmap shown above, so you can imagine all the dead-ends I went down and did
|
||||||
write-up.
|
write-up.
|
||||||
|
|
||||||
[^zero-forty-oneth]: I think this was just the first fractional value that I tried, and it was fine.
|
[^zero-forty-oneth]: I think this was just the first fractional value that I tried, and it was fine.
|
||||||
|
|
||||||
|
[^fancy-iges]: I actually produced an [IGES](https://en.wikipedia.org/wiki/IGES) file; STP is basically
|
||||||
|
fancy IGES, and my model didn't include the extra info in STP files like material and color anyway.
|
||||||
|
|
||||||
|
[^short-for-comrades]: pronounced "rads", and is short for "comrades".
|
||||||
|
|
BIN
content/sundries/a-very-digital-artifact/wood-full-portrait.jpg
Normal file
BIN
content/sundries/a-very-digital-artifact/wood-full-portrait.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 454 KiB |
BIN
content/sundries/a-very-digital-artifact/wood_sutter_buttes.jpg
Normal file
BIN
content/sundries/a-very-digital-artifact/wood_sutter_buttes.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 650 KiB |
BIN
content/sundries/a-very-digital-artifact/wooden_like_blender.jpg
Normal file
BIN
content/sundries/a-very-digital-artifact/wooden_like_blender.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 202 KiB |
Binary file not shown.
After Width: | Height: | Size: 335 KiB |
Loading…
Reference in a new issue