Research: subdivision cage fitting, mixed subd/primitive assets, open solid kernels
Eyes pass after the operator's per-hull representation ruling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
91babd43cc
commit
390db63130
1 changed files with 95 additions and 0 deletions
95
docs/research/subd-cages-mixed-hulls-and-open-kernels.md
Normal file
95
docs/research/subd-cages-mixed-hulls-and-open-kernels.md
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<!-- Serves brush-tree:ruling:representation-per-hull and :no-unownable-tools-in-loop. Eyes pass eyes-subd-hulls, 2026-10-10. -->
|
||||
|
||||
# Eyes facts: subdivision-cage hulls and mixed subd/primitive assets (prior art)
|
||||
|
||||
Serves: brush-tree:ruling:representation-per-hull (InForce, operator, 2026-10-10; supersedes hulls-are-subd-limit-surfaces). Operator words: "No, not every hull, that hull in particular. Any attempt to build it needs to model that subtle interplay of curves in 3D, you can't do that by bashing primitives together. That squatter mech ship, though, I'd build that mostly out of primitives. One size does not fit all." Dexter Quiet = one continuous body with a few mechanical sweeps fused into the center (subd limit surface); squatter mech ship = mostly primitives (CSG). Authoring and lowering must support both paths, per hull or per part.
|
||||
Also serves: brush-tree:ruling:shippable-part-bar (clean unbroken topo flow; part-coherent low-distortion UVs; hard edges by single-segment bevel with face-weighted normals, not split geometry, not multi-segment).
|
||||
Agent: eyes-subd-hulls, session self-2026-10-10-ag2, 2026-10-10. Facts only; no recommendations.
|
||||
|
||||
Tags: FETCHED = page body read this session (WebFetch returns a small-model summary of the page, not the page itself); SEARCH = from search-result summary only; KNOWLEDGE = memory, unverified.
|
||||
|
||||
## 0. Mixing a subd/organic body with primitive/CSG mechanical parts in one asset (added item)
|
||||
|
||||
- Blender (practitioner pipeline, assembled from forum/add-on sources, no official doc): cutters kept in own collection, scale applied, Boolean modifiers live until export; Bevel modifier placed after Boolean (order changes result); bevel weight only on the boolean's edge loop, not the loops in between; guide edges added to steer the boolean solve on curved surfaces; boolean on curved surfaces yields stretched faces and shading streaks; a profile-1 bevel with a spacer loop is used to stop subd shrinking the form; Weighted Normal modifier (Keep Sharp) last in stack; apply booleans/modifiers only once the form is settled; UVs planned after panel layout, seams following panel breaks. [SEARCH https://blenderartists.org/t/boolean-and-bevel-on-curved-surface/1308394 ; https://hardops-manual.readthedocs.io/en/latest/subdivision/ ; https://garagefarm.net/blog/hard-surface-modeling-in-blender]
|
||||
- Blender Bevel modifier has Face Strength + Harden Normals options intended to feed a following Weighted Normals modifier (Face Influence). [FETCHED https://projects.blender.org/blender/blender-manual/raw/branch/main/manual/modeling/modifiers/generate/bevel.rst]
|
||||
- Polycount/ZBrushCentral threads: boolean blockout then rebuild clean topology over it; or cage-first with support loops; booleans only for blockout; boolean+bevel without subd for blocky parts; ZRemesh reported poor on heavy boolean cutouts; match segment counts where round shapes intersect; align operand edges so main-shape support loops are partly built. Jan van den Hemel video "boolean holes to quad topology" converts boolean output to all-quad topology for subd (details not on the page). [SEARCH https://polycount.com/discussion/comment/2729205 ; https://www.zbrushcentral.com/t/booleans-and-retopology-on-hard-surface-in-zbrush/398107 ; FETCHED https://www.blendernation.com/2023/12/14/boolean-holes-to-quad-topology/]
|
||||
- Plasticity (NURBS CAD): no native subdivision modeling found; mesh enters via PolySplines (mesh to editable G2 NURBS, added in 2026.1); xNURBS patching in Studio; Indie tier exports low-res OBJ/STL only; bridges to Blender and Cinema 4D. A Modo plugin (Power SubD-NURBS) exports subd to NURBS CAD formats, "one-to-one" (planar faces) or "smooth" (combined curved patches). No source found describing Plasticity mixing subd + NURBS solids in one document. [SEARCH https://digitalproduction.com/2026/04/21/plasticity-2026-1/ ; https://cgchannel.com/2026/04/plasticity-2026-1-is-out/ ; https://www.plasticity.xyz/studio]. MoI: not searched (gap).
|
||||
- Fusion (T-splines): a Form (T-spline) body must be closed to be combined as a solid; open form needs patch/stitch or Thicken; then Solid > Modify > Combine (Join / Keep Tools); Form tools Weld Vertices, Merge Edge join T-spline bodies at seams. Not confirmed whether Form joins a solid directly without conversion. [SEARCH https://autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/How-to-join-or-combine-bodies-in-Fusion-360.html ; https://forums.autodesk.com/t5/fusion-support-forum/how-to-join-bodies-and-forms-into-one-body/m-p/9148777/highlight/true]
|
||||
- Houdini: Subdivide SOP offers Mantra Catmull-Clark or OpenSubdiv Catmull-Clark; creases via crease attributes; material property "Render polygons as subdivision" subdivides only surfaces with that material (so organic and mechanical parts of one object can differ); SideFX staff: build sharp edges by PolyBevel/PolyExtrude/PolySplit when rendering with subd; nothing found on booleans feeding subd. [SEARCH https://sidefx.com/docs/houdini/render/subdivision.html ; https://www.sidefx.com/forum/post/198241]
|
||||
- ZBrush: Crease PG / polygroup-border creases with per-crease level (crisp for N levels then soften). [SEARCH https://novedge.com/blogs/design-news/zbrush-tip-crease-polygroup-borders-for-predictable-hard-surface-subdivision]
|
||||
- Seam cleanliness for shading/UV between a subd body and primitive inserts: no source found stating a canonical method beyond the practitioner list above (bevel at the junction, weighted normals / harden normals, UV seams on panel breaks, apply late). No source found for two-material/two-mesh split (subd body mesh + separate bevelled primitive meshes) as a convention. [SEARCH, absence]
|
||||
- Local prior art with related content: F:\Projects\aetheria-hull-materials-prior-art.md lines 145-150 (retopo tools, weighted normals + bevel references).
|
||||
|
||||
## 1. Fitting a subd surface to a dense/messy mesh
|
||||
|
||||
- Hoppe, DeRose, Duchamp, Halstead, Jin, McDonald, Schweitzer, Stuetzle, "Piecewise Smooth Surface Reconstruction", SIGGRAPH 1994 pp.295-302. Piecewise smooth subdivision-based surfaces fit to scattered range data; arbitrary topology; recovers creases and corners; unconstrained optimization; three phases (topological type estimation, mesh optimization, piecewise-smooth optimization). [FETCHED abstract https://hhoppe.com/proj/psrecon/ ; phases SEARCH]. PDFs listed, not read: https://graphics.pixar.com/people/derose/publications/PiecewiseSmooth ; https://grail.cs.washington.edu/wp-content/uploads/2015/08/hoppe-1994-pss.pdf
|
||||
- Marinov & Kobbelt, "Optimization methods for scattered data approximation with subdivision surfaces", Graphical Models 67(5) 2005 pp.452-473: fit against the exact limit surface (smooth basis functions per control vertex), closest-point parameterization on the limit (Newton + nonlinear minimization), parameter correction for L2; Solid Modeling 2004 version adds adaptive control-mesh restructuring to bound L-infinity. Also "Automatic Generation of Structure Preserving Multiresolution Models" (CGF 2005) and "A Robust Two-Step Procedure for Quad-Dominant Remeshing" (EG 2006; output coarse enough as Catmull-Clark control mesh). [SEARCH https://www.graphics.rwth-aachen.de/publication/0384/ ; https://diglib.eg.org/handle/10.2312/sm20041382]
|
||||
- Typical recipe in related work: dense mesh -> QEM simplification to coarse base control mesh -> optimize control vertices against distance. [SEARCH]
|
||||
- Ling, Wang, Yan, "Fitting Sharp Features with Loop Subdivision Surfaces", SGP/CGF 27(5) 2008: creases, darts, corners; QEM-simplified control mesh; nonlinear least squares; exact evaluation for Loop with all sharp-feature types; boundary treatment for mechanical objects. Loop (triangles), not Catmull-Clark. [SEARCH https://diglib.eg.org/handle/10.2312/CGF.v27i5pp1383-1391 ; PDF https://i.cs.hku.hk/GraphicsGroup/publications/pdf/sgp08ling.pdf unread]
|
||||
- Lavoue & Dupont, "A framework for quad/triangle subdivision surface fitting: application to mechanical objects", CGF 2007 [SEARCH titles; PDFs https://perso.liris.cnrs.fr/fdupont/publications/2007-CGF.pdf unread; fetch of the 2007-SIGGRAPH PDF returned binary, saved at C:\Users\Meta\.claude\projects\F--Projects-CultLib\1b994b80-e27e-42a8-8b75-ab8cb1dd9c54\tool-results\webfetch-1791668880080-fid2qh.pdf, unread].
|
||||
- Ma, Keates, Jiang, Kosinka: Loop subd fit to dense mesh, control-mesh connectivity from ridge-joined umbilics/ridge crossings; venue/year not confirmed. A 2017 CVM paper adds continuous per-edge sharpness to Loop and fits semi-sharp creases. [SEARCH https://link.springer.com/doi/10.1007/s41095-017-0088-2]
|
||||
- Kloiber & Augsdorfer, "Creating Curvature Adapted Subdivision Control Meshes from Scan Data", GRAPP 2020 pp.149-159: modified quad meshing gives curvature-varying quad-dominant mesh within an error bound, converted to control mesh whose limit approximates the scan. [SEARCH https://www.scitepress.org/Papers/2020/89896 ; PDF unread]
|
||||
- Patent US 12086939: cross field -> quad layout as cage -> optimize vertices to approximate input triangle mesh. [SEARCH https://patents.justia.com/patent/12086939]. UTS "fitmaps" Catmull-Clark construction (2011, closed). [SEARCH]
|
||||
- Neural Subdivision (Liu, Kim, Chaudhuri, Aigerman, Jacobson, SIGGRAPH 2020): learned vertex placement over Loop topology; refines a mesh, does not produce a cage. [SEARCH https://www.dgp.toronto.edu/projects/neural-subdivision]
|
||||
- ASDGen (Eurographics STAG 2025): generates quad meshes by CAD-like operations on a seed mesh, usable as Catmull-Clark control meshes. [SEARCH https://diglib7.eg.org/handle/10.2312/stag20251334 ; direct fetch 403]
|
||||
- Limit evaluation: Stam 1998 exact Catmull-Clark evaluation via eigenbasis, cost near bicubic spline [SEARCH https://courses.cs.umbc.edu/graduate/635/spring13/papers/stam98.pdf]; OpenSubdiv Far::LimitStencilTable evaluates points/derivatives on the limit, recomputable when base vertices change, construction can be costly [SEARCH https://graphics.pixar.com/opensubdiv/docs/far_tutorial_5_3.html]. Rust crate subdiv-kernels 0.1.0 has limit_eval with OpenSubdiv oracle tests [SEARCH https://docs.rs/subdiv-kernels], not examined.
|
||||
- No 2023-2025 paper found that learns Catmull-Clark cage vertices+connectivity end to end. [SEARCH, absence in one query]
|
||||
|
||||
## 2. Quad-dominant remeshing as cage seed
|
||||
|
||||
- Instant Meshes (Jakob, Tarini, Panozzo, Sorkine-Hornung, SIGGRAPH Asia 2015): orientation field then position field; GUI with brush guidance; page does not state output type or CLI. [FETCHED https://github.com/wjakob/instant-meshes]
|
||||
- QuadriFlow (Huang, Zhou, Niessner, Shewchuk, Guibas, SGP 2018 Best Paper): builds on Instant Meshes with network-flow + SAT constraints; ~4x fewer singularities; <10 s/model; 17,791 ShapeNet-subset objects; quad output; abstract cites Catmull-Clark rendering as a motivating application. [FETCHED https://stanford.edu/~jingweih/papers/quadriflow/]. CLI `./quadriflow -i in.obj -o out.obj -f N`, manifold triangle input, pure-quad output [SEARCH https://github.com/aschier/QuadriFlow]. Blender bundles extern/quadriflow.
|
||||
- Blender QuadriFlow bug reports: fails on disconnected triangles (T70608); crash on messy mesh, fixed with manifold/consistent-normals message (T70095); crashes ~40K-900K faces (#105953); scripted loop only works for first and last object (T71871); crash after UI-state script (T92355). [SEARCH https://developer.blender.org/T70608 ; T70095 ; T71871 ; T92355 ; https://projects.blender.org/blender/blender/issues/105953]. NOT FOUND: any source that quadriflow_remesh fails or needs UI under `--background`. One MCP project comment: bpy.ops "can be flaky in background" (informal) [SEARCH https://glama.ai/mcp/servers/@ShirshovDIM/retopoflow_blender_mcp/blob/78358fedc1d6d47808d380d331e176370b479c59/src/blender_handlers/remeshing.py]. bpy.ops.object.quadriflow_remesh signature not captured (API page fetch truncated).
|
||||
- Learned cross fields: NeurCross (arXiv 2405.13745), CrossGen (arXiv 2506.07020). [SEARCH]
|
||||
- No measurement found of any remesher's output as a hard-surface subd cage. Community: Quad Remesher cleaner flow than Instant Meshes, tuned organic, hard-surface varies (secondary; local memo F:\Projects\aetheria-hull-materials-prior-art.md lines 145-149).
|
||||
|
||||
## 3. Hard surface in subd: creases, holding loops, vs one-segment bevel + face-weighted normals
|
||||
|
||||
- Semi-sharp creases: DeRose, Kass, Truong, "Subdivision Surfaces in Character Animation", SIGGRAPH 1998 pp.85-94: sharp rules for a finite number of levels then smooth; creases without extra control vertices; Pixar patent US6489960. [SEARCH https://graphics.pixar.com/library/Geri/paper.pdf, unread]. OpenSubdiv Sdc::Crease: scheme-independent sharpness; semi-sharp decremented 1.0 per level; fractional blend when sharpness decays; Chaikin variant. [SEARCH https://graphics.pixar.com/opensubdiv/docs/doxy_html/a01312.html]. OpenSubdiv prose doc not retrievable (raw github 404; pixar.com redirect).
|
||||
- Blender Subdivision Surface modifier: Levels Viewport/Render; Use Limit Surface (Quality affects crease accuracy); Use Creases (edge weights, Shift-E); UV Smooth (None, Keep Corners, Keep Corners/Junctions, +Concave, Keep Boundaries, All); Boundary Smooth; Apply bakes subdivided geometry. [FETCHED https://projects.blender.org/blender/blender-manual/raw/branch/main/manual/modeling/modifiers/generate/subdivision_surface.rst]
|
||||
- Practitioner: Bevel (Limit Weight) then Weighted Normal (Corner Angle + Face Influence; bevel Face Strength Affected); apply before export since engines import baked custom normals; Polycount guide: thin one-segment bevel, silhouette bevels unweighted; one 80.lv artist uses Bevel+Weighted Normals first, subd modelling as slow fallback; counter-views on LOD cost of support geometry. [SEARCH https://origin.80.lv/articles/hard-surface-modeling-tips-tricks-for-creating-a-vintage-quirky-looking-gun ; https://polycount.com/discussion/234851/trim-bevels-on-mesh-with-weighted-normals]. Blender Weighted Normal manual not retrieved.
|
||||
- Shipping level: ZBrush-style workflows keep detail on top subd level, bake normal map to the lowest-level mesh; quads, support loops at hard features, triangulate at final export. [SEARCH https://novedge.com/blogs/design-news/zbrush-tip-baking-and-exporting-normal-maps-in-zbrush-a-step-by-step-guide]. No source found on a convention of shipping limit-surface-at-level-N with weighted normals versus baking. [SEARCH, absence]. Offline/renderer subdivision from the cage via OpenSubdiv/USD [KNOWLEDGE].
|
||||
|
||||
## 4. Models/tools authoring subd cages
|
||||
|
||||
- MeshGPT (Siddiqui 2023), MeshAnything (arXiv 2406.10163), PolyGen (Nash 2020): autoregressive transformers, triangle meshes. [SEARCH https://arxiv.org/pdf/2406.10163]
|
||||
- QuadGPT (arXiv 2509.21420, ICLR 2026): end-to-end autoregressive quad/quad-dominant meshes from point cloud; 1.1B hourglass transformer; tDPO. QuadLink (arXiv 2605.16813); PolyFlow (arXiv 2606.30673); MeshMosaic (2025). None found emitting subd cages or crease tags. [SEARCH https://arxiv.org/pdf/2509.21420]
|
||||
- LLM to Blender Python: LL3M (arXiv 2508.08228; multi-agent, BlenderRAG; abstract names BMesh, modifiers, shader nodes; no mention of subd) [FETCHED https://arxiv.org/abs/2508.08228]; BlenderLLM (Qwen2.5-Coder-7B, 12k BlendNet pairs, arXiv 2412.14203); CADBench 2026 (arXiv 2605.10873): specialized mesh-to-CAD beat code-generating VLMs; LLaMA-Mesh emits vertices/faces as text. [SEARCH]
|
||||
- Blender Python cages: BMesh edge crease via `bm.edges.layers.crease.verify()`; vertex crease also a layer; edge crease now an attribute (`crease_edge` per search summary, unverified); issue #101401 "Setting edge crease via PyAPI doesn't work" (resolution unread). [SEARCH https://blenderartists.org/t/edge-crease-toggle/611970 ; https://projects.blender.org/blender/blender/issues/101401]. Geometry Nodes Subdivision Surface node (5.2 manual): Edge Crease, Vertex Crease, Limit Surface, UV Smooth, Boundary Smooth; older manuals one Crease input; T103304 edge-crease bug fixed Jan 2023. [SEARCH https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/mesh/operations/subdivision_surface.html]
|
||||
|
||||
## 5. Mechanical sweeps fused into a subd body
|
||||
|
||||
- See section 0 and Polycount items: boolean-then-retopo vs cage-first with support loops. No source found on procedurally merging path sweeps into a Catmull-Clark body as parametric cage operations; ASDGen CAD-ops on a quad seed is nearest. [SEARCH, absence]
|
||||
|
||||
## 6. Plasticity (own section, per operator: "Plasticity is actually really cool")
|
||||
|
||||
- Kernel: Parasolid (booleans, fillets and other modeling ops); file translation via HOOPS Exchange; page says Parasolid also powers SolidWorks, NX, Shapr3D. Developer Nick Kallen. [FETCHED https://www.plasticity.xyz/product ; SEARCH https://en.wikipedia.org/wiki/Plasticity_(software)]
|
||||
- Modeling: NURBS surfaces with CV editing; page claims robust filleting on complex geometry with many aesthetic options; page does not explicitly say "NURBS solids" (Parasolid B-rep solids implied by kernel, not stated). Studio-only: xNURBS surface patching/blending G0/G1/G2 (Windows and Mac, not Linux), PolySplines mesh-to-NURBS G2 conversion, Class-A tools (Square, Align, Explicit Control). [FETCHED product + https://www.plasticity.xyz/studio]
|
||||
- Mesh export (OBJ): topology option Tris / Quads (quads and triangles) / Ngons; Density (single value that auto-sets others); Min width, Max width; Surface plane tolerance (max deviation in cm; docs suggest 0.01 low-poly, 0.0001 high-poly); Surface angle tolerance (radians). The topology setting is a tessellation of the B-rep, i.e. a quad-dominant (quads + triangles) option, not a quad-remesh; quality of that quad output for subd or game use not evidenced. [SEARCH https://doc.plasticity.xyz/plasticity-essentials/export-obj ; page body not fetched]. Free trial exports "low resolution" OBJ/STL only. [FETCHED product]
|
||||
- Import/export formats (per product-page summary, internally inconsistent between its table and prose): trial import OBJ, STL, 3MF, FBX, STEP, PNG/JPG, JSON, SVG; Indie adds X_T, X_B (import and export), STEP, 3MF, SVG export; Studio adds SAT, IGES, 3DM (Rhino) import, DWG/DXF import (Windows). Native `.plasticity` extension; a third-party guide says it holds Parasolid-based solids/surfaces/curves/organization and no parametric history; no official spec found. [FETCHED product ; SEARCH https://www.renderhub.com/guides/3d-file-formats/plasticity (third party)]
|
||||
- Scripting/automation: none found. No API, plugin SDK, scripting language or command-line/batch mode appears in product page, studio page, Wikipedia summary or search. The only programmatic surface found is the Blender bridge's local server (below). [FETCHED/SEARCH, absence]. Plasticity Studio doc pages for any API not fetched (gap).
|
||||
- Blender Bridge add-on: requires Blender 4.1+ (Windows/macOS/Linux) and the Plasticity server enabled (Preferences > Server > Enabled); streams mesh data, no temp files or export dialogs; Live Link toggle pushes every Plasticity edit to Blender; Plasticity groups become Blender collections (scoped by document name); modifiers survive refresh; tolerance, edge flow and polygon density adjustable from a Plasticity panel in Blender; "Merge UV Seams" utility on imported geometry; docs do not state transport protocol, normals/UV/material transfer, or quad-only output. Free with every license; PolySplines (Blender subd to NURBS) is Studio only. Early tests: ~25 s initial load on a complex assembly, 1-3 s live updates. Introduced in Plasticity 1.3 (Oct 2023), then experimental. [FETCHED https://doc.plasticity.xyz/blender/introduction-blender-bridge ; SEARCH https://www.cgchannel.com/2023/10/nick-kallen-ships-plasticity-1-3/ ; https://80.lv/articles/plasticity-1-3-s-blender-bridge-demonstrated/]. Add-on source repo/licence: not found.
|
||||
- Licence and price (facts as stated 2026 on product page): free 30-day trial, 1 machine, no commercial use; Indie $175 plus tax, 1 person, commercial use allowed, up to 2 machines, 12 months updates, perpetual; Studio $299 plus tax, up to 4 machines, 12 months updates and beta access, companies over 10 employees must use Studio (wording ambiguous); Enterprise custom with air-gapped licences; Academic free non-commercial (Indie features). Studio page itself lists no prices and says node-locked, up to 4 machines. [FETCHED product + studio]. Platforms: Windows, macOS, Linux. Plasticity 2026.1 (April 2026) added hidden lines and PolySplines. [SEARCH https://cgchannel.com/2026/04/plasticity-2026-1-is-out/]
|
||||
- Plasticity docs: https://doc.plasticity.xyz/ (only export-obj and Blender bridge pages touched).
|
||||
|
||||
## 6b. Plasticity, short form (operator: "Expensive though. I don't want to rely on code we can't own" -> prior art only)
|
||||
- Does well (per section 6): Parasolid B-rep solids with robust fillets, G2 blends (Studio), a quads/tris/ngons OBJ tessellation option with deflection controls, free Blender live-link. Closed source, commercial licence, no scripting/API found. [FETCHED/SEARCH as in section 6]
|
||||
|
||||
## 7. Open alternatives an agent could drive (solids, fillets, sweeps)
|
||||
|
||||
- OpenCASCADE Technology (OCCT): LGPL-2.1 with the "Open CASCADE Exception 1.0" (distributing object code that uses OCCT headers under own terms with prominent notice) for 6.7.0+; earlier 6.6.0- under OCCT-PL; commercial licence also offered. [SEARCH https://spdx.org/licenses/OCCT-exception-1.0.html ; https://dev.opencascade.org/content/open-cascade-technology-changes-its-license-gnu-lgpl]. Kernel with B-rep booleans, fillets, sweeps, lofts [KNOWLEDGE]. Meshing: BRepMesh_IncrementalMesh with linear and angular deflection (plus interior variants); tracker statements that it does not guarantee tolerance, and a maintainer saying it is designed for visualization facets and is "definitely not a good choice" for regular tessellation; a 7.8.0 regression report of meshing failure on a cone (deflections 0.01/0.5). Example presets coarse 0.5/1.0, medium 0.1/0.5, fine 0.02/0.2. Output triangles only. [SEARCH https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html ; https://dev.opencascade.org/content/mesh-triangulation-quality ; https://cad.pyvista.org/examples/06_advanced/custom_tessellation.html ; https://tracker.dev.opencascade.org/view.php?id=33691]. Scripting: C++ API; Python via OCP wrapper (used by CadQuery and build123d) [SEARCH].
|
||||
- CadQuery: Apache-2.0; OCCT-based; lofts, sweeps, fillets; exports STEP/STL/AMF/3MF; glTF export only for assemblies (single solid must be wrapped); tessellation tolerance (linear 0.1, angular 0.1 default) shown on AMF/3MF exporters, unconfirmed for glTF. Python scripting API (Algebra/fluent). [SEARCH https://cadquery.readthedocs.io/en/stable/importexport.html ; https://pypi.org/project/cadquery/0.5.1]
|
||||
- build123d: Apache-2.0; built on Open Cascade, derived from portions of CadQuery; fillet and chamfer in README examples; extrude/sweep/loft/revolve/boolean per docs; multi-section sweep may fail, loft suggested as alternative; docs advise fillets late in design, 2D fillets fail less than 3D; export_step, export_stl, import_svg on README (glTF/3MF not on README page); Algebra Mode and Builder Mode Python API, Python 3.11-3.14, typed; ~3.4k stars, 3,314 commits, "under active development". [FETCHED https://github.com/gumyr/build123d ; SEARCH https://build123d.readthedocs.io/en/stable/tips.html]
|
||||
- truck (ricosjp, Rust): Apache-2.0; B-rep with NURBS; truck-shapeops booleans; truck-meshalgo tessellation; truck-stepio crate; truck-js WASM wrapper; wgpu rendering; fillets not mentioned on the page; docs reference v0.6.x; no latest-commit date on captured page. ~1.6k stars, 35 open issues. [FETCHED https://github.com/ricosjp/truck]
|
||||
- Fornjot (Rust): 0BSD; README says "This project has been shut down. Its goals were never reached."; repo archived June 19, 2026; "early-stage and experimental", unsuited for real-world use; no fillet/sweep/boolean listed; fj-export names 3MF. [FETCHED https://github.com/hannobraun/fornjot]
|
||||
- Manifold (elalish): Apache-2.0; guaranteed-manifold mesh booleans; bindings C++, C, Python (manifold3d), JS/TS (WASM, manifold-3d), Rust (manifold-csg external; native manifold-rust port), C#, others external; arbitrary vertex properties and original-ID tracking; README recommends 3MF, or glTF with EXT_mesh_manifold, over STL; refinement functions for smooth interpolation keeping flat faces flat with sharp or small-radius edges. No fillet feature. [FETCHED https://github.com/elalish/manifold]. API header (3.0): SmoothOut(minSharpAngle=52.5, minSmoothness=0) (older docs default 60), Refine, RefineToLength, RefineToTolerance, SmoothByNormals; Smooth(MeshGL, sharpenedEdges) with per-halfedge Smoothness 0 (sharp) to 1 (smooth), halfedge index = 3*triangle + local; without tangents refined triangles stay coplanar. Constructors include extrude/revolve/CrossSection per ManifoldCAD docs [KNOWLEDGE, not on fetched README; unverified]. [SEARCH https://manifoldcad.org/docs/html/manifold_8h_source.html ; https://manifoldcad.org/docs/html/group___structs.html]. Python keyword names not confirmed.
|
||||
- libfive: library, C API and Python bindings MPL-2.0; Guile bindings and Studio GPL-2.0+; implicit f-rep modeling; meshing described as watertight, manifold, hierarchical, feature-preserving triangle meshes (algorithm not named on page); fillets/blends not mentioned on page (blend/smooth-union functions in stdlib [KNOWLEDGE, unverified]); copyright 2015-2021, 103 open issues, third-party Rust/Unity/Lisp bindings. [FETCHED https://github.com/libfive/libfive]
|
||||
- Blender (GPL, scripts carry GPL notices) tools: Bevel modifier and bmesh.ops.bevel (bevel tool, modifier and bmesh operator refactored to matching parameters; modifier API: width, angle_limit, limit_method, affect, segments; per-edge weights); Curve to Mesh node (profile swept along a curve) in Geometry Nodes; Subdivision Surface modifier/node with creases (section 3, 4); Boolean modifier; Skin and Solidify modifiers (Skin does not work through Geometry Nodes per a forum thread; Solidify has a reported bug on curve-derived geometry). Headless: `blender --background [file] --python script.py`, `--factory-startup`, `--` passes args. Output is polygon meshes with quads/ngons possible, custom normals, UVs; this is the only item here producing game-ready UV/normal data natively. [SEARCH https://docs.blender.org/api/5.3/bpy.types.BevelModifier.html ; https://projects.blender.org/archive/blender-archive/src/commit/24b47c00eaabe12b5262b59a185da154a477bd98/release/scripts/templates_py/background_job.py ; https://blenderartists.org/t/geometry-nodes-convert-curve-to-mesh-to-work-with-skin-modifier/1605796]. bmesh.ops.bevel argument names not fetched.
|
||||
- Cross-cutting: none of the OCCT front ends or Manifold yields quads from a B-rep or UVs/face-weighted normals directly on the sources read; UV/normal handling for OCCT meshes not found. [SEARCH, absence]
|
||||
|
||||
## Gaps
|
||||
- Unread full texts: Hoppe 1994, Ling 2008, Lavoue-Dupont 2007, Kloiber 2020, DeRose 1998, QuadriFlow body, QuadGPT body, ASDGen (403).
|
||||
- OpenSubdiv prose docs and Blender Weighted Normal manual not retrieved. MoI3D not searched. No Plasticity subd+NURBS single-document workflow found.
|
||||
- Blender quadriflow_remesh signature and background-mode failure: no corroboration; no local Blender run made.
|
||||
- No evidence on quad remesher quality as hard-surface cage; none on limit-surface-at-level-N shipping convention; none on a standard seam method between subd body and primitive inserts.
|
||||
- Search-summary titles/venues (esp. Ma et al.) need confirming before citation.
|
||||
Loading…
Reference in a new issue