Temporary GroBoto v3 Documentation: Notes on Exporting Vertex Maps The SeamNet Mesh Output dialog (File->Export) now has new Vertex Map export options: The purpose of this is to allow precise control over mesh-based deformation and sculpting tools in many other 3D modeling applications where you can take the mesh exported from Groboto. Most mesh editing programs allow you to use falloffs or masks to control which areas of the mesh will be affected by mesh manipulation tools. The problem is how to create falloffs or masks tailored to specific shapes created by Groboto. A typical case: you have a patch in your Groboto model (a piece of a surface separated from other surfaces by seams, an edge loop) that you want to reshape in some other modeling program, but you don t want reshaping to affect the edge loop around this piece. What s needed here is a smooth falloff that reaches zero exactly on the boundary of the patch, while remaining strong enough inside the patch, and that s pretty tricky for a patch whose shape is not trivial. Groboto can generate such a falloff for a patch of any shape and export it in the form of a vertex weight map a value from 0 to 1 assigned to every vertex of the model, which will be used by your mesh-manipulation program to modulate the effect of a deformation tool or a sculpting brush. For now we stick with exporting meshes as.obj files, and.obj supports only two other types of data besides the mesh itself UVs and surface normals. You can choose which of these two to use in the drop-down menu shown above. If you choose UVs you will lose the ability to export regular UVs (for texture mapping), and if you choose Normals you will not be exporting surface normals. The latter is preferable, since if you are going to reshape your Groboto model in some other program, the Groboto normals will most likely be thrown away in any case. The other question, of course, is will the other program be able to convert either UV or surface normal data into a vertex weight map. Most programs should be able to do it with UV data. When Groboto exports vertex weights as UV it sets U to 0, V to vertex weight. After importing the Groboto-generated.obj file into your mesh-manipulation program you assign a texture to this mesh, using a simple vertical grayscale gradient, from black to white, as texture image
(vertical direction in the image corresponds to V). This maps an image onto the surface whose grayscale value at each vertex equals to the vertex weight generated by Groboto. All you need to do is set the mask equal to this texture. In ZBrush, for instance, it s called Mask by Intensity. Converting imported surface normals into vertex weights is less commonly available. Modo can do this, for instance, because it lets you convert any vertex-related data to any other vertex-related data. Groboto outputs vertex weight in the X component of the normal, setting Y and Z components to zero. All this will be explained in detail in application-specific kits that will become available as we develop this set of features in Groboto. The Modo kit currently being developed includes scripts for data conversion and other things, making the process much more convenient. Ultimately, we are going to have plugins for major 3D applications allowing export of the Groboto mesh and accompanying vertex weight data with a click of a button. Vertex weight map created in Groboto is controlled by these three sliders: To see the preview of the Vertex Map choose either Output in UVs or Output in Normals (this choice matters only when you hit Export to OBJ; for Preview it makes no difference). To illustrate various Vertex Weight options we'll use this simple model, a crescent embedded into a cube:
The mesh itself, shown above in the Blueprint Opaque mode, remains the same with or without Vertex Map enabled - but there is now a new display mode, available in the display mode dropdown, called Vertex Map: Choosing this mode we get the following display: The Vertex Weight distribution is shown as color on the surface, the darkest gray corresponding to 0, the brightest green to 1. The distribution always respects the shape of each patch, falling off towards its boundaries. Now we can study the effect of various slider settings on this distribution. First, let's try this:
A small value for Seam Blur radius, zero for others. This is the result: Let's get a closer look at what happens near the patch boundary: This mesh was generated with three Seam Strip rows. The line marked in blue is the middle of the seam strip, the one marked in red is the edge of the seam strip. The vertex weights are all
zero in the strip; beyond the strip they rise quickly to bright green (weight = 1). Small Seam Blur Radius means quick rise of the weight value. With greater Seam Blur Radius you get a more gradual rise of the weight value. The bottom slider, Seam Offset, controls where the rise begins. The default value 0 means the edge of the seam strip, as seen above. Here's what we get if we set Seam Offset = 0.2: The rise is as sharp as before, but it starts deeper into the patch, some distance from the edge of the seam strip. You can also move the Seam Offset slider to the left from its default position: with this result:
in this case the rise begins in the seam strip, two rows deep inside it, leaving only one row out of three completely dark: When using negative settings for this slider, to the left of the default zero, we just show the number of rows the weight map is getting into the strip. On the positive side we show a fractional value from 0 to 1 because outside of the seam strip the boundary of the vertex weight map is generally not running in the same direction as mesh rows; all we can indicate is a value from 0 (seam strip boundary) to 1 (all the way to the center of the patch). Now let's set Seam Offset back to zero, but use a wider Seam Blur Radius, 0.20:
As mentioned above, with greater Seam Blur Radius you get a more gradual transition from dark to light along the boundaries. And with greater values still we can have a really slow gradual transition - with about the same rate of rise in the entire range from dark to light. What the middle slider, Center Blur Radius, allows us to do is to make the transition slower in the brighter areas (towards the middle of the patch), while still keeping the rise pretty steep in the dark areas near the boundary. Here's the effect with Center Blur Radius set to 0.30: The transition is much less sharp now in the bright green area, while near the seam there's not much change. Compare this to very high setting for Seam Blur Radius:
where the transition is slow all the way from dark to bright. At higher settings of the top slider the second slider has almost no effect, since the transition is already slow everywhere.