Unwrapping and UV editing
All commands related to editing and generating texture coordinates (or UVs) for a given mesh, surface, or SubD. Botcha offers a fully fledged UV editor that allows you to quickly edit the texture coordinates of the objects you create.
The panel allows you to edit, pin, unwrap, and layout the texture coordinates for objects. All commands listed here are accessible via the UV editor panel.
Use of the UV editor
The UV editor allows you to change and improve the UV texture layout in a seamless and integrated way. The UV editor panel is shown below; the top toolbar allows you to:
- Unwrap a surface, mesh, or SubD object.
- Layout the UVs of all selected objects.
- Show the edit menu.
- Show the selection menu.
- Save the currently selected UV layout.
- Select a background for the UV editor.
- Apply the changes to the current objects.
Warning
To save the changes made in the UV editor, you must click the "Apply" button.
Selection
The UV editor offers two selection modes: rectangle and brush selection. A third interaction mode allows you to warp and modify the UV mesh, similar to Photoshop's liquify brush. For each selection mode, you can also decide whether to select all vertices or only edge/non-edge vertices. Once you have selected vertices, the manipulation gizmo will appear, allowing you to rotate, move, and scale the selection.
Note
You can access the menu anywhere with SHIFT + right-click.
Changing the UVs
The second menu allows you to change, manipulate, and export the UVs. There are several tools at your disposal; here is the list and an explanation for each:
- Live unwrap: Enable or disable live unwrapping. This will relax the UV mesh interactively around the pinned vertices you have fixed.
- Pin: Fixes a vertex in place for live unwrapping. That vertex will not move during relaxation.
- Unpin: Removes the pinning constraint and allows a vertex to move during live unwrapping.
- Merge: Merges all selected vertices into the average point of the selection.
- Stitch: Connects separate UV islands by finding the closest vertex on each island and placing them at the average point. This is very useful for connecting two separate objects in the UV space.
- Straighten vertices: Places all selected vertices on a line. This can be the fit line of the selection, an X-aligned line, or a Y-aligned line.
- Add to document: Adds the UV mesh to the Rhino document.
- Set UV canvas size: Changes the scale of the UV canvas to the specified size.
- Set texel density: Invokes the texture density selection command. (See below)
- Reset view: Resets the view if you lose track of the UVs.
- Undo/Redo: Undo and redo are local to the UV editor. Since changes are only applied when clicking the button, edits made inside the UV editor are stored and undone locally.
Note
You can quickly access the menu by right-clicking on the edit gizmo.
B_Unwrap
Unwraps the selected object (i.e., generates a 2D version or a parametrization). This 2D version is then stored within the object as a texture mapping channel (the default one). Generation uses the ARAP algorithm to minimize surface or mesh stretch.
When unwrapping an object, ensure it is properly cut so that the generated texture coordinates do not overlap.
Parameters
- Steps: Number of algorithm iterations to perform; higher values result in more relaxation. After a certain threshold, iterations will not affect the output as convergence is reached.
- UVSize: Size of the 2D canvas connected to the texture. If measuring materials, this should match the size of your measurement. Texture coordinates will be scaled to match the size specified.
- Method: The default is Rigid, but you can use AngleBased for meshes with strong saddle points to avoid overlapping in the 2D output. Click here to see the tutorial.
B_LayoutUvs
Layouts the texture coordinate islands of selected objects in UV space. This command layouts objects efficiently within the UV space. It attempts to nest them to prevent overlapping while ensuring they are spread with a certain amount of padding.
Parameters
- ImageSize: Target image size for the layout operation. This influences how far apart the islands will be placed. The size is expected in pixels.
- Padding: Distance between adjacent islands during layout, in pixels.
Note
If there is not enough space for the layout, the UV charts will expand outside the UV space until they fit.
B_ScaleUvCanvas
Scales the canvas and the UVs to the specified size. This influences live unwrapping operations and all re-unwraps, as the new canvas size is used to infer the dimensions of the texture coordinates. We use the concept of canvas size to ground the application of texture coordinates in reality. If a texture represents a flat area of 500x500 mm, the matching canvas size should be the same.
Using this consistently ensures that material application matches your model 1:1.
B_AddUvToModel
Adds the 2D UV mesh of the selected objects to the model. This is particularly useful if you want a flattened version of your mesh or surface. The same metrics as the UV editor will be used to match the model proportions.
Used in combination with the Grasshopper component, this allows you to map objects from the flattened version to the 3D version of your surfaces.
B_TransferUVs
Transfers the UV coordinates from a source mesh or surface to one or more destination meshes or surfaces. This command is useful when you have many overlapping pieces of the same 3D object and want the texture to be continuous across their surface. You can choose the preferred transfer method.
Methods
- Distance based: Starting from every point of the destination mesh, it copies and applies the UVs found on the closest point of the source mesh. If no point is found within a maximum distance chosen by the user, the UVs remain unchanged.
- Ray casting: Similar to the previous strategy, but a ray along the normal direction of the destination mesh is used to find the corresponding point on the source mesh. The maximum distance criterion also applies here.
- Topology based: If the source and destination meshes have the same topology, this mode allows you to simply copy UVs from a vertex on the source to the matching one on the destination. This is useful if you have a mesh and its unwrapped version and want UV changes to sync consistently. If meshes do not share topology but have an equal number of vertices, UVs are transferred anyway, though the result may not be exactly as expected. If the vertex counts differ, transferring is impossible, and the user will be informed.
UVs transferred by ray casting.
A mesh's UVs transferred to its unwrapped version, which has the same topology.
B_PortraitUVs
Given a square and one or more meshes or surfaces, this command makes the UV canvas view fit inside the square. This is achieved by changing the UVs of the selected meshes so they fit the exact position on the canvas. The result is a "portrait" of the planar view.
Note
If the curve selected as a frame is not a square, the smallest square containing its bounding box will be used.
Click here to see how to improve your workflow using these UV manipulation commands.
B_SetTexelDensity
This command allows you to uniformly set the same texture density (i.e., pixels/unit) across all selected objects. For this command to work properly, each object must have a material with a color texture assigned. The dialog allows you to choose how many pixels cover how many units; the calculation is then applied to all selected objects.





