Dynamic AO node



I added a Dynamic AO node in the x32 DP Kit,

-Occlusion is calculated per point, by a geometric preprocess based
on point normal and area of surrounding polygons, occlusion is collected
for each receiver point from all other emitter points without calling
a raytrace function.

-If "After Deformation" option is not checked, this occlusion is computed
at the first rendered frame only and cached for every other rendered frames,
it is available for various and different camera points of view.

-This occlusion is computed only for a given surfaced object and doesn't
interact with other surfaced objects.

-With Multi-Passes point-emitters occluded by previous pass(es) give less
occlusion to point-receivers.


-Note in the above sample that floor plane needs to be tesselated and
it needs to belong to the character object to get the occlusion-shadow,
this object has been subpatched (wireframe here, is the cage-object).

-Huge geometry could take very long time to compute the AO
-Also same issues than other nodes using this kind of preprocess.

A test with a reduced Jotero Model 136 000 polys 68 000 points,
from right to left,
-Normal render AA5 10s.
-LW Occlusion 27 samples, 3m 30s.
-Dynamic AO 1 pass, 3m 30s (preprocess of occlusion mainly,
but cached, then 17s).


The x32 version is here,



A DynamicAO Dump file can now be saved after calculation,
use the Modeler DynamicAO_Loader Lscript to load the occlusion
solution as a Weight Map,
in the exported (transformed if subpatched) lwo object file from Layout.


Lscript is included the "DP_Kit_Doc&Samples"
or download it here,
View attachment DynamicAO_Loader.zip



New member
Wow cool! Shame there's not really a way to put that data live to the mesh, without the added steps. Hopefully Core will support functionality like that!

The only downside to this kind of per-point occlusion is you get issues if you don't have enough density of geometry, which is fine for soft occlusion of subD cages, but on hard-modeling would cause issues!

Cool feature though!


A few fixes,
exported dump file didn't take user path and filename,
frame number incrementation is now added to filename.

Top Bottom