Skip to content

Signed Distance Function (SDF) based Python package for procedural construction of geometry.

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
LICENSE
GPL-3.0
GNU_GPL_LICENSE
Notifications You must be signed in to change notification settings

peterropac/Aegolius

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aegolius is the public repository for the Python package SPOMSO.

SPOMSO is a free and open-source software under the GNU LGPL. This python package is intended for procedural construction of geometry and vector fields on the foundation of Signed Distance Functions (SDFs).

Key Features - SDFs

  • Geometry can be defined in 2D and 3D.
  • Object-oriented and function-oriented approach to defining geometry, with pre-defined 2D and 3D objects.
  • Built-in Euclidian Transformations (translation, rotation, scaling)
  • Point clouds can be converted into SDFs and vice versa.
  • Euclidian transformations for SDFs and point clouds.
  • In total 50 possible modifications of SDFs, including:
    • extrusion, revolution, twist, bend, elongation
    • mirror, symmetry, rotational symmetry
    • finite and infinite instancing
    • instancing along lines, segmented lines and parametric curves
    • surface-to-volume and volume-to-surface operations
    • various post-processing functions
    • custom user-defined modifications
  • In total 13 ways to combine different geometric objects together - different implementations of:
    • union, intersection, subtraction
    • smooth union, smooth intersection, smooth subtraction

Key Features - Vector Fields

  • Support for 2D and 3D vector fields.
  • Object-oriented and function-oriented approach, with pre-defined vector fields.
  • Vector fields can be defined from scalar fields/SDFs or with custom functions.
  • Modifications and transformations, including:
    • addition, subtraction, rescaling
    • element-wise rotations in the polar and azimuthal directions
    • element-wise rotations around arbitrary axes
    • revolutions of 2D vector fields around one of the principal axes

Key Features - Automatic Differentiation

There is a JAX implementation of almost all SDFs, modifications, combination functions and post-processing functions. Therefore, it is possible to run the computationally demanding part of the code on a GPU from within Python, with support for Automatic Differentiation. JAX is an optional dependency, so if you don't need these features it isn't necessary to install, and it won't be installed when you install SPOMSO.

Examples

There are 27 2D examples and 17 3D examples showing how to construct geometry and use many of the features included in SPOMSO. There are 5 Vector examples showing how to construct and manipulate vector fields. There are 7 Automatic differentiation examples showing how to use the JAX implemented functions. For each of the examples there is both a python script (.py) version and an interactive python notebook (.ipynb) version.

Install

See aegolius_install.ipynb in the Examples.

Citing

I kindly request that you cite the latest archived repository of Aegolius (SPOMSO) on Zenodo in any published work for which you used SPOMSO.

DOI

Documentation

Official website with the Documentation.

Acknowledgements

I acknowledge the support of the Faculty of Mathematics and Physics at University of Ljubljana, and Institute Jožef Stefan. Special thanks to my colleagues for helpful discussions.