53 lines
2.8 KiB
Markdown
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
|