Bake Wrangler - Node based baking tool set

Bake Wrangler is a nodes based extension and replacement for the inbuilt baking system. The aim is to provide a highly configurable but easy to use baking system with all the extra features you really wish you had.

Gumroad: gum.co/bake-wrangler
Blendermarket: blendermarket.com/products/bake-wrangler
Support development by donating at: ko-fi.com/bakewrangler

User Documentation: bake-wranger.readthedocs.io
Video Tutorial: YouTube Tutorial (by @amdj1) (slightly out of date now, but still relevant)

Current Features:

  • Easy to use node system
  • Background batch baking
  • Supports all the blender internal bake passes and multires
  • Exposes separate Color, R/G/B and Value channels of a pass
  • Allows assigning pass output to individual output channels (R/G/B/A)
  • Masking feature allows layering of bakes and combining with external processes
  • Objects are isolated within a pass preventing unwanted interference
  • All standard image formats, color-spaces and bit depths are available
  • Additional bake passes for better PBR and external engine support:
    • Albedo
    • Smoothness
    • Metallic
    • Specular
    • Alpha
    • Curvature
    • Cavity

Release 1.0 changes:

  • Improved script-ability (bake_pass operator can now be called without setting any context, simply passing the “tree” and “node” values).
  • Temporary .blend files are now deleted after bake completes (unless Debug is enbaled in prefs).
  • Batch Bake nodes can accept a user defined custom property, which will be incremented by 1 each time an input is processed (use for updating drivers, etc during a bake).
52 Likes

When I send a file as fbx to another program are the baked textures sent along with the fbx? When I open the fbx in the other program what do I do to for example to apply the wood floor texture to the floor or a ceiling beam at a 22 degree angle. Thanks

That is more a question about the fbx exporter and importing into what ever the thing your using is. But generally fbx files don’t have image textures in them, they do usually have the name of the material that an object has.

I can’t really say how you would apply the texture in an unknown other program? Usually they have some option to pick images to use for what ever shading system it has…

There is a place to attach the image file. In the baking process is there a folder where the baked textures can be accessed and attached in the other program/ Thanks

Just discovered your addon today !
That’s a really nice work ! Got a feature idea. Could it be possible to create a High Poly Meshes node directly from the selected objects ?

Yes, that should be fairly straight forward…

I noticed all textures appear to be saved in Linear color space. While that’s fantastic for most textures, game engines expect base color input to be in sRGB. Perhaps adding a color space selector to the image output would be the best solution?

Otherwise, this is fantastic in my first tests!

Feature req: File name template options? So for example Tank_Normal.png and Tank_ORM.png (the latter would RGB mapped to Occlusion/Rough/Metallic for glTF format).

So something like
%O = mesh_object.name
so we could do %O_Normal.png and just use the same node setup for consistency.

1 Like

Yes, there is still a bit of work to be done on the image output stuff. Unfortunately the format settings aren’t easy to manipulate from an add-on (afaik you can’t make your own ImageFormatSettings data blocks). But I intend to provide a lot more control over the output in the next version!

As to additional features, there are a number that people want. But it’s difficult for me to add them without support from donations/sales.

Is the price in Australian dollars or something else on Gumroad? They don’t detail what “A$” means which put me off from buying it(because I didn’t know what the conversion is) the first time I saw it.

Yes it’s AUD. I didn’t mean to use that, but you can’t seem to change it without making a completely new product…

Ive been testing this out a bit. Really awesome so far. I like the idea of having mutliple bake groups all slotted with nodes into a Bake Pass. Really unique and useful.

The one issue I run into pretty consistently is that I get a “bake failed” error for seemingly no reason when I start to dupe or change around the “Output Image Path” node. Usually deleting and remaking seems to work but I’m not sure if there’s anything else going on in the backround.

Really looking forward to watching this develop. I still use Marmoset to bake for production assets but it would be nice to switch over to the Bevel node and this plug-in for non-first person assets.

I’m glad you like it!

If you can save some of the log files when the bake fails I will look into what is causing your issue. (The log location is displayed in the system console, on windows with default settings it will be in the usual ‘AppData/Local/Temp/blenderxxxx/’)

Oh awesome, I’ll try to find it and grab it next time it fails.

Thanks

I really like this - it’s a huge timesaver, but I have one question.

Is it capable of handling Mix Nodes?

I often encapsulate the Principled BSDF node in a Node Group that allows me to redirect any input to an Emission shader, so that I can bake all the different maps (Base Color, Metalness, Roughness, Clearcoat etc.) using Emit baking in Blender. The good thing is that I can use Mix Shader nodes to blend different “submaterials” together and it all gets baked properly.

BakeWrangler gave me a warning that there’s no Principled BSDF node in the end of the Material node tree - (but it’s baking something still, we’ll see how it goes).

Would it be possible to handle the materials using Mix Shader nodes?

Hi unfa, I also used to do a similar thing where my Principled would be in a group. The idea when creating Bake Wrangler was to avoid the need to do that, since I found it annoying to have to keep changing the outputs.

So the current three PBR targets (albedo, metalness, alpha) examine the texture node set up and try to find those inputs on the Principled BSDF. Probably people might want other targets, but those were the main ones I used.

How are you imagining it handles the Mix Shaders? Do you have multiple Principled BSDFs connected to mix shaders? It could probably handle that, I just need a way to determine what values contribute to the map and how they should be mixed.

Can you post an example texture set up?

1 Like

@netherby
Hi ! I know you can’t work full time on your addon (i’m in the same situation, my time is totally consumed by work and school), but a while ago, i tried to bake a model containing curves, and realized it didn’t bake curves.
I took a look into your code to see if i could fix it, (just five minutes ago), and i did it.
I just replaced you value_prop_filter function in your BakeWrangler_Socket_HighPolyMesh class by this:

    def value_prop_filter(self, object):
        return object.type in ['MESH', 'CURVE']

And it works like a charm :wink:

I wish i could help you financially, but it’s a bit hard for me. However i could maybe help you on some features if you wish.
I think this addon should be the way to bake in blender. From all the methods i’ve tried, this is by far the most convenient (though some things could be automated IMO).

Keep it up :smiley:

Edit:
By the way, i ran into a weird issue while baking today.
I modeled a router with Hops and KitOps, but though every parts were to be baked were inside the high poly node and them being all view/render enabled, only 3 of them were taken into account during the bake.

I’m back again.
I think i found the issue with my bake. I seems boolean modifier is not taken into account during the baking process (Modifiers not applied during export ?).

I kept experimenting with the code, and if you are interested i added a Collection node plugable in HighPolys sockets. Also added a property for each Collection input for recursive search of Renderable (mesh or curves not hidden for render to be precise) objects. Search Filter doesn’t show empty collections to make it easier for the user to browse collections.

Hi Darknoodles.

I hadn’t really considered that people might want to bake a curve…

All modifiers that are enabled for rendering get applied before a bake pass is done (there were some problems with modifiers in some cases, so the easiest solution was to just apply them always). Are your booleans enabled for render? They should get applied…

I also planned on having a more verbose debugging mode that could be enabled from options, though there are logs made for every bake which would show any actual errors that get thrown.

If you want to donate code that is fine! :slight_smile: I was planning on having collections select-able, I thought I might just make it part of the high poly meshs node… Do you want to get added to the github project or something so you can submit code?

Yeah, they are render enabled.
I searched a bit more, and it seems to only happen with boolean.
That’s weird, because when i open the passes in the temp folder, the scene looks ok.

Sure ! I can send you the code in PM in the first time if you want, but i’ll be glad to join the Git :smiley:

Hello everyone,
I tried the addon yesterday and I found it quite useful.
Node approach to baking and informative logs help a lot. Hope you’ll find the motivation to continue working on this :slight_smile:
There are a few things I’d like to ask about the addon.
-If I first bake to a 1024x1024 image and then without deleting the file bake a 2048x2048 it ends up with an error. I think it is because addon is trying to add an Alpha channel to a different sized texture. This happened with RGBA targa file. Not a big issue since I can just delete the previous bake file.
-I was testing High to Low mesh. I have multiple high poly meshes. Low poly is just a joined mesh of all high poly meshes with a single UV and one material. It is like baking down multi materials into one material workflow. In High meshes, Albedo textures are set as “SRGB” Color Space. In Bake node Editor, I set the Output Color Space as “SRGB” as well. But after baking if I imported the baked albedo texture and set it to “SRB”, colors don’t match (with high poly materials) but If I set it to “Linear” then the colors match. Is this a bug or am I doing something wrong? Would it be possible to transfer multiple albedo texture to a new UV without effecting its colors?
-What is “Mask” in “Bake Pass” node used for ? I read the tool-tip but still couldn’t understand.

Thanks and have a great week.