Bruno Levy Profile picture
@BrunoLevy01@fosstodon.org Inria Research Director / Computational Physics/Cosmology / Scientific Director of Program Inria Quadrant / #riscv ambassador

Jun 4, 2022, 37 tweets

#geogram is a programming library of geometric algorithms
github.com/BrunoLevy/geog…

2/N
It has fundamental geometric algorithms (Delaunay/Voronoi in 2D and 3D)
github.com/BrunoLevy/geog…
github.com/BrunoLevy/geog…

3/N
A mesh data structure, for surfacic and volumetric meshes, with optional user-defined attributes
github.com/BrunoLevy/geog…

4/N
It has Axis-Aligned Bounding Box trees, that can be used for raytracing meshes ...

5/N
... or computing per-vertex ambient occlusion

6/N
It has efficient eigenfunctions computation (Manifold Harmonics)

7/N
It has surface reconstruction from pointsets (Co3Ne and Poisson)
github.com/BrunoLevy/geog…

8/N
It is based on the result of 20 years of research, published at @siggraph, @EurographicsC, @GeometryProcess. It has all the reference implementations of the published articles (cc @ReScienceEds @NPRougier @j_perkel )
github.com/BrunoLevy/geog…

9/N
Geogram was supported by several @Inria grants and two @ERC_Research grants
github.com/BrunoLevy/geog…

10/N
Our latest result is a "mathematical time machine" for computational cosmology (published in @PhysRevLett, featured in @PhysicsMagazine, see the following article)
physics.aps.org/articles/v15/75
Geogram computes semi-discrete optimal transport problem with HUGE Laguerre diagrams !

@PhysRevLett @PhysicsMagazine 11/N Reconstructing the trajectories of the galaxies from the origin to now can be recasted as a semi-discrete optimal transport problem, that boils down to computing Laguerre diagrams

12/N More about this in this thread:

13/N or in the upcoming thread about Optimal Transport (I need to prepare the images, stay tuned...)

14/N
#geogram has also many application in its original universe (geometry processing and computer graphics). It has remeshing
github.com/BrunoLevy/geog…
It uses the "Vorpaline" algorithm, that resamples the surface in 6D, hence generating a nice curvature-adapted mesh.

15/N
Historically, all this story began with texture mapping (first lines of code in 1998). The code is still there and works ! (well, it was rewritten 3 or 4 times since then)
github.com/BrunoLevy/geog…

16/N
Bunny Texture Mapping !

17/N
#geogram has also atlas generation, texture baking and normal map generation

18/N
With normal mapping, one can replace a heavy mesh with a much lighter one, by separating the geometric details from the global shape and storing them in textures.

19/N
Here is how it works

20/N
It has an easy-to-use API (OpenNL) to assemble sparse matrices and solve sparse linear systems.
github.com/BrunoLevy/geog…

21/N
It has a graphics library (GLUP) for displaying stuff without the agonizing pain. It is an OpenGL-2.x-like API, plus volumetric primitives, plus advanced shading. It works with GLSL 1.5, 4.40 and OpenGL ES. It works under Linux/Mac/Windows/Android/Web
github.com/BrunoLevy/geog…

22/N
It can be used for many crazy computational physics experiments. Here my fluid simulator / how it started

33/N
Fluid simulator / how it is going

34/N
Rendering/raytracing using geogram's AABB
github.com/BrunoLevy/geog…
Prototyped on ShaderToy
shadertoy.com/view/WlcXRS
shadertoy.com/view/3ltSzM

35/N
There is also Graphite, an experimental 3D modeler around #geogram, with a GUI, scripting (Lua and Python) and much more....
github.com/BrunoLevy/Grap…

36/N
The slides of my @EurographicsC keynote on geogram:
fr.slideshare.net/BrunoLevy4/the…

37/N
I remember having seen many Ph.D. students loosing too much time with OpenGL (professor, I don't see my triangle !) and GUI (Qt has became super heavy...)
With @ocornut's DearImGui and GLUP (brunolevy.github.io/geogram/GLUP_8…),
writing a 3D application with a GUI is super-easy...

38/N
You just need to derive from SimpleApplication, see tutorial here:
github.com/BrunoLevy/geog…

39/N
If you do mesh processing, you can derive from SimpleMeshApplication, it is what implements the bundled VorpaView mesh viewer under the hood.
More information avout VorpaView here:
github.com/BrunoLevy/geog…

40/N
All geogram programs can be "transcripted" to JavaScript and embedded in web pages,using the fabulous Emscripten (emscripten.org).
Geogram demo programs and utilities are usable in your web browser here:
members.loria.fr/Bruno.Levy/GEO…

41/N
For instance, you can repair and remesh without installing anything, in the web version of geobox
members.loria.fr/Bruno.Levy/GEO…
When you "save" your file, it appears as a "download" in your browser
It is approx 5x slower than the native version, but it is usable for small meshes.

42/N
Transformers, robots in disguise !
Optimal transport turns the armadillo into a bakugan.
Semi-discrete optimal transport in the geogram/exploragram library, one of the results of an @Inria AeX grant (exploratory action)
github.com/BrunoLevy/geog…

43/N
Free-surface fluid simulation with Optimal Transport:
it can "liquefy" everything ...

44/N
... including myself !

45/N
... or this guy :-)

46/N
Through Graphite (github.com/BrunoLevy/Grap…), one can expose all the functionalities of geogram to several languages (Lua, Python). It can even run in a Jupyter notebook. By direct access to mesh and properties as Numpy array, you can use MatPlotLib to display the result !

47/N
List of projects and publications with Geogram here:
github.com/BrunoLevy/geog…
DM me or send a pull request if you want to add a reference to your own projects/publications that use geogram.

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling