automata_scratch/README.md
2021-07-27 13:55:11 -04:00

53 lines
2.8 KiB
Markdown

# automata_scratch
This is repo has a few projects that are related in terms of
high-level goal, but almost completely unrelated in their descent.
- `python_isosurfaces_2018_2019` is some Python & Maxima code from
2018-2019 from me trying to turn the usual spiral isosurface into a
parametric formula of sorts in order to triangulate it more
effectively.
- `parallel_transport` is some Python code from 2019 September which
implemented parallel frame transport, i.e.
[Parallel Transport Approach to Curve Framing](https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.8103). It is mostly scratch
code / proof-of-concept.
- `python_extrude_meshgen` is some Python code from around 2019
September which did a sort of extrusion-based code generation.
While this had some good results and some good ideas, the basic
model was too limited in terms of the topology it could express.
- `libfive_subdiv` is a short project around 2021 July attempting to
use the Python bindings of [libfive](https://www.libfive.com/), and
automatic differentiation in
[autograd](https://github.com/HIPS/autograd), to turn implicit
surfaces to meshes which were suitable for subdivision via something
like
[OpenSubdiv](https://graphics.pixar.com/opensubdiv/overview.html)
(in turn so that I could render with them without having to use
insane numbers of triangles or somehow hide the obvious errors in
the geometry). Briefly, the process was to use edges with crease
weights which were set based on the curvature of the implicit
surface. While I accomplished this process, it didn't fulfill the
goal. Shortly thereafter, I was re-reading
[Massively Parallel Rendering of Complex Closed-Form Implicit Surfaces](https://www.mattkeeter.com/research/mpr/) - which, like libfive, is by Matt Keeter -
and found a section I'd ignored on the difficulties of producing
good meshes from isosurfaces for the sake of rendering. I kept
the code around because I figured it would be useful to refer to
later, particularly for the integration with Blender - but
otherwise shelved this effort.
- `blender_scraps` contains some scraps of Python code meant to be
used inside of Blender's Python scripting - and it contains some
conversions from another project, Prosha, for procedural mesh
generation in Rust (itself based on learnings from
`python_extrude_meshgen`). These examples were proof-of-concept of
generating meshes as control cages rather than as "final" meshes.
It would probably make sense to rename this repo to something with
`procedural` in the name rather than `automata` since at some point it
ceased to have much to do with automata.
## Projects not covered here
- curl-noise work (both in Clojure and in Python/vispy)
- parallel transport
- prosha, of course