meshOps
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->
meshOps
<!-- 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/v2Polygon-level edit-mode operators with Blender semantics. They work on { vertices = {{x,y,z}}, faces = {{0-based ids}}, loose_edges = {{a,b}} } and keep n-gons, so the result stays an editable polygon mesh.
add(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
sub(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
mul(a: ?, s: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| s | ? |
dot(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
cross(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
len(a: ?) → void
| arg | type | description |
|---|---|---|
| a | ? |
unit(a: ?) → void
| arg | type | description |
|---|---|---|
| a | ? |
key(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
newell(vs: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| vs | ? | |
| f | ? |
centroid(vs: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| vs | ? | |
| f | ? |
reversed(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
dedupe(ids: ?) → void
Drop consecutive duplicate ids (cyclically).
| arg | type | description |
|---|---|---|
| ids | ? |
edgeMap(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
get(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
compact(mesh: ?, keep: ?) → void
Remove vertices for which keep(i) is false (default: unreferenced), renumbering everything.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| keep | ? |
pruneLoose(mesh: ?) → void
Loose edges that became face edges are no longer loose.
| arg | type | description |
|---|---|---|
| mesh | ? |
faceLocator(vs: ?, faces: ?) → void
Returns fn(point, normal) -> index of the nearest face of (vs, faces).
| arg | type | description |
|---|---|---|
| vs | ? | |
| faces | ? |
remapMaterials(oldVs: ?, oldFaces: ?, oldMat: ?, mesh: ?) → void
Material indices for new faces, taken from the nearest face of the old mesh.
| arg | type | description |
|---|---|---|
| oldVs | ? | |
| oldFaces | ? | |
| oldMat | ? | |
| mesh | ? |
fan(v: ?, incident: ?, faces: ?, E: ?) → void
Ordered fan of faces around vertex v; nil when v is on an open boundary.
| arg | type | description |
|---|---|---|
| v | ? | |
| incident | ? | |
| faces | ? | |
| E | ? |
cornerPatch(vs: ?, ring: ?, segments: ?, S: ?, R: ?, emit: ?) → void
Blender corner pattern for three bevelled edges meeting: concentric quad rings closed by a centre vertex (even segments) or triangle (odd).
| arg | type | description |
|---|---|---|
| vs | ? | |
| ring | ? | |
| segments | ? | |
| S | ? | |
| R | ? | |
| emit | ? |
newv(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
at(i: ?) → void
| arg | type | description |
|---|---|---|
| i | ? |
place(q: ?) → void
| arg | type | description |
|---|---|---|
| q | ? |
ia(i: ?) → void
| arg | type | description |
|---|---|---|
| i | ? |
bevelEdges(mesh: ?, selKeys: ?, width: ?, segments: ?) → void
Edit-mode edge bevel (offset_type OFFSET, circular profile). selKeys: set of edge keys. Returns indices (1-based) of the new bevel faces.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| selKeys | ? | |
| width | ? | |
| segments | ? |
newv(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
ptId(v: ?, p: ?) → void
| arg | type | description |
|---|---|---|
| v | ? | |
| p | ? |
emit(ids: ?, nn: ?, from: ?) → void
| arg | type | description |
|---|---|---|
| ids | ? | |
| nn | ? | |
| from | ? |
e2(ids: ?) → void
| arg | type | description |
|---|---|---|
| ids | ? |
bevelVerts(mesh: ?, vset: ?, offset: ?) → void
Edit-mode vertex bevel (affect='VERTICES'), one segment.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| vset | ? | |
| offset | ? |
onEdge(v: ?, w: ?) → void
| arg | type | description |
|---|---|---|
| v | ? | |
| w | ? |
loopcut(mesh: ?, startKey: ?, cuts: ?, slide: ?) → void
Loop cut across the quad ring through edge startKey. Returns the new vertex ids.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| startKey | ? | |
| cuts | ? | |
| slide | ? |
walk(a: ?, b: ?, fi: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| fi | ? |
nb(i: ?, other: ?) → void
| arg | type | description |
|---|---|---|
| i | ? | |
| other | ? |
between(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
bridge(mesh: ?, edgeKeys: ?, faceSet: ?) → void
Bridge two edge loops (selected edges, or the boundaries of selected faces, which are removed). Returns new face indices, or nil plus Blender's message.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| edgeKeys | ? | |
| faceSet | ? |
walk(start: ?, closed: ?) → void
| arg | type | description |
|---|---|---|
| start | ? | |
| closed | ? |
rotator(center: ?, axis: ?, angle: ?) → void
| arg | type | description |
|---|---|---|
| center | ? | |
| axis | ? | |
| angle | ? |
spin(mesh: ?, Ek: ?, F: ?, steps: ?, angle: ?, center: ?, axis: ?) → void
Spin selected geometry. V/Ek/F: selected vertex set, edge-key set, face set (1-based). Returns the vertex ids of the last copy.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| Ek | ? | |
| F | ? | |
| steps | ? | |
| angle | ? | |
| center | ? | |
| axis | ? |
weld(mesh: ?, thr: ?, onlySet: ?) → void
Merge vertices closer than thr. onlySet restricts merging to those ids. Duplicate faces left behind are removed, keeping one. Returns the count removed.
| arg | type | description |
|---|---|---|
| mesh | ? | |
| thr | ? | |
| onlySet | ? |
screw(vs: ?, faces: ?, loose: ?, o: ?) → void
SCREW modifier on a polygon mesh; sweeps every edge around the object axis.
| arg | type | description |
|---|---|---|
| vs | ? | |
| faces | ? | |
| loose | ? | |
| o | ? |
addEdge(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
smartProject(vs: ?, faces: ?, sel: ?, out: ?, limit: ?, margin: ?) → void
Smart UV project: faces grouped by projection normal (angle limit), split into connected islands, projected flat, then packed column-first with one uniform scale. out[fi] = { {u,v}, ... } per face corner, for the selected faces.
| arg | type | description |
|---|---|---|
| vs | ? | |
| faces | ? | |
| sel | ? | |
| out | ? | |
| limit | ? | |
| margin | ? |
place(sc: ?, commit: ?) → void
| arg | type | description |
|---|---|---|
| sc | ? | |
| commit | ? |
pip(x: ?, y: ?, poly: ?) → void
Knife project: cutter edges projected along the view split the faces they cross (visible faces, or all with cut_through). Faces enclosed by a cutter loop are returned (1-based) for selection. A loop entirely inside a face is joined to its boundary by two bridge edges, as Blender does.
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? | |
| poly | ? |
segx(p1: ?, p2: ?, q1: ?, q2: ?) → void
| arg | type | description |
|---|---|---|
| p1 | ? | |
| p2 | ? | |
| q1 | ? | |
| q2 | ? |
rayTri(O: ?, D: ?, a: ?, b: ?, c: ?) → void
| arg | type | description |
|---|---|---|
| O | ? | |
| D | ? | |
| a | ? | |
| b | ? | |
| c | ? |
projector(u: ?, v: ?, w: ?, eye: ?, ortho: ?) → void
View projector from a view rotation's axes (u right, v up, w back), eye, ortho flag.
| arg | type | description |
|---|---|---|
| u | ? | |
| v | ? | |
| w | ? | |
| eye | ? | |
| ortho | ? |
proj(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
ray(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
dirAt( ) → void
toEye( ) → void
proj(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
ray(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
dirAt(c: ?) → void
| arg | type | description |
|---|---|---|
| c | ? |
toEye(c: ?) → void
| arg | type | description |
|---|---|---|
| c | ? |
knifeProject(mesh: ?, o: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| o | ? |
P(id: ?) → void
| arg | type | description |
|---|---|---|
| id | ? |
insideCut(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
centroidW(f: ?) → void
| arg | type | description |
|---|---|---|
| f | ? |
between(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
uvAt(fi: ?, w: ?) → void
| arg | type | description |
|---|---|---|
| fi | ? | |
| w | ? |
det(q: ?) → void
| arg | type | description |
|---|---|---|
| q | ? |
solve(b: ?) → void
| arg | type | description |
|---|---|---|
| b | ? |
push(loop: ?, fi: ?, isIn: ?) → void
| arg | type | description |
|---|---|---|
| loop | ? | |
| fi | ? | |
| isIn | ? |
pos(id: ?) → void
| arg | type | description |
|---|---|---|
| id | ? |
inF(q: ?) → void
| arg | type | description |
|---|---|---|
| q | ? |
link(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
inner(ci: ?) → void
| arg | type | description |
|---|---|---|
| ci | ? |
d2(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
walk(a0: ?, b0: ?) → void
| arg | type | description |
|---|---|---|
| a0 | ? | |
| b0 | ? |
Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ 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".
Scoped to this part · feeds back into the world's score.