Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·part ofpackage ZeroBlender.package·originates fromworld 240544fe-7…●1problem

curves

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->

by◐Deata·posted 16d ago
What it does

curves

<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->

TODO: describe this module.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

Curve and text object evaluation with Blender semantics: POLY/BEZIER splines, bevel_depth/bevel_resolution/extrude profiles, 2D fills and 3D caps. Output is a polygon mesh { vertices, faces, face_mat?, smooth }.

add(a: ?, b: ?) → void

argtypedescription
a?
b?

sub(a: ?, b: ?) → void

argtypedescription
a?
b?

mul(a: ?, s: ?) → void

argtypedescription
a?
s?

dot(a: ?, b: ?) → void

argtypedescription
a?
b?

cross(a: ?, b: ?) → void

argtypedescription
a?
b?

len(a: ?) → void

argtypedescription
a?

unit(a: ?) → void

argtypedescription
a?

reversed(t: ?) → void

argtypedescription
t?

area(vs: ?, f: ?) → void

argtypedescription
vs?
f?

new(name: ?, kind: ?) → void

argtypedescription
name?
kind?

addPoints(sp: ?, n: ?) → void

argtypedescription
sp?
n?

newSpline(kind: ?) → void

argtypedescription
kind?

handles(sp: ?) → void

Blender's AUTO / VECTOR handle rules; a missing neighbour is mirrored.

argtypedescription
sp?

sample(sp: ?, cu: ?, flat: ?) → void

argtypedescription
sp?
cu?
flat?

push(p: ?, r: ?, d: ?) → void

argtypedescription
p?
r?
d?

profile(cu: ?) → void

Cross-section as {u, v} offsets; second value: whether it is a closed loop. Round bevel: 4+2r points. Bevel + extrude: four quarter arcs of r+1 segments, split at 0 and 180 degrees by the extrude (Blender's point layout).

argtypedescription
cu?

frames(pts: ?, cyclic: ?, is2D: ?, planar: ?) → void

Per-point tangent, profile axes (U, V) and 2D miter scale. 3D curves use a minimum-twist frame; 2D curves offset within their XY plane.

argtypedescription
pts?
cyclic?
is2D?
planar?

nb(i: ?) → void

argtypedescription
i?

glyphSplines(cu: ?) → void

Text as filled 2D bezier outlines (the curve pipeline Blender uses), which is what bevel_depth on text needs.

argtypedescription
cu?

alignShift(cu: ?, lo: ?, hi: ?) → void

argtypedescription
cu?
lo?
hi?

textOutline(cu: ?) → void

argtypedescription
cu?

text(cu: ?) → void

argtypedescription
cu?

signedArea(pts: ?) → void

argtypedescription
pts?

contains(pt: ?, pts: ?) → void

argtypedescription
pt?
pts?

toMesh(cu: ?) → void

argtypedescription
cu?

vert(p: ?) → void

argtypedescription
p?

face(ids: ?, mat: ?) → void

argtypedescription
ids?
mat?

arc(from: ?, to: ?, z0: ?, skipFirst: ?) → void

argtypedescription
from?
to?
z0?
skipFirst?

cap(ring: ?, dir: ?) → void

argtypedescription
ring?
dir?

capAt(z: ?, dir: ?) → void

argtypedescription
z?
dir?

profileFrom(bcu: ?) → void

Profile of a bevel object: its first spline, sampled like any curve.

argtypedescription
bcu?

taperFrom(tcu: ?) → void

Taper: the taper curve's Y along its own parameter (index-uniform), as Blender evaluates it.

argtypedescription
tcu?

taperAt(ys: ?, t: ?) → void

argtypedescription
ys?
t?

serialize(cu: ?) → void

argtypedescription
cu?

deserialize(d: ?) → void

argtypedescription
d?

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

Showing up to 3 levels deep. Open a part to see what it holds further down.

8+items
▣
module · born here
❒asset
# polygonTopology <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. --> TODO: describe this module.
▲ 0↑ born
❒
package · born here
❒asset
# ZeroBlender Blender-style modeling inside Zero. Install this package and you get the whole surface: the `.zblend` document type, the tools that edit it, the Python/bpy runtime behind them, the layer previews live in, and the workflow that drives a modeling job to the end. ## Contents | Path | What it is | |---|---| | `zblend.assetType/` | The `.zblend` document (Zero's `.blend`): editable `scene.json`, history, images, and a live `output.bundle`. Scene-instantiable, previewed, searchable. Its ref methods open and edit documents (below); `M.modules` exposes every module here to instances. | | `blender.toolbox/` | Blender MCP-compatible tools: `execute_blender_code`, `get_scene_info`, `get_object_info`, `get_viewport_screenshot`, `bpy_api_lookup`, `get_addon_status`, `compare_to_reference`. `api.json` is the implemented bpy surface. | | `modules/blenderSession` | The bpy/bmesh/mathutils session: objects, meshes, modifiers, materials, viewport, flush to the document and bundle. | | `modules/pythonParser`, `pythonRuntime` | The Python subset the scripts run in (Luau-hosted, not CPython). | | `modules/animation`, `rigging` | Armatures, pose, vertex groups, ARMATURE deform, auto weights, keyframes/actions/F-Curves, constraints, IK, drivers, NLA; clip baking. | | `modules/sceneOps` | Empties, duplicates, collections, collection instances, `zero_instance`, `origin_set`, cursor, snapping. | | `modules/curves`, `meshOps`, `polygonTopology`, `xform` | Curve/text meshing, edit-mode operators, topology and evaluation, matrix math. | | `modules/referenceCompare` | Silhouette scoring against a reference image. | | `modules/bpy`, `hardSurface`, `kestrel` | Older core geometry layer and hard-surface helpers used by the session. | | `workspace/ModelingWorkspace.scene` | Additive layer holding document previews, on render layer `modelingWorkspace` (hidden from the editor camera, drawn by screenshots). | | `model.workflow/` | Multi-pass modeling job: reference → model → critic/builder rounds → finish. | | `modeling.agentSkill/` | The `modeling` skill that starts the workflow. | ## Usage ```luau -- Make or open a document and edit it local doc = asset.create("zblend", "Lantern", { folder = "models" }) doc:run([[import bpy bpy.ops.mesh.primitive_cylinder_add(radius=0.1, depth=0.3)]]) doc:screenshot("ISO") doc:sceneInfo() doc:open() -- load as a live session, returns its name -- Place it (live: placed copies follow edits and play its clips) doc:instantiate(entity.find("Shelf")) -- Frozen copy doc:exportBundle("/zero/source/models/Lantern_v1.bundle") ``` Agents use the `blender` toolbox directly with `session="<folder>/<Name>"`, or start the `model` workflow for a full modeling job (`zero workflow start --name model --args '{"subject":"..."}'`). Documents default to `modeling/models/<name>.zblend`; user data (models, references, reports) is not part of the package.
▲ 0↑ born
backing path · ZeroBlender.package/modules/curves.module

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

These counts cover only the parts this page shows. Problems on the parts it leaves out are not counted here.

1+problem

Inside

1 problem across 1 item
●
dep.unresolved · L4
could not resolve `~.modules.polygonTopology`
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.