Documentation

​
​

Development

User Acquisition

Monetization

Industry

Asset Transformer Studio

2026.5.0

Supported
​

User Manual

Python API

Changelog

Asset Transformer Studio

2026.5.0

Supported
​

​
​
Get started
  • About Asset Transformer Studio
  • Getting started
  • Additional Resources
User Interface
  • Overview
  • Menu Bar
  • Toolbars
  • Window
  • Customizing the User Interface
Data Preparation Fundamentals
  • Overview
  • General Information
  • Typical Data Preparation Workflow
  • About 3D Models Types
  • About the Product Structure (Tree)
  • About Occurrences
  • About Instances & Prototypes
  • About Face and Vertex Normals
  • About UVs
    • Continuous UVs from CAD Models
  • About Tessellation
  • About Decimation
  • About Animation
  • Glossary
Working With Asset Transformer Studio
  • Overview
  • Videos and Tutorials
  • Supported File Formats
  • Importing Files
  • Exporting Files
  • Scripting With the Python API
  • Interrupting a Process
  • Plugins
  • Errors in Asset Transformer Studio
Python API Reference
  • Overview
Changelog
  • Changelog
  1. Asset Transformer Studio
  2. Data Preparation Fundamentals
  3. About UVs

Continuous UVs from CAD Models

How to generate continuous UVs from CAD models in Asset Transformer Studio
Read time 4 minutes
Last updated 9 hours ago

Asset Transformer Studio gives the possibility to generate UVs based on the CAD data, which can then be made continuous for repeatable textures, or repacked for lightmaps.
Here is an example of a brushed aluminum material applied on a model for which continuous UVs were created using this method:
Continuous UVs example

How To

UVs from CAD can be generated at the tessellation phase, based on the BRep/NURBS surfaces contained in a CAD model. They are called "Conformal Scaled UVs".
Here is how to setup the
UV Mode
parameter in the Tessellate function:
Conformal Scaled UVs parameter
Important
These CAD UVs are generated at the tessellation phase, so they can only be obtained with CAD models containing NURBS/BRep geometries.
The algorithm creates one UV island per CAD patch, unstretched, with a correct 2D scale relative to its 3D size. A small patch will have a smaller 2D size (in the UV space) than a big patch of the same part, resulting in a homogeneously scaled set of UVs.
Here is an example with the CAD model of a soldering gun:
CAD UV islands
As is, these CAD UVs are not really suitable for repeatable textures, nor for lightmaps — they are disconnected, too large, etc. — but they are a usable starting point.
See the paragraphs below to see how the UVs can be used both for repeatable textures and lightmaps.

UVs for repeatable textures

UVs obtained at tessellation with the Conformal Scaled UV method are not directly usable for repeatable textures, as they are not connected to each other, nor continuous, as we can see with a Wood texture applied to the model:
Disconnected UV islands
To make the patches continuous, use the function algo.mergeUVIslands(), which minimizes the number of seams in the UV mapping.
After running this function, UV islands are now continuous, allowing the texture to repeat properly:
Merged UV islands
The remaining issue is the seam position (green arrows): it is quite visible on the arm of the soldering gun, because it's placed at the exterior.
If we were to manually unwrap this model, we would place the seam in the interior of the arm, where it is less visible.
There is a method to do that automatically as well.
Using the function algo.createVisibilityInformation() before merging UV islands together, Asset Transformer Studio can find which polygons are less visible in the model, in order to find a better place to cut seams.
The polygons that are less visible from cameras placed around the model are automatically marked as candidates for seams (their edges/boundaries), using visibility attributes.
These visibility attributes are transferred as weights to the function algo.mergeUVIslands() using another function: algo.transferVisibilityToPolygonalWeight().
Using these visibility attributes as a helper to find the best seam possible, the UV islands merging gives a much better result, with a seam placed in the interior of the arm, where it is the least visible:
Optimized seam placement
Comparing the result of the UV obtained by merging the Conformal Scaled UVs against UVs obtained by a simple projection, we can see the benefits of the first method: textures are continuous with no visible seams, and unstretched!
Comparison with projection
Asset Transformer Studio is shipped with a Sample Script called GenerateUVsFromCADModel.py, allowing to obtain the result above.
You can also use the following code:
root = scene.getRoot()algo.repairCAD([root], 0.1)algo.tessellate([root], 0.2, -1, -1, True, algo.UVGenerationMode.ConformalScaledUV, 0)algo.createVisibilityInformation([root], 2, 1024, 16, 90, True)algo.transferVisibilityToPolygonalWeight([root], 2)algo.mergeUVIslandsAffine([root], 0, 0, 1.2, -1, 1, -1, 0, False, 90)algo.resizeUVsToTextureSize([1], 100, 0)
Note
Check the API Reference for more information about each function used in that script, and adapt it to your need.

UVs for lightmaps

UVs obtained at tessellation with the Conformal Scaled UV method are not directly suitable for lightmaps, as they are overlapping and not repacked in the [0,1] UV space, making lightmap baking impossible.
But UV islands generated are great as they are properly scaled and unstretched. So, they only need a basic repacking to be ready for baking.
The example below shows perfectly repacked UVs:
Repacked UV islands
Here is the code used to obtain the result above: it copies the UVs generated at tessellation for the first channel (0) into the secondary channel, which gets repacked (all parts are repacked in the same UV space in this example):
root = scene.getRoot()algo.repairCAD([root], 0.1)algo.tessellate([root], 0.2, -1, -1, True, 2, 0)algo.copyUV([root], 0, 1)algo.repackUV([root], 1, True, 1024, 2, False, 3, True)
Note
Check the API Reference for more information about copyUV and repackUV.

Copyright © 2026 Unity Technologies
LegalPrivacy PolicyCookiesDocumentation Terms of UseDo Not Sell or Share My Personal InformationYour Privacy Choices (Cookie Settings)

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S and elsewhere (more info here). Other names or brands are trademarks of their respective owners.

Some pages are machine-translated for convenience, and may contain inaccuracies. In the event of conflicting information, the English version is authoritative.

  • On this page
    • How To

      • UVs for repeatable textures

      • UVs for lightmaps