Adding Ambient Occlusion to light-map-maker node

I would like it if World Machine had ambient occlusion built into the light-map-maker node, or as a separate node, since currently making AO within WM requires very long build times, and it requires many light-map-makers to build. If WM had AO within, it would save quite a lot of time and be useful for things such as rendering.

That’s pretty easy to do in the target rendering apps, isn’t it? For example, in blender you literally just have to add an ambient occlusion node in the shader.

World machine is a terrain modelling app. A crevice map would be more useful, which can be further edited into an AO map as well. Otherwise, these things are easier to implement in the final renderer. Or even better, in post.

1 Like

I agree that World Machine’s primary focus is the creation of terrain, but being able to directly have a good render of your terrain without the need to export it would be a massive workflow boost, as it allows for easy and fast sharing of concepts without the need for a 3rd party application but still having a somewhat decent render.

The Light-Map Maker device does a really good job but indeed falls short when coming to AO, which would be nice for small details like rocks, giving that little “umpf” to your render’s realism.

A workaround would be to lower the resolution of the now required Light-Map Maker devices, to save CPU power and RAM.

I do like the idea of being able to calculate an AO map in WM! Most likely as an extension to the Lightmap maker. It can be really handy to calculate with the asset, whether for final results or even just for look development within WM, to get a better sense of what your final results will look like while in WM.

With that said, since AO can often be created in the next stage of your pipeline, it’s tough call whether it makes sense to dedicate effort to creating it in WM when that effort is mostly duplicitous of your render stage…

You can create a crevices/AO-ish map by using the Convexity selector (often with a blurred input) to pick out recessed detail.

1 Like

IMHO not needed. Rendering is better to do in applications meant for rendering. For env art some raytracer.

I wanted to write a quick update here to say that I have a nicely functioning ambient occlusion implementation that will be making an appearance pretty soon in WM.

As expected, you can certainly bake out much nicer lightmaps… as well as have a nice visualization inside of WM.

At lower quality settings, it’s also quite fast.

There’s another major reason why I went to the trouble of adding AO inside of WM. You can think of AO as an “Accessibility Selector”. Especially when you play with the extinction parameters, you can get a lot of really useful mask selection effects: at fine scale, you can select cracks and details. At medium scale, you can select valleys and ridges, etc.

Not 100% sure if it will appear in the next build, but if not, shortly thereafter.

4 Likes

That looks nice! I’m curious to see how it can become useful for masking and such :slight_smile:

One of the useful applications of AO for non-lighting purposes is for climate modelling. An AO map is a good rough proxy for local sunlight availability . In concert with the Wetness Selector, you have two maps that indicate the availability of sun and water, which are the two principal governors of plant growth!

3 Likes

If this is released I might implement this into my colorizer.
Very good work! :smiley:

By the way, what kind of Ambient Occlusion does the current alpha node use?
Would it be:
Screen Space
Horizon Based
or
Voxel Based Ambient Occlusion?

The AO is a “true” AO calculated from the heightfield in world-space. In other words, it integrates a visibility function for each pixel in the heightfield, rather than working in screen-space like something like SSAO would do.