README.md (5209B)
1 # Star-enclosures-3d 2 3 ## Overview 4 5 The purpose of Star-enclosures-3d is to extract enclosures from raw 6 geometry. An enclosure is a set of triangles enclosing a given volume. 7 The enclosure notion extends to open enclosures for which there is no 8 inside or outside. For every detected enclosure, the library provides 9 the set of involved triangle sides as well as the set of involved media 10 and a few metrics (number of triangles, volume, area, ...). 11 12 From release 0.5, the geometry has to be provided at once, with no 13 duplicates nor zero-area triangles. To help ensuring this constraints, 14 one can rely on the star-geometry-3d library. 15 16 Also the convention regarding FRONT/BACK sides for input triangles as 17 well as the convention regarding normals' orientation for output 18 triangles can be set. 19 20 ## Requirements 21 22 - C compiler 23 - POSIX make 24 - pkg-config 25 - [RSys](https://gitlab.com/vaplv/rsys) 26 - [Star 3D](https://gitlab.com/meso-star/star-3d) 27 - [Star 3DUT](https://gitlab.com/meso-star/star-3dut) 28 (optinal for tests) 29 - [Star SamPling](https://gitlab.com/meso-star/star-sp) 30 (optinal for tests) 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.7.2 41 42 - Another correction in the code that groups connex components to create 43 enclosures. 44 - Add function `senc3d_scene_dump_enclosure_obj` which writes an Obj 45 file of a given enclosure geometry. 46 47 ### Version 0.7.1 48 49 - Fixes a bug in the code that groups connex components to create 50 enclosures. 51 52 ### Version 0.7 53 54 - Replace CMake by Makefile as build system. 55 - Update compiler and linker flags to increase the security and 56 robustness of generated binaries. 57 - Provide a pkg-config file to link the library as an external 58 dependency. 59 60 ### Version 0.6 61 62 - Major rework on the code that groups connex components to create 63 enclosures. 64 - Add tests showing bugs at the grouping stage in previous release. 65 - Add debug code that allows to dump how connex components are grouped. 66 - Fix compilation warnings. 67 - Sets the required version of Star-3D to 0.9. 68 69 ### Version 0.5.5 70 71 - Fixes a crash linked to numerical accuracy that caused connex 72 components grouping to loop forever. 73 74 ### Version 0.5.4 75 76 - Fixes the (rare) situation where temporary local variables could be 77 used in a unitialized way in the `senc3d_scene_create` function. 78 - Sets the required version of Star-SampPling to 0.12. This version 79 fixes compilation errors with gcc 11 but introduces API breaks. 80 81 ### Version 0.5.3 82 83 - Fix API break on filter function introduced by Star-3D 0.8. 84 85 ### Version 0.5.1 86 87 - BugFix: enclosures including multiple media could end with invalid 88 primitive count. 89 90 - BugFix: grouping of components in contact at a single vertex was 91 incorrect, causing invalid enclosures. 92 93 ### Version 0.5 94 95 This release breaks the API as geometry cannot be provided through calls 96 to an add-like call anymore. Instead the whole geometry must be provided 97 at once, with no duplicates (either vertices or triangles) nor zero-area 98 triangles. 99 100 - Compute volume and surface of enclosures. 101 102 - Report overlapping triangles. 103 Only triangles with a common edge are currently detected. 104 Do not extract enclosures when overlapping triangles are detected. 105 106 - Make enclosure IDs consistent across runs. 107 108 - Fix enclosure extraction when all triangles Nz component is zero. 109 110 - More robust on invalid scenes. 111 112 ### Version 0.4.2 113 114 - Fix global id of triangles; releases 0.4.0 and 0.4.1 are broken 115 116 - Reintroduce an API call to get the global id in user space of 117 a global unique triangle after deduplication 118 119 ### Version 0.4.1 120 121 - Fix an infinite loop related to a rare numerical accuracy problem. 122 123 ### Version 0.4 124 125 - Change signature of the `senc_scene_add_geometry` API. Thus this 126 release is **not compatible** with previous ones. 127 The `global_id` callback that was ill-defined is removed and 2 128 callbacks are added to manage client-app data when deduplicating 129 geometry. 130 These 2 callback allow a proper client-app management of global ids. 131 - Remove execution time for analysis steps from the log. 132 133 ### Version 0.3.1 134 135 - Performance Fix: when a connex component was canceled by a thread the 136 complexity was O(n^2). New algorithm is O(n). 137 - Output execution time for analysis steps in the log. 138 139 ### Version 0.3 140 141 - Add API calls to access to geometry frontiers. 142 - Improve documentation in the header file. 143 - BugFix: wrong data cleaning on computation canceling. 144 145 ### Version 0.2.2 146 147 - BugFix when grouping components into enclosures. 148 - Add a warning message in log when triangles that could surround a 149 hole are found (triangles with at least one unshared edge and 150 different media on its sides). 151 152 ### Version 0.2.1 153 154 - BugFix: needed data cleaning on computation canceling. 155 156 ### Version 0.2 157 158 - Add the support of enclosures with multiple media. 159 - Allow to set the FRONT/BACK convention for input triangles. 160 - Allow to set the normal convention for output triangles. 161 162 ## License 163 164 Copyright © 2018-2020, 2023, 2024 165 [|Méso|Star>](https://www.meso-star.com) (<contact@meso-star.com>). 166 167 It is free software released under the GPLv3+ license. You are welcome 168 to redistribute it under certain conditions; refer to the COPYING files 169 for details.