Ultimapper and the Gigapolygon Core: Baking Maps from High-Resolution Meshes
Author: Jonathan McDermott, Softimage Developer, Softimage
Thanks to the XSI Gigapolygon core, Ultimapper can generate maps from meshes of 40 million or more polygons. Which means that Ultimapper can handle pretty much anything you can throw at it. This article provides some hard numbers to back up that claim.
Workflow
The following are two typical methods of getting data from Zbrush to XSI:
- Use the OBJ Exporter to export high-res mesh (as high-res as possible).
- Use a lower-res mesh and displacement maps.
This document examines the use of a high-res mesh.
OBJ Export
Zbrush can export a mesh to OBJ format, which you can then import into XSI. Investigation shows that XSI can handle as many polygons as ZBrush 2.0 can export.
- Zbrush hits a hard max at 10 million polygons per mesh (it cannot subdivide beyond this; the Preferences > Mem > MaxPolyPerMesh goes only to 10)
- A memory limit of 2 Gb; Zbrush does not support the /3Gb switch nor does it run under 64-bit Windows.
To work around these limits, you can export multiple meshes from Zbrush and then stitch them back together in XSI.
The basics workflow:
- Create a low-resolution mesh in XSI.
- Export the mesh to OBJ format.
- Import the mesh as a Tool in Zbrush and add detail. Subdivide as needed.
- Export the Tool from Zbrush in OBJ format.
- Open an XSI scene that already contains the original low-resolution mesh.
- Import the high-resolution mesh exported from ZBrush.
- Add an Ultimapper property to the low-resolution mesh and pick the high-resolution mesh as the source.
- Set the resolution, quality, and maps to be generated, and then click the Generate button.
Ultimapper Resolution
The resolution tested was an estimate at the maximum that would be of use for a game engine. Typically 2048 will be as high as they will want to go. The tests below were done at 2048 and 8192.
Performance in XSI
These are the results of some tests in XSI using an extremely high-resolution mesh. The tests were performed on the following machine:
- 64-bit Windows XP Professional
- 8 Gigs RAM
- 2 Dual-core AMD Opterons, 2.0 Ghz
Import OBJ
| # Polygons | # Triangles | Time (seconds) | Memory |
|---|---|---|---|
| 1.3 Million | 2.3 Million | 72s | 395 Mb |
| 20 Million | 40 Million | 588s | 2.28 Gb |
| 40 Million | 80 Million | 1,071s | 3.15 Gb |
Normal Map – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 368.2188 |
| 2048 | High | Lo 10K – Hi 20M | 378.9922 |
| 2048 | High | Lo 3K – Hi 40M | 6298.426 |
| 2048 | High | Lo 10K – Hi 40M | 7307.734 |
| 8192 | High | Lo 10K – Hi 20M | 1050.617 |
| 8192 | High | Lo 10K – Hi 40M | 8374.441 |
Normal Map – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 116.4688 |
| 2048 | High | Lo 10K – Hi 20M | 120.6094 |
| 2048 | High | Lo 3K – Hi 40M | 268.8594 |
| 2048 | High | Lo 10K – Hi 40M | 293.5156 |
| 8192 | High | Lo 10K – Hi 20M | 917.4023 |
| 8192 | High | Lo 10K – Hi 40M | 1128.879 |
Ambient Occlusion – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 104.0156 |
| 2048 | High | Lo 10K – Hi 20M | 109.1563 |
| 2048 | High | Lo 3K – Hi 40M | 253.2813 |
| 2048 | High | Lo 10K – Hi 40M | 291.4922 |
| 8192 | High | Lo 10K – Hi 20M | 781.168 |
| 8192 | High | Lo 10K – Hi 40M | 1025.258 |
Ambient Occlusion – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 3291.586 |
| 2048 | High | Lo 10K – Hi 20M | 3234.758 |
| 2048 | High | Lo 3K – Hi 40M | 3967.516 |
| 2048 | High | Lo 10K – Hi 40M | 3471.380 |
| 8192 | High | Lo 10K – Hi 20M | 38104.41 |
| 8192 | High | Lo 10K – Hi 40M | 30466.69 |
Depth – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 103.9688 |
| 2048 | High | Lo 10K – Hi 20M | 265.5078 |
| 2048 | High | Lo 3K – Hi 40M | 108.2969 |
| 2048 | High | Lo 10K – Hi 40M | 286.406 |
| 8192 | High | Lo 10K – Hi 20M | 765.7715 |
| 8192 | High | Lo 10K – Hi 40M | 1042.068 |
Depth – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 85.40625 |
| 2048 | High | Lo 10K – Hi 20M | 249.6484 |
| 2048 | High | Lo 3K – Hi 40M | 91.46875 |
| 2048 | High | Lo 10K – Hi 40M | 269.6382 |
| 8192 | High | Lo 10K – Hi 20M | 477.8379 |
| 8192 | High | Lo 10K – Hi 40M | 676.6758 |
Normal in Model Space – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 103.1406 |
| 2048 | High | Lo 10K – Hi 20M | 108.0781 |
| 2048 | High | Lo 3K – Hi 40M | 265.5078 |
| 2048 | High | Lo 10K – Hi 40M | 286.7949 |
| 8192 | High | Lo 10K – Hi 20M | 755.7539 |
| 8192 | High | Lo 10K – Hi 40M | 1002.82 |
Normal in Model Space – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 109.7188 |
| 2048 | High | Lo 10K – Hi 20M | 113.2344 |
| 2048 | High | Lo 3K – Hi 40M | 249.6484 |
| 2048 | High | Lo 10K – Hi 40M | 286.6218 |
| 8192 | High | Lo 10K – Hi 20M | 870.584 |
| 8192 | High | Lo 10K – Hi 40M | 1050.584 |
Albedo – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 104.2656 |
| 2048 | High | Lo 10K – Hi 20M | 108.0781 |
| 2048 | High | Lo 3K – Hi 40M | 266.2188 |
| 2048 | High | Lo 10K – Hi 40M | 280.749 |
| 8192 | High | Lo 10K – Hi 20M | 758.334 |
| 8192 | High | Lo 10K – Hi 40M | 970.7422 |
Albedo – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 115.5469 |
| 2048 | High | Lo 10K – Hi 20M | 113.2344 |
| 2048 | High | Lo 3K – Hi 40M | 270.9531 |
| 2048 | High | Lo 10K – Hi 40M | 278.395 |
| 8192 | High | Lo 10K – Hi 20M | 919.1152 |
| 8192 | High | Lo 10K – Hi 40M | 1117.148 |
Material Tags – Compute Depths
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 105.6875 |
| 2048 | High | Lo 10K – Hi 20M | 108.9844 |
| 2048 | High | Lo 3K – Hi 40M | 263.875 |
| 2048 | High | Lo 10K – Hi 40M | 286.6411 |
| 8192 | High | Lo 10K – Hi 20M | 750.6465 |
| 8192 | High | Lo 10K – Hi 40M | 1037.881 |
Material Tags – Generate Maps
| Resolution | Quality | # Polygons | Time (seconds) |
|---|---|---|---|
| 2048 | High | Lo 3K – Hi 20M | 97.89063 |
| 2048 | High | Lo 10K – Hi 20M | 98.8125 |
| 2048 | High | Lo 3K – Hi 40M | 252.2188 |
| 2048 | High | Lo 10K – Hi 40M | 263.2168 |
| 8192 | High | Lo 10K – Hi 20M | 661.8945 |
| 8192 | High | Lo 10K – Hi 40M | 861.0215 |

