Commit Graph
113 Commits
Author SHA1 Message Date
pca006132 311d25a8cf fixes 2023-07-23 14:34:42 +08:00
pca006132 6fa0e7becb make to_mesh accept MeshGL 2023-07-21 13:33:35 +08:00
pca006132 e425761d8e fix according to comments 2023-07-21 12:56:06 +08:00
pca006132 a4cc9ee54b fix hsplit 2023-07-20 00:52:56 +08:00
pca006132 2a7f9cf48f clean up array related stuff 2023-07-20 00:48:23 +08:00
pca006132 9157350a11 updated python meshgl 2023-07-19 22:40:27 +08:00
Emmett Lalish f6cf8d23d3 updated python mesh 2023-07-14 23:01:28 -07:00
Peter Harman da3f323113 (C bindings) Pass additional data to level set SDF function (#427)
Allows a developer to pass some context to the level set function in the C FFI bindings, such as a pointer to an object in the host language, so that parallel calls can be threadsafe.
2023-07-13 12:50:40 -07:00
Emmett Lalish 8b7bf4231b updated python doc strings (#488)
* updated doc strings

* pymanifold -> manifold3d
2023-07-13 11:34:31 -07:00
pca006132 285bb0754b fix nixos js build (#473)
* fix nix js build

* fix js CrossSection::rotate binding

* add wasm hull operation
2023-07-12 12:03:19 +08:00
Emmett Lalish 96c57c0591 Fix Merge manifoldness issues (#481)
* test passes

* fixed merge properly

* fixed relation

* fixed pinched verts

* added WASM debug instructions
2023-07-07 09:40:10 -07:00
Geoff deRosenroll 709021d9d2 Remove RectClip API + Rect::AsCrossSection fix (#478)
Following discussion on #455, this removes RectClip from our API, as it does not provide the same guarantees that Clipper2's regular boolean clipping operations give us (that make sure that CrossSections can be extruded successfully).

Also, this fixes AsCrossSection which was returning empty CrossSections due to incorrect winding followed by a Positive fill rule union operation. Now it is working as advertised, while skipping over the needless clipping by implementing it as a CrossSection constructor (building a PathsD directly).
2023-07-05 10:41:03 -07:00
John Collins 6cec951aed Partial Revolve (#455)
* handle verts on revolve axis

* Tests working

* Const declares, test cycle start vert

* clang-format

* clang-format test code

* fix header declaration

* WASM bindings

* format bindings.js

* clang format

* Address comments
2023-07-04 15:52:48 -07:00
Axel Angel 37db0d0182 python bindings: mirror and Mesh with 2 args (#459)
* python bindings: Add mirror

* python bindings: fix Mesh constructor optional arguments
2023-06-27 07:32:44 -07:00
Emmett Lalish 1b9243df2a Update HTML examples for WASM API changes (#470)
updated for WASM API changes
2023-06-25 20:40:16 -07:00
Geoff deRosenroll a65fedb2f9 Clean up CrossSection constructor in pymanifold (#461)
Remove vertices intermediary and {vertices} assignment
2023-06-21 14:33:13 -07:00
Geoff deRosenroll 2f8e3174f7 Update C bindings to curvature and set properites additions (#451)
Add C bindings to `Manifold::ReserveIDs`, `Manifold::SetProperties`, and `Manifold::CalculateCurvature`.
2023-06-14 23:08:53 -07:00
Emmett Lalish e727b115c0 Change curvature API (#448)
* new curvature API compiles

* tests pass

* update JS example and fix bindings
2023-06-09 22:36:15 -07:00
Johnny Bigert f6431112a8 Update Python bindings (#445)
* Added more Python bindings (CrossSection) and some clarifying Python examples on how to create polygons etc
* Returned extrude from Python example and renamed accordingly.
* Removed PolygonWrapper class from Python bindings
2023-06-08 10:52:10 -07:00
Geoff deRosenroll 2643c291ed Use quality globals instead of arc tolerance for offset (#444) 2023-06-01 11:52:55 -07:00
Emmett Lalish e024edf103 ManifoldCAD docs update (#446)
* fix back compat

* updated docs

* Revert "fix back compat"

This reverts commit 5f102e567577ab8fcd7f2215801f5dcea9d13e8e.
2023-06-01 10:31:05 -07:00
Geoff deRosenroll cbfeed1672 Update JS bindings with CrossSection + reorganize (#440)
- add CrossSection class
- move static method (constructors) under their respective classes
-add Manifold.{split, splitByPlane}
- enable usage of instanceof on Manifold (and now CrossSection) objects simplify registry indirection in worker.ts, enabling method de-structuring (opening static function names out of class module name-spaces)

Build changes:
- break C++ helpers out from bindings.cpp to helpers.cpp
- ensure that ts files are copied during builds even when nothing is recompiled

Note that in addition to the new bindings, the most of the existing toplevel functions have been moved under their respective classes as static methods (breaking change!). I haven't added any new examples yet, but the existing ones are passing and do make use of CrossSection now (some transparently, and some directly), but I think enough of this is together that review is worthwhile.
2023-06-01 00:31:57 -07:00
Emmett Lalish 9dac47a76a Fix editor warp crash (#442)
* reset errored worker

* catch non-finite warp errors
2023-05-26 22:37:10 -07:00
Emmett Lalish 72935213e8 Editor scene (#438)
* SetProperties working

* cleanup

* added Node

* switched to Vite

* scene export working

* vertex color output works

* added unlit

* fixed rename bug

* switch worker to TS

* don't fail on empty manifolds

* reusing meshes

* cleanup, updated gyroid example

* change signature of setPropFunc

* updated examples

* add dist for githack testing

* Revert "add dist for githack testing"

This reverts commit 8769d7ab08dfaab9fe7824726f7a7229bf553bb3.

* remove duplicate files

* updated docs

* fixed some bugs

* multi-material working

* switched to vitest

* tests pass

* fixed examples

* fix CI

* update deployment

* tweak logging

* cleanup

* fix copy

* updated READMEs

* extend timeout
2023-05-25 09:40:02 -07:00
Geoff deRosenroll e1ebc66425 (C) Only link MeshIO when MANIFOLD_EXPORT is on (#436)
Only link MeshIO in C bindings when `MANIFOLD_EXPORT` is defined. MeshIO related code has been better consolidated to limit the number of `#ifdef` blocks required.
2023-05-21 00:14:36 -07:00
Geoff deRosenroll 812ca5c30f Add manifold_import_meshgl (#434)
Adds missing C binding to MeshIO::ImportMesh
2023-05-16 16:48:40 -07:00
Emmett Lalish f064b2a5fd make-manifold (#428)
* make-manifold working

* prettier

* fixed stack exceeded

* download only manifolds

* keep any meshes that are manifold

* fixed extension accessor writer

* fix read-write roundtrip
2023-05-15 07:50:28 -07:00
Emmett Lalish 58fb7e3300 EXT_manifold for glTF (#420)
* extension export works

* reading GLBs

* trying to merge documents

* add await

* removed extra materials

* added builds

* several fixes

* fix versions

* move to built

* fixed test.js

* updated README

* disable nix JS test for now

* fix codecov timeout

* fix test
2023-05-04 20:49:39 -07:00
David Braun 1959a30560 Fix bug in three.html example. (#419)
Fix bug in three.html.

The bug didn't change the output but made it harder for newcomers to learn the JavaScript API.
2023-04-21 15:24:11 -07:00
Jiří Hon a5f92e2522 fix typo in typescript types (#401) 2023-04-04 13:28:43 -07:00
Jiří Hon fbe4cc6a86 Add JS bindings for triangulation (#393)
* js binding for triangulation

* don't use CrossSection class as it alters the order of the vertices

* remove unused code,
rename original Triangulate to TriangulateIdx,
move TriangulateJS from bindings.cpp to polygon.cpp,
rename TrinagulateJS to Triangulate for consistent C++ and JS API,
add optional precision parameter
2023-04-04 10:19:35 -07:00
pca006132 9a795162f4 [WIP] Python update (#378)
* nicer docstring

* some missing APIs

* split methods

* cross section python API
2023-03-23 12:54:05 +08:00
Geoff deRosenroll cdce9e7618 Improve handling of invalid shape construction. (#385)
Add `InvalidConstruction` to `Manifold::Error` and return empty manifolds with it set when manifold construction is attempted with invalid parameters

- zero / negative dimensions for Cube
- zero / negative radius for Sphere
- zero / negative height for Extrude
- empty CrossSection for Extrude/Revolve

Also, Circle and Square have been updated to return empty CrossSections for similar arguments.
2023-03-22 21:39:26 -07:00
Geoff deRosenroll 2a63971983 Add missing C bindings + revamp composition with opaque vectors (#382)
- Add bindings to `CrossSection::{Compose,Decompose,NumVert,NumContour,Warp}` 
- Add bindings to `Boolean` and `BatchBoolean` for both `Manifold` and `CrossSection`
- Add `ManifoldManifoldVec` and `ManifoldCrossSectionVec` opaque types for `std::vector` pointers to help clean up bindings involving vectors (particularly when they are returned with dynamic size, *e.g.* `manifold_decompose`
- Remove two-step Components workaround previously introduced to allow return of C array from `manifold_decompose`
2023-03-19 22:19:19 -07:00
Emmett Lalish d713986f62 Add missing JS bindings (#375)
* readd transform

* added mirror to wasm bindings

* added trimByPlane wasm bindings

* fixed bugs

* update test

* trying to fix submodule
2023-03-16 13:00:28 -07:00
Jiří Hon 7b0758eddc locateFile property in Module function (#371)
Allows to provide custom url of the manifold.wasm file. This is needed for Vite. Partial fix for #365
2023-03-15 07:56:53 -07:00
Geoff deRosenroll 61d87c503c SimplePolygon/Polygons accessors for C bindings (#369) 2023-03-14 22:11:48 -07:00
Geoff deRosenroll d82cf061f8 Update pybind11 to latest stable commit (#367)
* Update pybind11 to latest stable commit

* Explicitly install python@3.11 in mac CI

* Turn findpython on
2023-03-14 11:11:58 +08:00
Geoff deRosenroll 83131c672e Add Mirror transformation method to Manifold (#354)
Add Mirror transformation (over plane through origin described by given normal) method to Manifold and corresponding C binding.
2023-03-07 23:54:27 -08:00
Geoff deRosenroll bd8da6ce1e Add CrossSection and Rect to C bindings (#353)
* + CrossSection and Rect type interfaces and method functions

* `manifold_extrude` and `manifold_revolve` take `ManifoldCrossSection*`

* fix manifoldc extrude test (`ManifoldCrossSection*` argument)
2023-03-07 12:30:28 -08:00
Emmett Lalish 3c736f9030 Added docs, refactored for single OpType (#352)
refactored for single OpType
2023-03-07 09:31:30 -08:00
Geoff deRosenroll a97c666358 2d-operations via Clipper2 (#341)
* WIP Clipper2 wrapper for 2d subsystem

* Working example in clippoly_test

* Add clean_ property to clippoly

* Square center=false by default

* Square defaults to center=false

* Shorten union example

* + simplification and minkowski functions

* + Circle and note on Minkowski

* + Offset (InflatePaths)

* Clippoly -> CrossSection renaming

* Switch from NonZero to Positive fill rule

* -(minkowski, simplifs, clean_) + pre-alloc vecs

Remove minkowski, simplification algorithms other than simplify,
clean (union) arbitrary contours on construction, and pre-allocate
vectors when length is known.

* - index from polygon conversion + missed vec prealloc

* Use Polygon shorthand over std::vector

* Update copyright date

* Add Rotate

* Update copyrights to 2023

* Extrude and Revolve accept CrossSection only

* Fix incorrect use of vector constructor

* Fix remaining incorrect vector construction

* Revert "Update copyrights to 2023"

This reverts commit af8f6c8c95135eb3376e1f150fe720fddea16f33.

* Re-update copyright notice in cross_section files

* Add missing precision_ argument to cleaning Unions

* Lift circular resolution globals into Quality

* Replace uses of Manifold globals with Quality

* + Ellipse, Mirror, Area

* Include mirror in Union example and test area

* + Rewind (reverse winding of all contours)

* + fillrule/IsEmpty - Ellipse/Rewind

* Move Quality into public.h

* Remove bad definition

* Replace manual circles with CrossSection::Circle

* Lists of empty contours are empty

* + Rect class, RectClip, + const params/methods

* Add Transform to CrossSection and Rect
2023-03-03 17:11:15 -08:00
Emmett Lalish 7c8ce3c935 v2.1 (#350)
new npm release
2023-03-02 10:41:19 -08:00
Emmett Lalish 4d434e4f8c deploy extra types files (#349) 2023-03-02 00:04:16 -08:00
Emmett Lalish 9e9a22d66b clean up editor.d.ts (#348) 2023-03-01 23:33:31 -08:00
Rafael 893a4f8ac3 Properly encapsulate ES6 type defs. in module (#346)
* Properly encapsulate ES6 type defs. in module

* Fixed import file name typo

* Copy type definitions to editor folder (not used for now)

* Dummy commit (trigger CI)
2023-03-01 09:47:45 -08:00
Emmett Lalish 95daa54591 ugly fix for editor TS (#344) 2023-02-28 12:16:48 -08:00
Emmett Lalish 2c597d1eef make PolyVert private (#343)
* make PolyVert private

* fix python
2023-02-28 10:03:34 -08:00
Rafael e2a8e94906 Fix ES6 .d.ts exports (#342) 2023-02-28 09:16:06 -08:00
Emmett Lalish eae9653745 added docs, tweaked manifest (#339) 2023-02-25 11:00:17 -08:00