Improving texture bakes with smoke domains

I am trying to bake my smoke simulation into a texture of a low-poly mesh, built around my smoke domain. And for some reason the final bake is not following conventional bake rules, just see for yourself:

Instead of smoke pixels being smoothly spread across the entire texture, I get these four distinct quadrants. Is there any way to tell the renderer to do things properly?

Say, how you did you do the baking to get this result?

What you want is to bake such that the rays are all projected inward onto the axis of the cylinder (z-axis)? Then I believe it is not what you need to make the smoke appear from a texture on the cylinder. Wouldn’t you need a plane which auto-rotates to face the camera instead of the cylinder?

The bake is done the traditional way: selected to active.

Here is the general idea: I want to make a smoke simulation and then build a mesh around it, animate the mesh to follow the smoke and finally bake a number of smoke snapshots onto a mesh. The standard high-poly to low-poly approach only with the smoke as a high-poly model.

I’ve played with the bake for a while and noticed that the problem lies in the domain: for some reason blender treats it’s smoke like a cube (represented either as the domain cube or as the inner domain cube, that follows the smoke), that has a smoke texture assigned to its sides. As if it’s a TV screen. If I shrink my cone mesh so that it is above the smoke, but below the domains: nothing gets baked.

Ah, now I got it. You need to build a volume shader then, that gives you the distance to the smoke ‘surface’. Might indeed work with combining volume absorption with emission.

Somehow I couldn’t reproduce the correct baking, but yes, it maps it as a cube. I believe, though, if you make the mesh of the domain object a cylinder, the mapping should be as you want it.

“You need to build a volume shader then, that gives you the distance to the smoke ‘surface’”

I would love if you could point me in the right direction about how to do it. The thing is, the only way I made baking possible is through Cycles’ “Combined” bake and with ALL checkboxes checked (uncheck one and nothing renders). Moreover, I need the color of the fog, not the distance - like in the screenshot.

“if you make the mesh of the domain object a cylinder, the mapping should be as you want it”

This is impossible - if you try modifying the domain, it remains a cube, only gets larger to encompass the “model” you’ve done.

What might work is to color-code the distance to a emission shader, and only have it emit around a certain density. Where the density is higher use a strong volume absorption shader.

For the above I was referring to this:

To create that mesh, you need the distance, no?

Baking the color/appearance would be a separate pass. Not sure what should be baked here, though. I have doubts that baking combined (with the current shader) projected radially inwards can produce a useful result. After all the appearence depends on the view direction.

Yes, I know. The sim domain stays a cube, but the projection for baking should change.

Nope, does not help - tried it just now.

Nice hint, never though about it, and I now see how it can be done, but I have another limitation this approach will not meet: the mesh must be animated with morphs and follow the smoke. That is why I planned to make the meshes manually.

Overall, there is nothing so far that can help me overcome the TV screen issue, so I plan on trying to bake smoke with other software.

Can I see the blend file? This way it might be easier to make progress.

SmokeToMesh.blend (609.6 KB)

Simulate some smoke, select the smoke domain, then shift-select the cone mesh and click “Bake” - everything is set up for the bake.

Say, which version of Blender did you use for this? I tried 2.79, 2.80, 2.82 and each one produced something differently weird. None got the result above. Also I had to disable visibility of the ‘Low’ mesh, as otherwise no light would reach the smoke and thus the bake were completely black.

Example result:


I did it in 2.78. I just tried 2.79 and blender crashes every time I try. I tried 2.8 and it just bakes mostly same colored squares. But even then, the TV screen effect is quite clear:

I plan on trying to bake the same stuff in Houdini.

Hmm, okay, seems there have been changes between versions, but apparently none works as it should. Don’t have 2.78 available, so cannot check. Looks like, then, I’m out of ideas also.