ShapeMap Plugin – General Questions

Hi @jessesn , regarding the first test with the 01_ImageModule script, it works well.

I have two questions:

  1. What is guidecurve used for? I tried checking it, but I didn’t really understand what it does. I don’t see any difference when using it.

  1. In the case of this texture, for example, if I want to move the image to center it a bit better, how can I move the image up, down, left, and right?




01_ImageModule_ciabatta.3dm (12.4 MB)
01_ImageModule_ciabatta.gh (2.6 MB)

The GuideCurve controls the overall orientation of the entire mesh distribution.

Sorry, there is currently no highly precise method, but it can get very close.

  1. Find the curve to be aligned on the 3D object.
  2. Use MapToBorder to map it to the unfolded border.
  3. Adjust the domain range of the Image Sampler in the corresponding direction.


MapToBorder.gh (975.3 KB)

Now I just noticed something: does the guide curve need to be on the same plane as the texture in order to work properly?

Yes, you are right. It works the same way as the GuideCurve in QuadRemesh, for more details, pls refer here

If instead I wanted the “guidecurve” to influence the pattern around the curve by giving it a kind of falloff / fading weight around it, similar to the FadeEdge option for the borders, how would you do it?

You can use Deconstruct Mesh to extract the vertices, and then use a curve as a attractor to influence the height value of the vertices. Then use the Construct Mesh to re-construct the mesh. FYI.

About Deconstruct Mesh Grasshopper Online Document
About Construct Mesh Grasshopper Online Document


ImageModule_CurveAttractor.gh (977.8 KB)

Okay, example 2.1 worked well. I adjusted the pattern the way I wanted using the guide curve, with three straight lines as guides.


2-1_SrfModule_ciabatta.3dm (20.1 MB)
2-1_SrfModule_ciabatta.gh (27.2 KB)

Script 2.2 is working fine.
2-2_MeshModule_ciabatta.3dm (13.4 MB)
2-2_MeshModule_ciabatta.gh (33.2 KB)


Script 2.3 ok
2-3_SubDModule_ciabatta.3dm (20.1 MB)
2-3_SubDModule_ciabatta.gh (34.3 KB)


Script 2.4 @jessesn is the one causing me the most trouble at the moment. My office PC can’t handle it, so I’ll try it tonight when I get home, using my high-end PC.

This looks really good!

@jessesn In the Brep script, the 2-4 version is working well overall, but I noticed some empty areas in the result. What do you think could be causing this? Could it be related to the input geometry, tolerance settings, or some limitation of the algorithm?
2-4_BrepModule_ciabatta.3dm (4.5 MB)
2-4_BrepModule_ciabatta.gh (247.3 KB)


Anyway, I can handle this latest version without any problems on my home PC, while Rhino completely freezes on my office workstation. So in this case, it seems that a more powerful workstation is required to work with this script efficiently.


Rhino 9 SR0 2026-6-2 (Rhino WIP, 9.0.26153.12415, Git hash:master @ 6e68e5bb66050c38dc698d4e273cb8b18eff6123)
License type: Commercial, build 2026-06-02
License details: Cloud Zoo
Expires on: 2026-07-17

Windows 11 (10.0.26200 SR0.0) or greater (Physical RAM: 63GB)
.NET 10.0.2

Computer platform: DESKTOP

Standard graphics configuration using DirectX
Primary display: NVIDIA GeForce RTX 4070 Ti (NVidia) Memory: 12GB, Driver date: 4-23-2026 (M-D-Y). DirectX(11)
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0

Secondary graphics devices.
AMD Radeon™ Graphics (AMD) Memory: 1GB, Driver date: 9-25-2025 (M-D-Y).
> Accelerated graphics device with 5 adapter port(s)
- There are no monitors attached to this device!

DirectX Settings
Safe mode: Off

OpenBLAS: OpenBLAS 0.3.30 DYNAMIC_ARCH NO_AFFINITY Cooperlake MAX_THREADS=64.

Rhino plugins that do not ship with Rhino

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 9 WIP\Plug-ins\Commands.rhp “Commands” 9.0.26153.12415
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 9 WIP\Plug-ins\UpdatesAndStatistics\UpdatesAndStatistics.rhp “UpdatesAndStatistics” 9.0.26153.12415
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 9.0.26153.12415
C:\Program Files\Rhino 9 WIP\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 9.0.26153.12415
C:\Users\Daniil\AppData\Roaming\McNeel\Rhinoceros\packages\9.0\PanelingTools\2024.8.20.677\PanelingTools.rhp “PanelingTools”
C:\Program Files\Rhino 9 WIP\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 9 WIP\Plug-ins\MeshCommands.rhp “MeshCommands” 9.0.26153.12415
C:\Program Files\Rhino 9 WIP\Plug-ins\RhinoCycles.rhp “RhinoCycles” 9.0.26153.12415
C:\Program Files\Rhino 9 WIP\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 9 WIP\Plug-ins\Calc.rhp “Calc”
C:\Program Files\Rhino 9 WIP\Plug-ins\SectionTools.rhp “SectionTools”


At the current stage, the thing I would ask you to improve is the possibility of adding an X and Y coordinate system in the example of the first case.

In my opinion, this is an important feature, because it will definitely be a common requirement: a client might want to move the pattern to the right or left, lower or higher. So a coordinate system would be ideal.

Thanks for your feedback, it looks like a minor bug. I will report it to our development engineer asap. Please try disabling BrepMap2Shape and then re-enable it again.

@jessesn Do you think this inner area, where the pattern converges, can be improved, or is this simply a limiting edge case?


ImageModule_CurveAttractor.gh (1.1 MB)

sim fillet edge 1 - brv.3dm (12.2 MB)


Could the internal edges be used in the surface unrolling process to provide a visual reference of where the internal edges of the polysurface are located? For example, as in this case, to better understand where attraction curves should be placed.

Yes, you are right, this is the limitation of unfolding - we still need to improve how localized bumps are unifromly unfolded. Thank you.

@jessesn do you happen to know of any method to create alpha textures with Rhino, a plug-in, or through Grasshopper?

Since I use ZBrush, I know one method, and I remember Blender offers a similar workflow. For example, I create any kind of 3D model, either organic or geometric, and arrange it inside a square so that it becomes a repeatable tile. Then I switch to an orthographic view, and from there, using a ZBrush command, I generate an alpha texture. It detects the depth of the 3D object and converts it into a black-and-white height map.

In this video, at minute 11, you can see how an alpha texture is generated from a 3D model:


Or in this video, at minute 4:31, when he presses the GrabDoc command, it creates the alpha:
Then, around minute 7, he takes it into Photoshop to make it tileable as a pattern, and at minute 9 he applies the texture.

I’m wondering if Rhino, Grasshopper, or any plug-in has a similar workflow for generating alpha textures directly from 3D geometry.

Could you pls give it a try with ShowZBuffer ? Thank you.

@jessesn Ohhh, this definitely belongs in Rhino’s collection of hidden commands. @Rhino_Bulgaria There isn’t even a dedicated icon for it, and it doesn’t appear in either the rendering or display command categories. Please make sure it doesn’t remain hidden; I’ve been using alternative methods for years because I simply thought Rhino wasn’t capable of doing this.


Icon Proposal: ShowZBuffer Command

@jessesn
Question: what am I doing wrong here? In ShowZBuffer it says that I can capture the alpha texture using the command:

“The ViewCaptureToFile and ViewCaptureToClipboard commands can be used to capture the contents of ShowZBuffer.”

However, when I switch to the Top view, I can’t see the model anymore. Why is that?


esagoni-zbuffer.3dm (313.3 KB)


Is it possible to create a custom ZBuffer mode inside Display Modes? @Gijs

@jessesn If I want to distribute a single repeating mesh cell over an object while maintaining a 1:1 scale with the original along the surface, is it possible to do that?


esagoni-zbuffer_alpha texture.gh (29.1 KB)


The single cell I made manually is repeatable, but it doesn’t work in the script. Where is the mistake?



esagoni-zbuffer_shapemap___ESEMPIO 2.3dm (5.2 MB)
esagoni-zbuffer_shapemap___ESEMPIO 2.gh (31.2 KB)

The ShowZBuffer command behaves a bit weird when I zoom-in and zoom-out. It depends on the geometry around, but in most cases the medium gray suddenly becomes black for no obvious reason.

Because the pattern required by current Mesh2Map needs to be one that remains alignable after a 90-degree rotation, your current pattern does not meet this requirement.

You can use a rectangular pattern to achieve it, and fyi.
MeshModule.gh (36.9 KB)

I‘ve made some adjustment to Mesh2Map fitting your current pattern. Hope this helps, and thank you so muche for your feedback again.
MeshModule_Plus.gh (38.3 KB)