From 8c7c0d21c3032b18b4360fa17aa869c37766f483 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:21:24 -0700 Subject: [PATCH 01/17] Textures from Graphic Images 1 --- skin.scad | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/skin.scad b/skin.scad index 4886971c..30844afd 100644 --- a/skin.scad +++ b/skin.scad @@ -3627,6 +3627,14 @@ function associate_vertices(polygons, split, curpoly=0) = // tex = texture("bricks_vnf"); // cyl(d=10,h=15,texture=tex, tex_reps=[4,2],tex_samples=5,rounding=2); // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); +// Subsection: Textures from Graphic Images +// The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. +// **img2scad.py is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// **img2scad.html** contains a javascript creates a texture array from any image your browser can render. +// **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. +// . +// All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. +// // Function: texture() From 9384526dd10bdb787c93b7433d8e4dda9a32ab01 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:24:31 -0700 Subject: [PATCH 02/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index 30844afd..bd614230 100644 --- a/skin.scad +++ b/skin.scad @@ -3629,7 +3629,7 @@ function associate_vertices(polygons, split, curpoly=0) = // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); // Subsection: Textures from Graphic Images // The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. -// **img2scad.py is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. // **img2scad.html** contains a javascript creates a texture array from any image your browser can render. // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . From 16a01fd03d1939edbdf3cbb9af2f563d0be2b244 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:28:13 -0700 Subject: [PATCH 03/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index bd614230..c8224e23 100644 --- a/skin.scad +++ b/skin.scad @@ -3634,7 +3634,7 @@ function associate_vertices(polygons, split, curpoly=0) = // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// +// Null Test // Function: texture() From 855b2111c0e53dc03711867f8011164d749df65d Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:31:34 -0700 Subject: [PATCH 04/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index c8224e23..934006fe 100644 --- a/skin.scad +++ b/skin.scad @@ -3629,7 +3629,7 @@ function associate_vertices(polygons, split, curpoly=0) = // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); // Subsection: Textures from Graphic Images // The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. -// **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// img2scad.py is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. // **img2scad.html** contains a javascript creates a texture array from any image your browser can render. // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . From e6a3c667f40ae45fa388353a63a38e8657ac8557 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:34:02 -0700 Subject: [PATCH 05/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index 934006fe..c8224e23 100644 --- a/skin.scad +++ b/skin.scad @@ -3629,7 +3629,7 @@ function associate_vertices(polygons, split, curpoly=0) = // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); // Subsection: Textures from Graphic Images // The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. -// img2scad.py is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. // **img2scad.html** contains a javascript creates a texture array from any image your browser can render. // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . From 094a8b4ed7804e4afeaa284ac4339f4d8f30d194 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:37:44 -0700 Subject: [PATCH 06/17] Update skin.scad --- skin.scad | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index c8224e23..9b209977 100644 --- a/skin.scad +++ b/skin.scad @@ -3634,7 +3634,11 @@ function associate_vertices(polygons, split, curpoly=0) = // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// Null Test +// Figure(3D,Big,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): The left shows a normal bricks_vnf texture. The right shows a texture that was first passed through {{vnf_triangulate()}}. Note the extra triangle artifacts visible at the ends on the brick faces. +// tex = texture("bricks_vnf"); +// cyl(d=10,h=15,texture=tex, tex_reps=[4,2],tex_samples=5,rounding=2); +// up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); +// Continues: // Function: texture() From edbda5d5be459a57496bdd791c7114e6d476fee0 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:47:03 -0700 Subject: [PATCH 07/17] Update skin.scad --- skin.scad | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/skin.scad b/skin.scad index 9b209977..751ff715 100644 --- a/skin.scad +++ b/skin.scad @@ -3634,10 +3634,14 @@ function associate_vertices(polygons, split, curpoly=0) = // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// Figure(3D,Big,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): The left shows a normal bricks_vnf texture. The right shows a texture that was first passed through {{vnf_triangulate()}}. Note the extra triangle artifacts visible at the ends on the brick faces. -// tex = texture("bricks_vnf"); -// cyl(d=10,h=15,texture=tex, tex_reps=[4,2],tex_samples=5,rounding=2); -// up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); +// Figure(3D,Big,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): A globe made by texturing the rotate sweep of a 180 degree arc. +// include +// $fn = 288; +// style = "aligned"; //[orig,aligned,stagger,octa,icosa] +// fudge = 0.001; //[0.001:0.001:0.01] +// color("blue") spheroid(20 + fudge, style = style, $fn = 180); +// rotate_sweep(arc(r = 20, n = 180, start = -90, angle = 180), 360, +// texture = worldmap, tex_depth = 0.5, tex_reps = [1,1]); // Continues: From f6dd6d63db6a31b2f2098e1011759674695acd88 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 16:50:42 -0700 Subject: [PATCH 08/17] Update skin.scad --- skin.scad | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/skin.scad b/skin.scad index 751ff715..66ea151f 100644 --- a/skin.scad +++ b/skin.scad @@ -3634,12 +3634,10 @@ function associate_vertices(polygons, split, curpoly=0) = // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// Figure(3D,Big,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): A globe made by texturing the rotate sweep of a 180 degree arc. +// Figure(3D,Med,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): A globe made by texturing the rotate sweep of a 180 degree arc. // include // $fn = 288; -// style = "aligned"; //[orig,aligned,stagger,octa,icosa] -// fudge = 0.001; //[0.001:0.001:0.01] -// color("blue") spheroid(20 + fudge, style = style, $fn = 180); +// color("blue") spheroid(20.006, style = "aligned", $fn = 180); // rotate_sweep(arc(r = 20, n = 180, start = -90, angle = 180), 360, // texture = worldmap, tex_depth = 0.5, tex_reps = [1,1]); // Continues: From a0ba3cb6e68ed739e1bfb208bb079db1f2a57c50 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Thu, 19 Jun 2025 17:38:58 -0700 Subject: [PATCH 09/17] Update skin.scad --- skin.scad | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/skin.scad b/skin.scad index 66ea151f..2c635ce5 100644 --- a/skin.scad +++ b/skin.scad @@ -3634,12 +3634,13 @@ function associate_vertices(polygons, split, curpoly=0) = // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// Figure(3D,Med,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): A globe made by texturing the rotate sweep of a 180 degree arc. -// include -// $fn = 288; -// color("blue") spheroid(20.006, style = "aligned", $fn = 180); -// rotate_sweep(arc(r = 20, n = 180, start = -90, angle = 180), 360, -// texture = worldmap, tex_depth = 0.5, tex_reps = [1,1]); +// Figure(3D,Med,NoAxes): On the left the `tex_samples` value is small and the texture is blocky. On the right, the default value of 8 allows a reasonable fit to the cylinder. +// xdistribute(spacing=5){ +// cyl(d=10/PI, h=5, chamfer=0, +// texture=texture("bricks_vnf"), tex_samples=1, tex_reps=[6,3], tex_depth=.2); +// cyl(d=10/PI, h=5, chamfer=0, +// texture=texture("bricks_vnf"), tex_samples=8, tex_reps=[6,3], tex_depth=.2); +// } // Continues: From 8224ab10065d3f7c1f0be620e02720e4e0515b2a Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sat, 21 Jun 2025 12:35:16 -0700 Subject: [PATCH 10/17] Skin updates --- attachments.scad | 2 +- skin.scad | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/attachments.scad b/attachments.scad index d395d903..f2c164e0 100644 --- a/attachments.scad +++ b/attachments.scad @@ -409,7 +409,7 @@ _ANCHOR_TYPES = ["intersect","hull"]; // Things get difficult when the objects are curved, or even when their edges are not neatly aligned with the coordinate axes. // In these cases, the library may provide multiple different anchoring schemes, called the anchor types. When a module supports // multiple anchor types, use the `atype=` parameter to select the anchor type you need. -// . +// . // First consider the case of a simple rectangle whose corners have been rounded. Where should the anchors lie? // The default anchor type puts them in the same location as the anchors of an unrounded rectangle, which means that for // positive rounding radii, they are not even located on the perimeter of the object. diff --git a/skin.scad b/skin.scad index 2c635ce5..8f1b17c5 100644 --- a/skin.scad +++ b/skin.scad @@ -3458,10 +3458,6 @@ function associate_vertices(polygons, split, curpoly=0) = ) associate_vertices(newpoly, split, curpoly+1); - - - - // Section: Texturing // Some operations are able to add texture to the objects they create. A texture can be any regularly repeated variation in the height of the surface. // To define a texture you need to specify how the height should vary over a rectangular block that is repeated to tile the object. Because textures @@ -3543,12 +3539,15 @@ function associate_vertices(polygons, split, curpoly=0) = // dots together. But in 3D example we need to triangulate the points on a grid, and this triangulation is not unique. // The `style` argument lets you specify how the points are triangulated using the styles supported by {{vnf_vertex_array()}}. // In the example below we have expanded the 2D example into 3D: +// // ```openscad // [[0,0,0,0], // [0,1,1,0], // [0,1,1,0], // [0,0,0,0]] // ``` +// +// Continues: // and we show the 3D triangulations produced by the different styles: // Figure(3D,Big,NoAxes,VPR=[45.5,0,18.2],VPT=[2.3442,-6.25815,3.91529],VPD=35.5861): // tex = [ @@ -3623,7 +3622,7 @@ function associate_vertices(polygons, split, curpoly=0) = // extra points can be introduced in the interior of faces leading to unexpected irregularities in the textures, which appear // as extra triangles. These artifacts can be minimized by making the VNF texture's faces as large as possible rather than using // a triangulated VNF, but depending on the specific VNF texture, it may be impossible to entirely eliminate them. -// Figure(3D,Big,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): The left shows a normal bricks_vnf texture. The right shows a texture that was first passed through {{vnf_triangulate()}}. Note the extra triangle artifacts visible at the ends on the brick faces. +// Figure(3D,Med,NoAxes,VPR=[140.9,0,345.7],VPT=[9.48289,-0.88709,5.7837],VPD=39.5401): The left shows a normal bricks_vnf texture. The right shows a texture that was first passed through {{vnf_triangulate()}}. Note the extra triangle artifacts visible at the ends on the brick faces. // tex = texture("bricks_vnf"); // cyl(d=10,h=15,texture=tex, tex_reps=[4,2],tex_samples=5,rounding=2); // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); @@ -3632,18 +3631,18 @@ function associate_vertices(polygons, split, curpoly=0) = // **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. // **img2scad.html** contains a javascript creates a texture array from any image your browser can render. // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. -// . -// All three of these scripts place a named array in an .scad file with names specified at run time. These files should be included in your model. -// Figure(3D,Med,NoAxes): On the left the `tex_samples` value is small and the texture is blocky. On the right, the default value of 8 allows a reasonable fit to the cylinder. -// xdistribute(spacing=5){ -// cyl(d=10/PI, h=5, chamfer=0, -// texture=texture("bricks_vnf"), tex_samples=1, tex_reps=[6,3], tex_depth=.2); -// cyl(d=10/PI, h=5, chamfer=0, -// texture=texture("bricks_vnf"), tex_samples=8, tex_reps=[6,3], tex_depth=.2); -// } +// . +// Each of these scripts places a named array in an .scad file with names specified at run time. Use include<> to add the array to your model. +// . +// This is some text before the test image. +// . +// Here is a globe created using geotiff2scad.py to generate the texture array. +// +// ![Geotiff Example](images/skin/globe_animation.png) +// Geotiff Example +// // Continues: - - +// This is some text after the test image. // Function: texture() // Topics: Textures, Knurling // Synopsis: Produce a standard texture. From 463c0a0e291c1fd1a7cd4da5d2209c20af0b63a2 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sat, 21 Jun 2025 23:41:06 -0700 Subject: [PATCH 11/17] Update skin.scad --- skin.scad | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/skin.scad b/skin.scad index dfb4adaf..7f2dd5b1 100644 --- a/skin.scad +++ b/skin.scad @@ -3696,21 +3696,19 @@ function associate_vertices(polygons, split, curpoly=0) = // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); // Subsection: Textures from Graphic Images // The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. +// . // **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// . // **img2scad.html** contains a javascript creates a texture array from any image your browser can render. +// . // **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. // . // Each of these scripts places a named array in an .scad file with names specified at run time. Use include<> to add the array to your model. // . -// This is some text before the test image. +// A globe created using the geotiff2scad.py script to generate the texture array: // . -// Here is a globe created using geotiff2scad.py to generate the texture array. -// // ![Geotiff Example](images/skin/globe_animation.png) -// Geotiff Example -// -// Continues: -// This is some text after the test image. +// . // Function: texture() // Topics: Textures, Knurling // Synopsis: Produce a standard texture. From 2743862b6126adaa700059b1a1d2265436432e1f Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 00:16:34 -0700 Subject: [PATCH 12/17] Update skin.scad --- skin.scad | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/skin.scad b/skin.scad index 7f2dd5b1..b10d6d4b 100644 --- a/skin.scad +++ b/skin.scad @@ -3694,21 +3694,7 @@ function associate_vertices(polygons, split, curpoly=0) = // tex = texture("bricks_vnf"); // cyl(d=10,h=15,texture=tex, tex_reps=[4,2],tex_samples=5,rounding=2); // up(7)fwd(-3)right(15)cyl(d=10,h=15,texture=vnf_triangulate(tex), tex_reps=[4,2],tex_samples=5,rounding=2); -// Subsection: Textures from Graphic Images -// The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. -// . -// **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. -// . -// **img2scad.html** contains a javascript creates a texture array from any image your browser can render. -// . -// **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. -// . -// Each of these scripts places a named array in an .scad file with names specified at run time. Use include<> to add the array to your model. -// . -// A globe created using the geotiff2scad.py script to generate the texture array: -// . -// ![Geotiff Example](images/skin/globe_animation.png) -// . +// // Function: texture() // Topics: Textures, Knurling // Synopsis: Produce a standard texture. @@ -5274,7 +5260,21 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = ] ]; - +// Subsection: Textures from Graphic Images +// The BOSL2 scripts folder contains three scripts for creating texture arrays from graphic images. +// . +// - **img2scad.py** is a python script that creates a texture array from most common raster image formats, including gif, png, jpeg. +// . +// - **img2scad.html** contains a javascript creates a texture array from any image your browser can render. +// . +// - **geotiff2scad.py** is a python script creates a texture array from geotiff depth maps. +// . +// Each of these scripts places a named array in an .scad file with names specified at run time. Use include<> to add the array to your model. +// . +// A globe created using the geotiff2scad.py script to generate the texture array: +// . +// ![Geotiff Example](images/skin/globe_animation.png) +// . From cc6f1dcff5619de70deac6a793a2f08fd7adef1e Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 12:35:40 -0700 Subject: [PATCH 13/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index b10d6d4b..a1adc195 100644 --- a/skin.scad +++ b/skin.scad @@ -5273,7 +5273,7 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = // . // A globe created using the geotiff2scad.py script to generate the texture array: // . -// ![Geotiff Example](images/skin/globe_animation.png) +// ![Geotiff Example](images/skin/globe_animation.gif) // . From 68d17ed373bfdf17023618caa27d0d47ad78c456 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 15:02:00 -0700 Subject: [PATCH 14/17] Update skin.scad --- skin.scad | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/skin.scad b/skin.scad index a1adc195..d3a85aea 100644 --- a/skin.scad +++ b/skin.scad @@ -5271,11 +5271,24 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = // . // Each of these scripts places a named array in an .scad file with names specified at run time. Use include<> to add the array to your model. // . +// Both **img2scad.py** and **img2scad.html** provide similar capabilities, but the html script has a few additional capabilities +// as well as providing a graphical user interface. +// . +// On the right is a {{textured_tile()}} with the texture array created by **img2scad.html** from the .png file on the left: +// . +// ![Textured Tile](images/skin/WilburTex01.png) +// . +// The image luminance is directly translated into texture depth in the example above. Better results can be obtained by passing +// the original image through an AI image processor to produce a depth map from the image before creating the texture array. +// . +// ![Texture Tile](images/skin/WilburTex02.png) +// . +// AI image processing tool and workflows are changing quite rapidly. See the [discussion](https://github.com/BelfrySCAD/BOSL2/discussions/1731) on depth map workflows for current best practices. +// . +// Geotiff data from // A globe created using the geotiff2scad.py script to generate the texture array: // . // ![Geotiff Example](images/skin/globe_animation.gif) // . - - // vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap From bb6de8815214ba9d53cfc78d5afa55ba9f550564 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 15:16:05 -0700 Subject: [PATCH 15/17] Update skin.scad --- skin.scad | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index d3a85aea..8aa4b586 100644 --- a/skin.scad +++ b/skin.scad @@ -5285,7 +5285,14 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = // . // AI image processing tool and workflows are changing quite rapidly. See the [discussion](https://github.com/BelfrySCAD/BOSL2/discussions/1731) on depth map workflows for current best practices. // . -// Geotiff data from +// Sources of whole planet GeoTIFF Data include: +// * [USGS Astrogeology Science Center](https://astrogeology.usgs.gov/search) +// * [NASA PDS (Planetary Data System)](https://pds.nasa.gov) +// * [OpenPlanetaryMap / OpenPlanetary](https://github.com/OpenPlanetary/opm) +// . +// GeoTIFF data for smaller areas comes from the Space Shuttle Radar Topography Mission. Data covering about 80% of the Earth's surface +// is at [Earthdata](https://www.earthdata.nasa.gov/data/instruments/srtm/data-access-tools) +// . // A globe created using the geotiff2scad.py script to generate the texture array: // . // ![Geotiff Example](images/skin/globe_animation.gif) From c452459869a25b0d5f273fa71f0858e30a8ea196 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 15:19:42 -0700 Subject: [PATCH 16/17] Update skin.scad --- skin.scad | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skin.scad b/skin.scad index 8aa4b586..f690f347 100644 --- a/skin.scad +++ b/skin.scad @@ -5291,9 +5291,9 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = // * [OpenPlanetaryMap / OpenPlanetary](https://github.com/OpenPlanetary/opm) // . // GeoTIFF data for smaller areas comes from the Space Shuttle Radar Topography Mission. Data covering about 80% of the Earth's surface -// is at [Earthdata](https://www.earthdata.nasa.gov/data/instruments/srtm/data-access-tools) +// is available from [Earthdata](https://www.earthdata.nasa.gov/data/instruments/srtm/data-access-tools) // . -// A globe created using the geotiff2scad.py script to generate the texture array: +// A globe created using the **geotiff2scad.py** script to generate the texture array: // . // ![Geotiff Example](images/skin/globe_animation.gif) // . From 8128582e999ad2332dc9dec878c0b855a57363b2 Mon Sep 17 00:00:00 2001 From: Richard Milewski Date: Sun, 22 Jun 2025 15:30:17 -0700 Subject: [PATCH 17/17] Update skin.scad --- skin.scad | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skin.scad b/skin.scad index f690f347..493df369 100644 --- a/skin.scad +++ b/skin.scad @@ -5283,7 +5283,7 @@ function _resample_point_array(data, size, col_wrap=false, row_wrap=false) = // . // ![Texture Tile](images/skin/WilburTex02.png) // . -// AI image processing tool and workflows are changing quite rapidly. See the [discussion](https://github.com/BelfrySCAD/BOSL2/discussions/1731) on depth map workflows for current best practices. +// AI image processing tool and workflows are still evolving rapidly. See the [discussion](https://github.com/BelfrySCAD/BOSL2/discussions/1731) on depth map workflows for current best practices. // . // Sources of whole planet GeoTIFF Data include: // * [USGS Astrogeology Science Center](https://astrogeology.usgs.gov/search)