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 ef534d750fdf0187db63b88203afb5d5308aad75
parent 3c5a447ef53fed504aa337041a56e4f5c1562d82
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 18 Nov 2019 14:47:48 +0100

Write the 0.7 release note

Introduce the support of the "closest point query" in the Star-3D
overview.

Diffstat:
MREADME.md | 89++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 57 insertions(+), 32 deletions(-)

diff --git a/README.md b/README.md @@ -2,40 +2,42 @@ ## Overview -Star-3D is a C/C++ library whose purpose is to manage a virtual environment -composed of triangular meshes. The resulting virtual world can then be -ray-traced and sampled, providing an efficient way to deal with geometric data -of arbitrary 3D contents. In addition of purely geometric data, user defined -per vertex data can be setup, allowing the definition of attributes that -spatially vary over the geometry surface. To ensure high ray-tracing -efficiency, the Star-3D ray-tracing back-end relies on the [Intel(R) Rendering +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 several ray-tracing kernels -optimized for a wide range of data workloads. The target users of Star-3D are -thus programmers that have to efficiently deal with complex 3D environment as -numerical simulation engineers, researchers in complex systems or graphics -programmers. - -The main concept exposed by the Star-3D C API are *shapes*. A *shape* -represents a 3D object whose data is defined by the user and can be updated at -any time. A 3D environment is built by attaching one or several *shapes* to a -*scene*. To access the *scene* data through sampling, ray-tracing or indexing, -one have to create a *scene view* that commits the current *scene* geometry -as the geometry of the *view*. A *scene* can also be instantiated into one or -several *shapes*, each with its own attributes (e.g. position, orientation, -etc.). Since the *scene* geometry is stored once even though it is -instantiated several times, this feature can be used to create extremely -complex environment with a low memory footprint. - -Star-3D is currently used in several softwares dealing with complex arbitrary -3D contents, ranging from graphics applications and thermal simulations to +[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.* + +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) * [Solstice-Solver](https://gitlab.com/meso-star/solstice-solver.git) * [Star-4V/S](https://gitlab.com/meso-star/star-4v_s.git) - * [Star-Display](https://gitlab.com/meso-star/star-display.git) * [Star-GebhartFactor](https://gitlab.com/meso-star/star-gf.git) * [Star-Schiff](https://gitlab.com/meso-star/star-schiff.git) @@ -45,7 +47,7 @@ purpose. 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.7 and later) as well as with +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 @@ -99,6 +101,7 @@ Star-3D package to build an executable relying on the Star-3D library. # 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) @@ -116,6 +119,29 @@ with `<STAR3D_INSTALL_DIR>` the install directory of Star-3D and ## Release notes +### Version 0.7 + +- Add the `s3d_scene_view_closest_point` function. This function retrieves the + closest point into the scene to a query position in a radius from ]0, INF]. + This closest point is returned as a regular hit which means that the function + returns to the caller not only the distance to the query position, but also + the geometric primitive onto which the point lies and its location onto this + primitive. If no surface lies around the query position in a distance lesser + than the one defined by the query radius, the returned hit is invalid which + can be checked with the regular `S3D_HIT_NONE` macro. Finally, this function + supports the filter functions so that the caller can choose to discard + closest hits according to its own criteria. +- Add the `s3d_scene_view_create2` function that allows the user to configure + the acceleration structure used to partition the scene geometry. The caller + can thus control the quality of the structure and thus the compromise between + the building time and the query performances. +- Improve the performances of the scene bounding box computation. First of all, + if the scene view is created with the `S3D_TRACE` flag, Star-3D directly + retrieves the scene bounding box from Embree that already computed it to + build the acceleration structure. Finally, it internally tries to avoid to + recompute the bounding box if the scene was not updated between 2 scene view + creations. + ### Version 0.6.2 - Fix an issue in `s3d_scene_view_compute_area`: the returned area was wrong @@ -174,8 +200,7 @@ with `<STAR3D_INSTALL_DIR>` the install directory of Star-3D and ## License -Star-3D is free software copyright (C) 2015-2019 |Meso|Star> -(<contact@meso-star.com>). It 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-2019 |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.