Interactive Occlusion-Free System for Volume Exploration (paper)
The project can be divided into three stages :
- Volume Render (Load raw datasets and raymarching technique)
- Volume Pre-Computation (Material classfication and non-connected segmentation)
- Volume Exploration (Obstruction selection and 2 occision removal modes)
Fork from mlavik1/UnityVolumeRendering
, describe how the volume rendering algorithm works. such as load raw datasets, raymarching technique, transfer functions, and direct volume rendering implementation.
You can see more details on a branch called "Isosurface-Mesh-Non-Connected-Segmentation".
We were inspried by previous research from the paper "Isosurface similarity maps", which identify the most representative structures of material based on information theory.
We implemented information theory to measure isosurface similarity map in Scripts/VolumeObject/VolumeObjectFactory.cs
, by using the SeawispHunter.Maths, a C# library with Unity as Plugins Resources/Maths.dll
and Resources/xunit.assert.dll
to compute entropy, conditional entropy, and mutual information.
In order to automatically identify ranges of iso-values that make up the major structure of the material, we next use a hierarchical clustering algorithm to cluster the isosurfaces of isovalues in Scripts/PyCode_Clustering_Heapmap/Clustering.ipynb
.
We segment the material structure into connected components by using the V-HACD library with Unity as Plugins Resources/VHACD_DLL.dll
and Resources/libvhacd.dll
to merge any triangle meshes as convex solutions.
Then, the approximate convex decomposition meshes that collide with each other are considered as connected structures and combined into the same piece.
You can see more details regarding occlusion removal for interact on a branch called "VolumeVis".
You can see Shaders/SDF.cginc
for the lens placement is definition of Signed distance function(SDF) and Shaders/DirectVolumeRenderingShader.shader
called that function to check insideLens
, if true, we follow the priniple of WYSIWYG to design our obstruction selection function.
We utilize the paper "WYSIWYP: What You See Is What You Pick", a clssic visibility-oriented picking technique has to compute the first and second derivative of the accumulated opacity of the ray to determine the change in the maximum opacity value of the material to determine the selected material. Unlike them, we calculate each material structure's ray-accumulated opacity, visibility (alpha), to determine the most visible material.
-
local digging structure mode (
DiggingWidget
inShaders/DirectVolumeRenderingShader.shader
)This mode removes the obstruction locally and keeps the context around the local region.
-
Global erasing structure mode (
ErasingWidget
inShaders/DirectVolumeRenderingShader.shader
)This mode removes a whole connected material structure when users think that the whole material structure is well explored.
I would like to express my appreciation to the original author, mlavik1,
for releasing the open source and tutorial to volume rendering,
which enabled me to finish my master thesis study on volume rendering visualization.