star-3d

Surface structuring for efficient 3D geometric queries
git clone git://git.meso-star.fr/star-3d.git
Log | Files | Refs | README | LICENSE

commit 0fa9ea5109151c0e813e2f10b592012ac6fd29da
parent db3853da225d5e881b2c6d371aec7b4b5d61b322
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed,  5 Jul 2023 12:25:12 +0200

Rewrite the README file to make it less bloated

Small rewrite of the preview section. Clean up the requirements section
and completely rewrite the installation section regarding using a POSIX
Makefile and no longer CMake as the first build system. Remove the
quickstart section which was actually useless.

Diffstat:
MREADME.md | 152++++++++++++++++++-------------------------------------------------------------
1 file changed, 34 insertions(+), 118 deletions(-)

diff --git a/README.md b/README.md @@ -1,122 +1,36 @@ # Star 3D -## Overview - -Star-3D is a C library that *manages surfacic geometries* and provides -operators to access them efficiently by *uniform sampling*, *ray-tracing* or a -*closest point query*. To ensure the efficiency of these operators, Star-3D -internally relies on [Intel(R) Rendering -Framework](https://software.intel.com/en-us/rendering-framework): -[Embree](https://embree.github.io) that provides highly optimized acceleration -structures as well as traversal kernels for a wide range of data workloads. The -main targets of Star-3D are thus programmers that want to efficiently handle -*complex and arbitrary 3D content.* +Star-3D is a C library that manages *surface geometries* and implements operators +to access them efficiently such as uniform sampling, ray tracing or a closest +point query. The main concept exposed in Star-3D is the *shape*. A shape represents a 3D -object such as a *triangular mesh* or a *sphere*, whose data are user defined -and can be updated at any time. A virtual environment is built by attaching one -or several shapes to a *scene*. A scene can be *instantiated* into one or -several shapes that can be then attached to a scene as any regular shapes. Each -instance has its own position and orientation while the instantiated geometry -is stored once even though it is instantiated several times. This feature can -thus be used to create extremely complex environment with a low memory -footprint. - -To query the scene data one has to create a *view* of the scene. On its -creation, the view internally builds data structures required by the -aforementioned access operators. These data structures are built from the scene -geometry as defined at the moment of the view creation; a view is thus -insensitive to scene updates following its creation. This means that several -views can be used to register different states of the same scene, giving to the -caller a great flexibility to manage the scene data. - -Star-3D is currently used in several projects dealing with complex arbitrary 3D -contents, ranging from graphics applications and thermal simulations to -electromagnetism. Please refer to these projects for informations on their -purpose. - - * [High-Tune: RenDeRer](https://gitlab.com/meso-star/htrdr.git) - * [Stardis-Solver](https://gitlab.com/meso-star/stardis-solver.git) - * [Solstice-Solver](https://gitlab.com/meso-star/solstice-solver.git) - * [Star-4V/S](https://gitlab.com/meso-star/star-4v_s.git) - * [Star-GebhartFactor](https://gitlab.com/meso-star/star-gf.git) - * [Star-Schiff](https://gitlab.com/meso-star/star-schiff.git) - -## Install - -### Pre-requisites - -Star-3D is compatible GNU/Linux as well as Microsoft Windows 7 and later, both -in 64-bits. It was successfully built with the [GNU Compiler -Collection](https://gcc.gnu.org) (versions 4.9.2 and later) as well as with -Microsoft Visual Studio 2015. It relies on [CMake](http://www.cmake.org) and the -[RCMake](https://gitlab.com/vaplv/rcmake/) package to build. It also depends on -the [RSys](https://gitlab.com/vaplv/rsys/) and -[Embree](https://embree.github.io/) libraries. - -### How to build - -First ensure that CMake and a C/C++ compiler is installed on your system. Then -install the [RCMake](https://gitlab.com/vaplv/rcmake.git) package as well as -the [RSys](https://gitlab.com/vaplv/rsys.git) and -[Embree](https://embree.github.io) libraries. Finally generate the project from -the `cmake/CMakeLists.txt` file by appending to the `CMAKE_PREFIX_PATH` -variable the `<RCMAKE_DIR>`, `<RSYS_DIR>` and `<EMBREE_DIR>` -directories, where `<RCMAKE_DIR>`, `<RSYS_DIR>` and `<EMBREE_DIR`> are the -install directories of the RCMake package, the RSys and the Embree libraries, -respectively. The resulting project can be edited, built, tested and installed -as any CMake project (Refer to the [CMake -documentation](https://cmake.org/documentation) for further informations on -CMake). - -Example on a GNU/Linux system: - - ~ $ git clone https://gitlab.com/meso-star/star-3d.git - ~ $ mkdir star-3d/build && cd star-3d/build - ~/star-3d/build $ cmake -G "Unix Makefiles" \ - > -DCMAKE_PREFIX_PATH="<RCMAKE_DIR>;<RSYS_DIR>;<EMBREE_DIR>" \ - > -DCMAKE_INSTALL_PREFIX=<STAR3D_INSTALL_DIR> \ - > ../cmake - ~/star-3d/build $ make && make test - ~/star-3d/build $ make install - -with `<STAR3D_INSTALL_DIR>` the directory in which Star-3D is going to be -installed. - -## Quick Start - -Once installed, the Star-3D library and its associated headers are deployed, -providing the whole environment required to develop C/C++ applications with -Star-3D. The `<STAR3D_INSTALL_DIR>/include/star/s3d.h` header defines the -Star-3D Application Programming Interface (API). Refer to this -[file](https://gitlab.com/meso-star/star-3d/blob/master/src/s3d.h) for the API -reference documentation. - -A Star-3D [CMake -package](https://cmake.org/cmake/help/v3.5/manual/cmake-packages.7.html) is -also installed to facilitate the use of Star-3D in projects relying on the -CMake build system. For instance, the following `CMakeLists.txt` file uses the -Star-3D package to build an executable relying on the Star-3D library. - - project(my_project C) - - # Use the Star-3D CMake package - find_package(Star3D REQUIRED) - include_directories(${Star3D_INCLUDE_DIR}) - - # Define the program to build - add_executable(my_program main.c) - - # Link the program against Star-3D - target_link_libraries(my_program Star3D) - -This `CMakeLists.txt` is then used to generate the target project as, for -instance, on a GNU/Linux system: - - cmake -G "Unix Makefiles" -DCMAKE_PREFIX_PATH="<STAR3D_INSTALL_DIR>" <MY_PROJECT_DIR> - -with `<STAR3D_INSTALL_DIR>` the install directory of Star-3D and -`<MY_PROJECT_DIR>` the location of the `CMakeLists.txt` file. +surfacic object such as a *triangular mesh* or a *sphere*. Shape data is +user-defined and can be updated at any time. The shapes are then attached to a +*scene* where they can be queried. We point out that a scene can be +*instantiated* once or several times in a new shape which can be attached to +another scene like any other shape. Each instantiated scene has its own +position and orientation while its geometry is stored once even if the scene is +instantiated multiple times. This feature can thus be used to create an +extremely complex environment with a small memory footprint. + +To query scene data, you need to create a *view* of the scene. A view is +actually a scene on which accelerating data structures are built to accelerate +the aforementioned access operators such as ray tracing. These data structures +are constructed from the scene geometry as defined at the time of view +creation. A view is thus insensitive to updates of the scene following its +creation. This means that multiple views can be used to save different states +of the same scene, giving the caller great flexibility in managing scene data. + +## Requirements + +A C99 compiler, POSIX Make, and the RSys and Embree header files and libraries. + +## Installation + +Edit config.mk as needed, then run: + + make clean install ## Release notes @@ -235,7 +149,9 @@ argument. For closest point queries, this range is from 0 to query radius. ## License -Copyright (C) 2015-2021, 2023 |Méso|Star> (<contact@meso-star.com>). Star-3D is -released under the CeCILLv2.1 license. You are welcome to redistribute it under -certain conditions; refer to the COPYING files for details. +Copyright (C) 2015-2021, 2023 |Méso|Star> (contact@meso-star.com) + +Star-3D is released under the CeCILLv2.1 license. You are welcome to +redistribute it under certain conditions; refer to the COPYING files for +details.