GVRAmbientOcclusion

MacroModule
author MeVis Medical Solutions AG
package MeVisLab/Standard
definition GVRAmbientOcclusion.def
keywords shadow

Purpose

The GVRAmbientOcclusion module adds support for local ambient occlusion to the SoGVRVolumeRenderer.

It generates a 3D ambient occlusion volume and requires the SoGVRRayCastSettings module to be used, since the ambient occlusion generation requires access to the entire volume.

The ambient occlusion volume is regenerated whenever the LUTs of the GVR change, but you can trigger a manual update using the Regenerate field.

Usage

See the example network for a typical usage.

Details

A segmented brain rendered with ambient occlusion (without diffuse/specular light):

../../../Modules/Macros/GVR/mhelp/Images/AmbientOcclusion.png

Input Fields

nodeIn0

name: nodeIn0, type: SoNode

Output Fields

nodeOut0

name: nodeOut0, type: SoNode

Parameter Fields

Field Index

Blend Factor: Float
Clip Plane Fade: Float
Directions: Enum
Gradient Weight: Float
Offset: Float
Regenerate: Trigger
Steps: Integer
Use Half Resolution: Bool

Visible Fields

Use Half Resolution

name: useHalfResolution, type: Bool, default: FALSE

If checked, the module uses half the resolution for the ambient occlusion volume, which is a trade-off between quality and memory consumption/update speed.

Offset

name: offset, type: Float, default: 2, minimum: 1

Sets the initial offset of each ambient occlusion ray from the center of each voxel.

Steps

name: steps, type: Integer, default: 16, minimum: 1

Sets the number of sample steps for each ray. A larger value generates occlusion from voxels that are farther away.

Directions

name: directions, type: Enum, default: 18

Defines the number of ray directions to sample for each voxel.

Values:

Title Name
6 6
18 18

Gradient Weight

name: gradientWeight, type: Float, default: 0.5, minimum: 0, maximum: 1

Sets a factor that weights the occlusion contribution of each ray by the dot product of the gradient and the direction.

A value of 1.0 means full dependence on the gradient, and a value of 0.0 means no gradient influence.

Implementation::
float weight = mix(1., max(0, dot(-gradient, ray_direction)), ambientOcclusionGradientWeight);

Clip Plane Fade

name: clipPlaneFade, type: Float, default: 10, minimum: 0

Sets a factor that fades the ambient occlusion up to the given distance (in millimeters) to all clip planes.

Blend Factor

name: blendFactor, type: Float, default: 1, minimum: 0, maximum: 1

Sets the blend factor that is used to apply the AO term to the final image (1.0 means full AO, 0.0 means no AO).

Regenerate

name: regenerate, type: Trigger

When pressed, the ambient occlusion volumes are regenerated.