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:
| M | README.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.