star-vx

Structuring voxels for ray-tracing
git clone git://git.meso-star.fr/star-vx.git
Log | Files | Refs | README | LICENSE

README.md (3034B)


      1 # Star-VoXel
      2 
      3 Star-VX is a C library designed to manage volume elements, called
      4 voxels, structured as a set of axis-aligned cuboids. This library knows
      5 nothing about the volume data it manages: it only provides data
      6 structures that partition the voxels according to the user's criteria.
      7 It also implements efficient operators for indexing voxels in space
      8 partitioning data structures or for accessing them by ray tracing.
      9 
     10 Star-VX offers 2 hierarchical data structures: the *octree* and the
     11 *binary tree*. The former is used to structure regular 3D data, while
     12 the latter is used for 1D data. Star-VX builds the required data
     13 structure following a bottom-up strategy: the user submits the data set
     14 to be partitioned, as well as the policy used to define when voxels can
     15 be merged, and the merge operator itself. The way in which data is
     16 accessed by *indexing* or *ray tracing* can also be finely tuned by the
     17 user: in addition to the position of the probe or the radius to be
     18 traced, he can provide callbacks to stop traversal at a hierarchical
     19 level that is not a leaf, perform calculations at the traversed leaf
     20 level, reject leaves, and so on. The host application thus has total
     21 control over the traversal of the data structure, while its in-memory
     22 representation and accessors are still entirely managed internally by
     23 Star-VX.
     24 
     25 ## Requirements
     26 
     27 - C compiler
     28 - POSIX make
     29 - pkg-config
     30 - [RSys](https://gitlab.com/vaplv/rsys)
     31 
     32 ## Installation
     33 
     34 Edit config.mk as needed, then run:
     35 
     36     make clean install
     37 
     38 ## Release notes
     39 
     40 ### Version 0.3.1
     41 
     42 - Fix ray-tracing inaccuracy in a binary tree when the ray direction is
     43   approximately aligned with the infinite dimension.
     44 - Improve the build system.
     45   Simplify it by doing everything in one place (the Makefile).
     46   Add macros to control installation sub-directories.
     47 
     48 ### Version 0.3
     49 
     50 - Replace CMake by Makefile as build system.
     51 - Update compiler and linker flags to increase the security and
     52   robustness of generated binaries.
     53 - Provide a pkg-config file to link the library as an external
     54   dependency.
     55 - Fix compilation warnings
     56 
     57 ### Version 0.2.1
     58 
     59 Sets the CMake minimum version to 3.1: since CMake 3.20, version 2.8 has
     60 become obsolete.
     61 
     62 ### Version 0.2
     63 
     64 - Update the profile of the functors invoked on node traversal: the ray
     65   origin, direction and range are now provided as input arguments.
     66 - Force the invocation of the challenge and filter functors on the root
     67   node.  Previously these functors were not called on the root;the
     68   challenging and filtering was starting on its children.
     69 
     70 ### Version 0.1
     71 
     72 - Add the `svx_tree_write` and the `svx_tree_create_from_stream`
     73   functions used to serialize and de-serialize the tree data structure,
     74   respectively.
     75 
     76 ## License
     77 
     78 Copyright (C) 2018, 2020-2025 |Méso|Star> (contact@meso-star.com)  
     79 Copyright (C) 2018 Université Paul Sabatier
     80 
     81 Star-VX is free software released under the GPL v3+ license: GNU GPL
     82 version 3 or later. You are welcome to redistribute it under certain
     83 conditions; refer to the COPYING file for details.