Voxel_FastConverter is absent in OCC 7.4

Hello Team,
It looks like FastConverter for Voxels is not distributed with version 7.4 of OCC.
What library I could use for generating voxels from shapes ? I found some vtkVoxel library. Is that what I am searching for ?

Thanks.
With respects, Eugene.

Eugene Zaliznyak's picture

Starting from version 7.0 TKVoxel library is dropped.

From release note of Open CASCADE 7.0 :

"Summary: Drop TKVoxel toolkit.
All functionality related to voxels and provided by TKVoxel toolkit has been removed as
obsolete by design and data structure definitions. A similar functionality can be provided
by the algorithms based on Volume Rendering."

What is exact library name of "Volume Rendering" ?

Kirill Gavrilov's picture

Volume Renderer is a component for rendering CT scans and similar voxel data:
https://www.opencascade.com/content/volume-rendering-3d-vizualization-ma...

Eugene Zaliznyak's picture

Okey, thank you. But for programming this infirmation is useless, sorry.

Kirill Gavrilov's picture

Well, I didn't meant to answer the whole question - only the part related to "What is exact library name of "Volume Rendering" ;).

I'm not familiar to vtkVoxel, so cannot say how to use it.

Making voxels from shapes (basically - from triangulation) is a one question, but more important question is what you will do with these voxels? This question would define what kind of voxelization you need - binary voxels, SDF (signed distance field), mapping some quantities to voxels (FEA/FEM), etc.

Concerning removed component from OCCT - it was focused on visualization of voxel data using a legacy (not very fast and flexible) approach, and in addition to this it defined some data structures as well as a voxelization of triangulated shapes. You still can take this component from previous version of OCCT and use it in the project, if you like - although I don't know if it is of any use for your particular task.

Eugene Zaliznyak's picture

Thanks a lot for an answer.
My target is to reduce geometry weight. Of course, first approach is simplify the triangulation, but the second approach is to substitute set of very small geometry pieces of geometry by, for example, plane. I see the way to achieve it - the voxelisation. Reduce "resolution" of geometry.

Kirill Gavrilov's picture

Do you mean you would like to voxelize a geometry and then reconstruct it back to triangles using algorithms like Marching Cubes, or you can use voxels directly somehow?

Eugene Zaliznyak's picture

Reconstructing somehow to get union triangulation or approximation of union.
I will not use voxelisation result as final.

Thanks a lot.

With respects, Eugene.

Kirill Gavrilov's picture

I'm curious, which types of mesh simplifications you have already tried.
In VTK there are vtkDecimatePro, vtkQuadricDecimation and vtkQuadricClustering.
The latter one is, by the way, does clustering, which has an effect close to voxelization.

Eugene Zaliznyak's picture

Hello, sorry, I do not know your name.
Thank you for your help.

I will try to explain my why do I condsider the Voxelisation.

You proposed me vtkQuadricClustering, but I see from description - it makes only remesh. So, it cannot unite separate shapes, but can only remesh every shape from set of shapes. My way is not simply remeshing, but unite small geometries to some big an less detailed geometry.

With respects, Eugene.

Eugene Zaliznyak's picture

Hello Team,
Lets close the topic.
I tried to use voxelisation from VTK library, but as for this library is designed in a strange way.
So I implemented my own voxelisation library.

Thank to all, who answered me here!

With respects, Eugene.