README
Last updated
Last updated
Polyform is for loading, generating, editing, and exporting 3D geometry and it's associated data.
Developers and artists are welcome to join the to share feedback, get help, or discuss feature requests.
If you just want to play around without setting polyform up locally, you can check it out
Download the latest of polyform and one of the and then run:
Or if you have golang installed, simply clone the repo and run:
Or if you have Nix installed, run with:
Modeling
Drawing
Packages that have spawned from polyform's undertaking and have since been refactored into their own repositories:
If you so happen to want to build a configurator example, my preferred workflow is:
As you hit save on your go code, the webserver will restart, and the web page will automatically refresh itself.
If you want to mess with modern web browser features and need https, I recommend taking a look at https://github.com/FiloSottile/mkcert
Compile the polywasm
app
Build your app
Then serve
Reads in a obj and applies the cube marching algorithm over the meshes 3D SDF.
Results in:
Progress towards V1...
Things I want to implement eventually...
SDFs
Box
Line
Plane
Sphere
Rounded Cylinder
Rounded Box
Torus
Box Frame
Cone
Rounded Cone
Elipsoid
Triangle
3D Tesselation
Slice By Octree
Poisson Reconstruction
Buncha texture patterns
Noise...
Simplex
Splines...
Catmull
B Spline
Resources either directly contributing to the code, or are just interesting finds while researching.
Noise
Tiling Noise
Triangulation
Delaunay
Bowyer–Watson
Constraint/Refinement
Polygons
Spheres
Texturing
Formats
OBJ/MTL
GLTF
Generative Techniques
Terrain
Planet
Plants
Voronoi
Functions / Curves / Animation Lines
Marching Cubes / SDFs
Collisions
Ray Tracing
Math
Color Space
WFC
UV Unwrapping
OptCuts: Joint Optimization of Surface Cuts and Parameterization
"Variational Surface Cutting" by Sharp & Crane, SIGGRAPH 2018
Drawing a Line
Did not expect to need to look that up
Materials
Flow Based Programming
Repositories
Articles
Guassian Splatting
Rotating
Coloring Stuff
Color Grading LUT
Chromatic Aberration
Point Cloud Rendering
Libraries the Webviewer depends on in some capacity
If Polyform contributes to an academic publication, cite it as:
- GLTF file format
- OBJ file format
- PLY file format
- STL file format
- Utilities for loading COLMAP reconstruction data
- Utilities for loading OpenSFM reconstruction data
- Mkkellogg's SPLAT format
- Niantic Scaniverse's
- Potree V2 file format
- All currently implemented algorithms for transforming meshes.
- Multi-threaded Cube Marching algorithm and utilities.
- Functionality for generating geometry from 2D shapes.
- Functionality for copying geometry in common patterns.
- Functionality pertaining to generating common geometry.
- Generating meshes from a set of 2D points.
- Color utilities for blending multiple colors together using weights.
- Traditional image processing utilities (common convolution kernels).
- Utilities for generating and editing normal maps.
- Making working with golang colors not suck as much.
- Common curves used in animation like cubic bezier curves.
- AABB, Line2D, Line3D, Plane, and Rays.
- Utilities around noise functions for common usecases like stacking multiple samples of perlin noise from different frequencies.
- Quaternion math and helper functions
- Math and utilities around TRS transformations
- Serves as a group of definitions for defining a mapping from one numeric value to another
- SDF implementations of different geometry primitives, along with common math functions. Basically slowly picking through article as I need them in my different projects.
- Application scaffolding for editing and creating meshes
- Implementation of common spatial partitioning trees.
- Another Flow-based Node Graph Library
- Immutable vector math library
- GLTF-inspired JSON schema for embedding arbitrary binaries
- Iterator and utilities. Some inspiration from ReactiveX
- Scheduler of operations on in-memory data
- Utilities for interacting with reconstruction data from different SFM programs
- Utilities for reading and writing binary data
You can at the different projects under the folder for different examples on how to procedurally generate meshes.
This was my . Pretty much uses every bit of functionality available in this repository.
[]
[]
[]
[]
[]
[]
[]
Set up the example to use the package that allows you to quickly spin up a web viewer to visualize the geoemetry of your program.
Use to live reload the examples as you build them out.
Set cmd = "go build -o ./tmp/main.exe ./examples/MY_EXAMPLE"
.
Set include_ext = ["go", "tpl", "tmpl", "html", "js"]
.
Skinning
Boundary First Flattening by and .
by
by
(required for rotating spherical harmonics)