Nouveau workflow pour skins CS2 !Essayez maintenant
12 min read

AI Texture Generation for Robot Vision Training Data: A Practical Guide to Domain Randomization

TL;DR

Robot-vision AI models are trained to recognize objects regardless of surface appearance using a technique called domain randomization — rendering the same 3D model hundreds of times with different materials (wood, metal, copper, plastic, painted finishes) so the model learns shape and function, not one fixed look. The bottleneck has always been producing those material variants fast enough, at full PBR quality (Albedo, Normal, Roughness, Metallic, AO), without a dedicated 3D art team. TextureFast generates a complete 4K PBR material set on a UV-unwrapped 3D model in roughly 30–120 seconds, from a text description or a reference image — which is what makes building a real texture-randomization pool for synthetic training data practical for a one- or two-person ML team instead of a studio.

What domain randomization is, and why texture is one of its highest-leverage parameters

Domain randomization is the standard technique for closing the "sim-to-real gap" — the well-documented problem where a vision model trained entirely in simulation underperforms once it meets real cameras, real lighting, and real object surfaces. NVIDIA's own Isaac Sim documentation describes it simply: by systematically randomizing parameters like lighting, object texture, pose, and environmental factors inside the simulator, the model is forced to focus on the essential features of the task rather than memorizing one specific rendering.

Texture is not a minor parameter in that mix. In the original NVIDIA CVPR paper that extended domain randomization to real-object detection (Tremblay et al., 2018), removing randomized textures from the objects of interest measurably hurt detection accuracy in the paper's own ablation study — texture randomization sat alongside lighting as one of the most important levers in the whole pipeline.

This shows up constantly in more recent robotics research, too:

  • RoboTwin 2.0 (2026), a bimanual manipulation benchmark, built its own texture library by generating 20,000 AI images from 1,000 LLM-written surface descriptions and human-filtering them down to roughly 11,000 usable background textures — purely to get enough material variety into training.
  • SHOP-VRB2, a household-object manipulation benchmark, explicitly randomizes objects across plastic, metal, glass, rubber, and wood finishes — the exact "same table, different material" pattern that shows up in almost every domain-randomization paper.
  • Industrial bin-picking research consistently flags textureless and reflective metallic parts as one of the hardest unsolved problems in robotic grasping vision, precisely because appearance shifts so dramatically with material and lighting.

In other words, if your object detector or grasp-pose estimator only ever sees one finish of one object, it hasn't actually learned the object. It's learned a photo.

The real bottleneck isn't the 3D model. It's the textures.

Most teams in this space already have what they need geometrically — a CAD export, a scanned mesh, or a downloaded asset. What they don't have is a fast way to put a dozen or a hundred plausible, production-quality material variants on that same mesh. The available options each have a real cost:

  • Manual texturing in Substance Painter — hours of work per variant, and it requires an actual 3D artist on the team. This doesn't scale to "50 materials × 200 object classes."
  • Scanned CC0 texture libraries (think ambientCG, Poly Haven, Quixel Megascans) — free and photoreal, but a fixed catalog. You get whatever's already been scanned, not the specific "oxidized green-patina copper" or "scratched matte powder-coated steel" variant your test matrix actually calls for, and you still have to fit and tile it to your model's UVs by hand.
  • Procedural shader graphs — infinite variation, but they require node-graph/shader expertise that most robotics and ML engineers simply don't have time to learn.
  • Building your own generative pipeline, as the RoboTwin 2.0 team did, with an LLM prompting Stable Diffusion and a human filtering the output. It works — but it took a research team real engineering time to stand up, and what it produced were flat color images, not full PBR material sets with usable normal, roughness, and metallic maps.

This is the gap a fast, prompt-driven, PBR-complete texture generator is built to close.

Step by step: from a 3D model to a domain-randomization-ready texture pool

Start with a UV-unwrapped 3D model. This is already a required step in standard simulation-asset pipelines — NVIDIA's own SimReady documentation notes that CAD-originated assets typically arrive with no clean UVs at all and need to go through a UV-unwrap pass (Rizom, UV Layout, or your DCC of choice) before any texturing can happen. TextureFast assumes this same starting point, so it drops directly into an existing workflow rather than adding a new one.

  1. 1

    Upload the model

    GLB, GLTF, OBJ, and FBX are all supported — GLB is the fastest path since it's a single self-contained binary file.

  2. 2

    Describe the material, or hand it a reference image

    "Brushed stainless steel with light fingerprint smudging," "weathered oak with visible wood grain," "hammered copper with green patina at the edges" — or upload a photo and let prompt expansion fill in the rest.

  3. 3

    Generate the full PBR set in one click

    TextureFast first produces a Base Color/Albedo texture from the description, then extracts the complete material — Albedo, Normal, Height, Roughness, Metallic, and AO — at up to 4K resolution.

  4. 4

    Repeat with a new material description

    Because each generation takes roughly 30–120 seconds, producing 10, 30, or 100 material variants of the same mesh for a randomization pool is a matter of minutes, not a multi-day art-production task.

  5. 5

    Feed the resulting texture set into your randomizer

    Drop the maps into Omniverse Replicator's randomization parameters, Unity Perception's TextureRandomizer/MaterialRandomizer asset lists, or any custom domain-randomization script.

Worked example: one table mesh, five materials, one afternoon

Take the canonical domain-randomization example: a single table mesh that needs to train a detector to recognize "table" regardless of finish.

Material variantPrompt-style description
1Natural oak wood grain, satin finish
2Brushed aluminum, cold industrial finish
3Hammered copper with light green patina
4Matte black powder-coated steel
5White laminate with subtle texture

Five prompts, five PBR-complete generations, each producing Albedo/Normal/Height/Roughness/Metallic/AO maps on the same UV-mapped mesh — done in well under fifteen minutes of active work. Scale that pattern across every object class in a bin-picking, warehouse, or household-object training set, and the texture-sourcing bottleneck that used to require either a 3D artist or a bespoke generative-AI pipeline shrinks to an afternoon task.

How this lines up with Isaac Sim, Omniverse SimReady, and Unity Perception

This isn't a coincidental fit — the output format matches the industry spec closely:

  • NVIDIA's SimReady materials standard requires a PBR Metal-Roughness workflow (Albedo, Roughness, Metallic, Normal maps encouraged) baked at up to 4K resolution, with 1–2K recommended as a baseline for smaller objects. That is the exact map set and resolution ceiling TextureFast outputs.
  • GLB, GLTF, OBJ, and FBX — the formats TextureFast accepts as input — are also the standard intermediate formats that CAD-to-USD and SimReady conversion tooling expects on the way into Omniverse.
  • Unity Perception's TextureRandomizer is explicitly built to sample from a developer-supplied list of texture assets. It provides the randomization mechanism, not the textures — sourcing that list is left entirely to the developer, which is exactly the step this workflow accelerates.

In practice, that means a TextureFast-generated material set can go straight from download into a USD/MDL conversion step or directly into a Unity/Blender/Unreal-based synthetic-data pipeline without reformatting.

A privacy note that matters more in this industry than most

Unreleased robot hardware, unannounced consumer products, and proprietary industrial parts are everywhere in this field, and a lot of generative AI tooling is unclear (at best) about what happens to uploaded geometry. TextureFast's stated approach — no training on uploaded assets, no asset exposure, NDA-safe, fully private generation — is a genuinely meaningful differentiator for any team working with geometry that can't leak, not just a checkbox feature.

Comparison: how the options actually stack up

Manual (Substance Painter)CC0 scanned libraryProcedural shader graphDIY generative pipelineTextureFast
Time per material variantHoursMinutes (if a match exists)Minutes, after setupMinutes, after weeks of pipeline build~30–120 seconds
Arbitrary/specific materials (not just what's already scanned)Yes, with skillNo — fixed catalogYes, with skillYesYes
Full PBR map set out of the boxYesYesYesOften no (flat color only)Yes (Albedo/Normal/Height/Roughness/Metallic/AO)
Required skill levelTrained 3D artistLowShader/node-graph expertiseML/pipeline engineeringDescribe it in plain language
IP/privacy guaranteesDepends on toolingN/A (public assets)Depends on toolingDepends on setup100% private, no training on assets

Pricing in the context of a real texture-randomization workload

A small research team running domain randomization across, say, 15–20 object classes with 10–20 material variants each is generating somewhere in the 150–400 textured-model range — comfortably inside TextureFast's Starter-to-Pro tier volumes. A team building a larger SimReady asset catalog across hundreds of SKUs is closer to the Business tier's ~2,461 textured models/month. Either way, the per-asset economics compare favorably against either an artist's hourly rate or the engineering time of standing up a custom generative pipeline.

Frequently asked questions

Does texture randomization actually improve robot vision model accuracy, or is it just for realism?
It's measurable, not cosmetic. The original NVIDIA domain-randomization paper for real-object detection found that removing randomized object textures from the training pipeline reduced detection accuracy in its own ablation tests — texture variation is one of the higher-leverage randomization parameters, not a nice-to-have.
What texture maps does NVIDIA Isaac Sim / Omniverse SimReady actually require?
The SimReady materials specification calls for a PBR Metal-Roughness workflow — Albedo, Roughness, Metallic, and Normal maps are encouraged — baked at up to 4K, with 1–2K recommended for smaller or distant objects. Height and Ambient Occlusion maps further improve surface fidelity but aren't strictly mandatory.
Can AI-generated textures be used for domain randomization, or do they need to be photogrammetry-scanned?
Both real-scanned (e.g., ambientCG) and AI-generated textures are used in published domain-randomization research — what matters is variety and physical plausibility, not the production method. Some studies (Tobin et al., Tremblay et al.) show that even deliberately non-photorealistic random textures train highly effective detectors, which is why both photoreal and stylized texture styles have a place in a randomization pool.
How many texture variants do I actually need per object for sim-to-real transfer?
There's no universal number — it depends on how much visual diversity the deployment environment has — but published pipelines range from a handful of curated materials per object up to libraries in the thousands (RoboTwin 2.0's 11,000-texture background library is the high end). Starting with 10–30 well-chosen, materially-distinct variants per object class is a reasonable baseline before scaling up.
What's the difference between a CC0 texture library and an AI texture generator for this use case?
A CC0 library (ambientCG, Poly Haven, Quixel Megascans) gives you whatever has already been scanned — a fixed catalog. An AI texture generator like TextureFast produces the specific material described in a prompt or shown in a reference image, mapped directly to your model's own UVs, which matters when your test plan calls for a precise variant that may not exist pre-scanned.
Does TextureFast work with Unity, Unreal, or Omniverse?
Yes — TextureFast exports standard PNG PBR maps that drop into Unity, Unreal Engine, Blender, or any USD/Omniverse-based pipeline once converted, and accepts GLB, GLTF, OBJ, and FBX models as input, which are the same intermediate formats those pipelines already use.

Try it on your own asset

Upload a UV-unwrapped model and get a full PBR set in under two minutes

Describe the material you need — privately, with no training on your assets.