Start typing to search this publication.
stellaachenbach logo stellaachenbach
Open menu
stellaachenbach logo

Subscribe to stellaachenbach

Get new posts delivered straight to your inbox.

Resources | ComfyUI vs Substance for 3D Textures

When to use which in a one on one comparison

Stella Achenbach avatar Stella Achenbach
Cover image for Resources | ComfyUI vs Substance for 3D Textures

Did you ever run into this situation where you just needed a quick PBR texture to finish your scene? A background mosaic, a piece of simple concrete, but it is not ordinary enough to just download from an online library? Well, I have encountered that exact situation too many times to keep counting.

But Ubisoft heard us, the 3D generalists, and delivered an open-source, free alternative pipeline. A few months ago, the game company co-announced with ComfyUI (open-source and locally run AI) the release of a model specifically trained to produce PBR textures. Its name: CHORD.


Why Local Pipelines Should Matter to You

AI is everywhere these days, and it feels like new services pop up like mushrooms via social media ads. But here is a stark truth and a serious reminder that whatever you currently generate with centralized AI models (Midjourney, ChatGPT, Gemini, etc.), the IP does not belong to you. That means "selling" these images to your clients does not make them sole owners, nor are you. In addition, and to a total degree of absurdity, when using those aforementioned centralized cloud services, you are paying to train their future systems with your unique prompts, uploaded references, and design intentions. Meaning you pay to be exploited...

By taking a bit of extra time to run ComfyUI and CHORD (or other models) locally on your own hardware, you get a completely air-gapped system. Here is why that should matter for a professional workflow:

  • Zero Leakage of Private Assets
    If you are concepting fabrics or environmental textures for a client under NDA (non-disclosure agreement), uploading proprietary sketches or mood boards to cloud APIs is a breach waiting to happen. Local generation with ComfyUI or when text-based with OMLX (thank you, Chuck) keeps everything on your own physical drives.

  • Artistic Ownership
    Your generation data, failed outputs, and structural guides (like the image prompts you use to guide the tiled patterns) remain purely yours. You aren't leaving a digital trail of your custom workflow on a corporate server. If you add some image influences of your own to it, like drawings or sketches, IP will be guaranteed to be yours.

  • Consistent, Zero-Cost Iteration
    Centralized engines rely on subscription credits and pricing changes. Running locally means once the models are downloaded, your custom texture pipeline is genuinely free to use, run, and experiment with forever. No cost aside from some energy to your computer.

Now, let's jump into how this specific workflow for generating seamless images and putting them out as 3D texture sets works.


How It Works

I compiled three workflows that you can download from the link at the bottom of this article.

  1. The first one is about generating a seamless texture by using only a text prompt. The two nodes marked in purple are the two you will need to install through the node manager. The first one is a conditioning node; the second is a VAE node for the correct decoding of seamless/tileable textures. Prompt engineering here is key; you want to be very clear and precise with your wording, ideally building up the texture with each comma you set.

  2. The second workflow provides slightly more control by allowing you to use both a text and an image prompt to more strongly guide the resulting image. In my case, I wanted to create a checkered mosaic pattern, but everything that came out was an organic arrangement of ceramic tiles. The additional nodes (marked in blue) enabled me to guide placement and ultimately achieve the desired result:

  3. The third workflow is the actual CHORD PBR texture generation workflow. I didn't change anything here, but if your PC is strong enough, you might want to consider attaching a simple upscaling workflow for a higher resolution of the different texture maps: