blenderSession
<!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. -->
blenderSession
<!-- 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/v2Blender MCP compatibility session. The public language is Python/bpy.
array(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
native(fn: ?) → void
| arg | type | description |
|---|---|---|
| fn | ? |
arg(a: ?, k: ?, n: ?, name: ?, default: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| k | ? | |
| n | ? | |
| name | ? | |
| default | ? |
vecOf(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
trackQuat(v: ?, track: ?, up: ?) → void
mathutils Vector.to_track_quat: Blender's vec_to_quat (math_rotation.cc), on the negated vector.
| arg | type | description |
|---|---|---|
| v | ? | |
| track | ? | |
| up | ? |
vlen(d: ?) → void
| arg | type | description |
|---|---|---|
| d | ? |
VGET(key: ?, V: ?) → void
| arg | type | description |
|---|---|---|
| key | ? | |
| V | ? |
VSET(key: ?, value: ?, V: ?) → void
| arg | type | description |
|---|---|---|
| key | ? | |
| value | ? | |
| V | ? |
VITER(V: ?) → void
| arg | type | description |
|---|---|---|
| V | ? |
VBIN(op: ?, b: ?, V: ?) → void
| arg | type | description |
|---|---|---|
| op | ? | |
| b | ? | |
| V | ? |
VRBIN(op: ?, a: ?, V: ?) → void
| arg | type | description |
|---|---|---|
| op | ? | |
| a | ? | |
| V | ? |
vector(data: ?, onChange: ?) → void
| arg | type | description |
|---|---|---|
| data | ? | |
| onChange | ? |
v3(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
normal(vertices: ?, f: ?) → void
| arg | type | description |
|---|---|---|
| vertices | ? | |
| f | ? |
orient(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
new(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
unique(wanted: ?, collection: ?) → void
| arg | type | description |
|---|---|---|
| wanted | ? | |
| collection | ? |
findObject(proxy: ?) → void
| arg | type | description |
|---|---|---|
| proxy | ? |
sync(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
activate(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
active( ) → void
pull(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
newObject(name: ?, mesh: ?) → void
| arg | type | description |
|---|---|---|
| name | ? | |
| mesh | ? |
hostPath(p: ?) → void
Replays of real Blender sessions: paths on the host machine are redirected into the document (S.hostRoot), and a fresh document can be given Blender's startup scene (Camera and Light here; the replay adds the Cube).
| arg | type | description |
|---|---|---|
| p | ? |
seedBlenderDefaults( ) → void
worldMatrix(o: ?, depth: ?) → void
Blender world matrix: parent world @ matrix_parent_inverse @ basis.
| arg | type | description |
|---|---|---|
| o | ? | |
| depth | ? |
parentWorld(o: ?, depth: ?) → void
The frame a child hangs from: the parent's world, or a bone's tail for BONE parenting.
| arg | type | description |
|---|---|---|
| o | ? | |
| depth | ? |
setBasis(o: ?, m: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| m | ? |
setWorld(o: ?, W: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| W | ? |
unparentKeep(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
zeroTransform(W: ?) → void
Zero entity transform (basis (x,y,z) -> (x,z,-y)) for a Blender matrix.
| arg | type | description |
|---|---|---|
| W | ? |
objectType(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
curveMesh(o: ?) → void
A curve/text object renders through a mesh derived from its curve data.
| arg | type | description |
|---|---|---|
| o | ? |
ref(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
uvSync(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
uvRenderData(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
resetUV(mesh: ?) → void
Blender's default UV for a new first layer: each quad fills 0..1; other n-gons sit on a unit circle.
| arg | type | description |
|---|---|---|
| mesh | ? |
copyUV(d: ?) → void
| arg | type | description |
|---|---|---|
| d | ? |
seq(name: ?, items: ?, lookup: ?, at: ?) → void
`at(i)` (0-based) answers one element without building the whole list: per-element access inside a loop must stay O(1).
| arg | type | description |
|---|---|---|
| name | ? | |
| items | ? | |
| lookup | ? | |
| at | ? |
q8(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
imageProxy(img: ?) → void
| arg | type | description |
|---|---|---|
| img | ? |
touch( ) → void
setAll(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
textureProxy(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
sampleTex(t: ?, u: ?, v: ?) → void
Blender image texture lookup: nearest = floor(u*W); interpolated = bilinear with texel centres at u*W-0.5. Pixels are stored bottom row first, as in Blender.
| arg | type | description |
|---|---|---|
| t | ? | |
| u | ? | |
| v | ? |
wrap(i: ?, n: ?) → void
| arg | type | description |
|---|---|---|
| i | ? | |
| n | ? |
px(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
mix(a: ?, b: ?, c: ?, d: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| c | ? | |
| d | ? |
decodeCpu(cpu: ?) → void
| arg | type | description |
|---|---|---|
| cpu | ? |
encodeImage(img: ?, rep: ?) → void
rep > 1 blows each texel up to rep x rep (crisp 'Closest' look under any sampler).
| arg | type | description |
|---|---|---|
| img | ? | |
| rep | ? |
b(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
safeName(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
imageTexture(img: ?, folder: ?, cache: ?, filter: ?) → void
Texture asset for an image, rewritten only when its pixels changed.
| arg | type | description |
|---|---|---|
| img | ? | |
| folder | ? | |
| cache | ? | |
| filter | ? |
packRM(pk: ?, folder: ?, cache: ?, matName: ?) → void
glTF metallic-roughness packing: G = roughness, B = metallic.
| arg | type | description |
|---|---|---|
| pk | ? | |
| folder | ? | |
| cache | ? | |
| matName | ? |
sample(im: ?, x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| im | ? | |
| x | ? | |
| y | ? |
shaderPath(id: ?) → void
| arg | type | description |
|---|---|---|
| id | ? |
parseDefault(d: ?) → void
| arg | type | description |
|---|---|---|
| d | ? |
shaderSchema(id: ?) → void
| arg | type | description |
|---|---|---|
| id | ? |
zeroIns(n: ?) → void
| arg | type | description |
|---|---|---|
| n | ? |
newNode(mat: ?, bl: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? | |
| bl | ? |
setZeroShader(n: ?, id: ?) → void
| arg | type | description |
|---|---|---|
| n | ? | |
| id | ? |
ensureGraph(mat: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? |
sockProxy(mat: ?, n: ?, sname: ?, isOut: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? | |
| n | ? | |
| sname | ? | |
| isOut | ? |
nodeProxy(mat: ?, n: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? | |
| n | ? |
sockets(get: ?, isOut: ?) → void
| arg | type | description |
|---|---|---|
| get | ? | |
| isOut | ? |
materialSpec(mat: ?) → void
Zero PBR properties and texture slots for a material's node graph.
| arg | type | description |
|---|---|---|
| mat | ? |
src(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
img(l: ?) → void
| arg | type | description |
|---|---|---|
| l | ? |
materialShader(mat: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? |
materialSig(mat: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? |
applyMaterial(ref: ?, mat: ?, texFolder: ?, cache: ?) → void
| arg | type | description |
|---|---|---|
| ref | ? | |
| mat | ? | |
| texFolder | ? | |
| cache | ? |
serializeGraph(mat: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? |
restoreGraph(mat: ?, g: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? | |
| g | ? |
materialProxy(mat: ?) → void
| arg | type | description |
|---|---|---|
| mat | ? |
linkProxy(l: ?) → void
| arg | type | description |
|---|---|---|
| l | ? |
vertexProxy(mesh: ?, i: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| i | ? |
loopStarts(mesh: ?) → void
Face-corner (loop) numbering, as Blender's mesh.loops: faces in order, corners in order.
| arg | type | description |
|---|---|---|
| mesh | ? |
locateLoop(mesh: ?, li: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| li | ? |
newell(pts: ?) → void
| arg | type | description |
|---|---|---|
| pts | ? |
polyTris(pts: ?) → void
Triangles (1-based corner positions) covering one polygon: quads split 1-3 as Blender does, ngons ear-clipped.
| arg | type | description |
|---|---|---|
| pts | ? |
loopTris(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
loopTriProxy(mesh: ?, i: ?, t: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| i | ? | |
| t | ? |
corners( ) → void
deepCopy(v: ?, seen: ?) → void
| arg | type | description |
|---|---|---|
| v | ? | |
| seen | ? |
faceProxy(mesh: ?, i: ?, bm: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| i | ? | |
| bm | ? |
center( ) → void
edgeList(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
addEdge(a: ?, b: ?, fi: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| fi | ? |
edgeProxy(mesh: ?, e: ?, bm: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| e | ? | |
| bm | ? |
getSel( ) → void
setSel(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
meshProxy(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
nv(li: ?) → void
| arg | type | description |
|---|---|---|
| li | ? |
loopProxy(li: ?, fi: ?, c: ?) → void
| arg | type | description |
|---|---|---|
| li | ? | |
| fi | ? | |
| c | ? |
layerProxy(l: ?) → void
| arg | type | description |
|---|---|---|
| l | ? |
idx( ) → void
uvLoop(fi: ?, k: ?) → void
| arg | type | description |
|---|---|---|
| fi | ? | |
| k | ? |
byKey(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
addModifier(o: ?, name: ?, typ: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| name | ? | |
| typ | ? |
modifierProxy(mod: ?) → void
| arg | type | description |
|---|---|---|
| mod | ? |
objectProxy(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
rec(p: ?) → void
| arg | type | description |
|---|---|---|
| p | ? |
getitem(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
setitem(k: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| k | ? | |
| v | ? |
pointProxy(sp: ?, p: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? | |
| p | ? |
pointSeq(sp: ?, want: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? | |
| want | ? |
splineProxy(sp: ?) → void
| arg | type | description |
|---|---|---|
| sp | ? |
curveProxy(cu: ?) → void
| arg | type | description |
|---|---|---|
| cu | ? |
qmul(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
qaxis(ax: ?, ang: ?) → void
| arg | type | description |
|---|---|---|
| ax | ? | |
| ang | ? |
eulerQuat(e: ?) → void
| arg | type | description |
|---|---|---|
| e | ? |
qrot(q: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| q | ? | |
| v | ? |
quatProxy(q: ?, onChange: ?) → void
| arg | type | description |
|---|---|---|
| q | ? | |
| onChange | ? |
binary(op: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| op | ? | |
| b | ? |
toQuat(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
eulerProxy(e: ?) → void
| arg | type | description |
|---|---|---|
| e | ? |
matrixProxy(m: ?, onChange: ?) → void
| arg | type | description |
|---|---|---|
| m | ? | |
| onChange | ? |
binary(op: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| op | ? | |
| b | ? |
toEulerVec(e: ?) → void
| arg | type | description |
|---|---|---|
| e | ? |
viewSet( ) → void
viewSettings(name: ?, t: ?) → void
| arg | type | description |
|---|---|---|
| name | ? | |
| t | ? |
viewContext(key: ?) → void
| arg | type | description |
|---|---|---|
| key | ? |
fit(b: ?, hfov: ?, vfov: ?) → void
| arg | type | description |
|---|---|---|
| b | ? | |
| hfov | ? | |
| vfov | ? |
cameraPose(view: ?, persp: ?, aspect: ?) → void
Camera pose for the current view, in Zero coordinates. view: FRONT..BOTTOM, ISO or CURRENT.
| arg | type | description |
|---|---|---|
| view | ? | |
| persp | ? | |
| aspect | ? |
worldPose(pose: ?) → void
Session-local camera pose -> world pose, following wherever the session root was placed.
| arg | type | description |
|---|---|---|
| pose | ? |
qm(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
fitView(names: ?) → void
| arg | type | description |
|---|---|---|
| names | ? |
finished( ) → void
saveMain(a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| kw | ? |
walk(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
dispatch(group: ?, op: ?) → void
| arg | type | description |
|---|---|---|
| group | ? | |
| op | ? |
info(msg: ?) → void
| arg | type | description |
|---|---|---|
| msg | ? |
pollEdit(op: ?) → void
| arg | type | description |
|---|---|---|
| op | ? |
selVerts(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
selEdgeKeys(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
selFaces(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
setSel(mesh: ?, vset: ?, fset: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| vset | ? | |
| fset | ? |
setSelFaces(mesh: ?, list: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| list | ? |
editOp(name: ?, fn: ?) → void
| arg | type | description |
|---|---|---|
| name | ? | |
| fn | ? |
loopcut(mesh: ?, k: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? | |
| k | ? |
toLocal(o: ?, p: ?, isDir: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| p | ? | |
| isDir | ? |
shadeTargets( ) → void
setShade(o: ?, smooth: ?, angle: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| smooth | ? | |
| angle | ? |
byAngle(a: ?, kw: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| kw | ? |
capFill(fs: ?, vs: ?, ids: ?, z: ?, fill: ?) → void
| arg | type | description |
|---|---|---|
| fs | ? | |
| vs | ? | |
| ids | ? | |
| z | ? | |
| fill | ? |
id(r: ?, s: ?) → void
| arg | type | description |
|---|---|---|
| r | ? | |
| s | ? |
mid(a: ?, b: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? |
addCurveObject(kw: ?, baseName: ?, cu: ?) → void
| arg | type | description |
|---|---|---|
| kw | ? | |
| baseName | ? | |
| cu | ? |
nurbsPrim(baseName: ?, pts: ?, order: ?, endpoint: ?, cyclic: ?) → void
| arg | type | description |
|---|---|---|
| baseName | ? | |
| pts | ? | |
| order | ? | |
| endpoint | ? | |
| cyclic | ? |
polysToGeom(vs: ?, fs: ?) → void
| arg | type | description |
|---|---|---|
| vs | ? | |
| fs | ? |
geomToPolys(g: ?) → void
| arg | type | description |
|---|---|---|
| g | ? |
cloneFaces(fs: ?) → void
| arg | type | description |
|---|---|---|
| fs | ? |
mirrorPolys(vs: ?, fs: ?, axis: ?, merge: ?, thr: ?) → void
| arg | type | description |
|---|---|---|
| vs | ? | |
| fs | ? | |
| axis | ? | |
| merge | ? | |
| thr | ? |
generates(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
renderable(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
evaluate(o: ?, stop: ?) → void
Returns evaluated triangle geometry, per-triangle material slots (multi-material meshes only) and the polygon form when the last modifier preserved it.
| arg | type | description |
|---|---|---|
| o | ? | |
| stop | ? |
needGeom( ) → void
toPolys( ) → void
locateInto(newGeom: ?) → void
| arg | type | description |
|---|---|---|
| newGeom | ? |
rgb(i: ?) → void
| arg | type | description |
|---|---|---|
| i | ? |
dirLocal(a: ?) → void
| arg | type | description |
|---|---|---|
| a | ? |
shadeArrays(g: ?, smooth: ?, tuv: ?, byIndex: ?) → void
Shading arrays in Zero basis (x,z,-y): flat splits every triangle, smooth welds by position.
| arg | type | description |
|---|---|---|
| g | ? | |
| smooth | ? | |
| tuv | ? | |
| byIndex | ? |
tn(a: ?, b: ?, c: ?) → void
| arg | type | description |
|---|---|---|
| a | ? | |
| b | ? | |
| c | ? |
at(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
shadeByAngle(g: ?, angle: ?, tuv: ?) → void
Blender "Smooth by Angle": a corner averages the normals of faces around its position whose angle to its own face is within the limit; sharper edges stay hard.
| arg | type | description |
|---|---|---|
| g | ? | |
| angle | ? | |
| tuv | ? |
at(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
renderGeometry(o: ?, apply: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| apply | ? |
subMesh(rg: ?, slot: ?) → void
| arg | type | description |
|---|---|---|
| rg | ? | |
| slot | ? |
place(e: ?, o: ?) → void
| arg | type | description |
|---|---|---|
| e | ? | |
| o | ? |
bmeshProxy(mesh: ?) → void
| arg | type | description |
|---|---|---|
| mesh | ? |
fresh( ) → void
key(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
add(f: ?, src: ?) → void
| arg | type | description |
|---|---|---|
| f | ? | |
| src | ? |
quoteList(l: ?) → void
Render settings are kept (and introspectable through bl_rna) so scripts that configure renders run; Zero does not render them (bpy.ops.render.render is a no-op).
| arg | type | description |
|---|---|---|
| l | ? |
propType(v: ?) → void
| arg | type | description |
|---|---|---|
| v | ? |
enumItems(list: ?) → void
| arg | type | description |
|---|---|---|
| list | ? |
rnaBag(name: ?, spec: ?, hooks: ?) → void
| arg | type | description |
|---|---|---|
| name | ? | |
| spec | ? | |
| hooks | ? |
val(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
propProxy(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
makeRender(frames: ?) → void
| arg | type | description |
|---|---|---|
| frames | ? |
makeDisplay( ) → void
sceneExtra(k: ?) → void
| arg | type | description |
|---|---|---|
| k | ? |
sceneExtraSet(k: ?, v: ?) → void
| arg | type | description |
|---|---|---|
| k | ? | |
| v | ? |
newScene(nm: ?) → void
| arg | type | description |
|---|---|---|
| nm | ? |
dataProxy(d: ?) → void
| arg | type | description |
|---|---|---|
| d | ? |
enumItemsProxy(list: ?) → void
| arg | type | description |
|---|---|---|
| list | ? |
enumProp(full: ?, pn: ?) → void
| arg | type | description |
|---|---|---|
| full | ? | |
| pn | ? |
rnaType(tname: ?) → void
| arg | type | description |
|---|---|---|
| tname | ? |
rnaFor(n: ?) → void
| arg | type | description |
|---|---|---|
| n | ? |
sub3(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
dot3(x: ?, y: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| y | ? |
closest(p: ?, a: ?, b: ?, c: ?) → void
Closest point on triangle abc to p (Ericson, Real-Time Collision Detection 5.1.5).
| arg | type | description |
|---|---|---|
| p | ? | |
| a | ? | |
| b | ? | |
| c | ? |
bvhProxy(V: ?, T: ?) → void
| arg | type | description |
|---|---|---|
| V | ? | |
| T | ? |
cellOf(x: ?, k: ?) → void
| arg | type | description |
|---|---|---|
| x | ? | |
| k | ? |
nearest(p: ?, maxd: ?) → void
| arg | type | description |
|---|---|---|
| p | ? | |
| maxd | ? |
writeBundle(sessionRoot: ?, issues: ?, triangles: ?) → void
The document's output.bundle: clips, entity_template and README, from the live hierarchy.
| arg | type | description |
|---|---|---|
| sessionRoot | ? | |
| issues | ? | |
| triangles | ? |
geoSize(g: ?) → void
| arg | type | description |
|---|---|---|
| g | ? |
writePending(id: ?, it: ?) → void
| arg | type | description |
|---|---|---|
| id | ? | |
| it | ? |
queueMesh(id: ?, name: ?, geo: ?) → void
| arg | type | description |
|---|---|---|
| id | ? | |
| name | ? | |
| geo | ? |
spawn(fn: ?) → void
| arg | type | description |
|---|---|---|
| fn | ? |
cancel( ) → void
Stop everything this document has running and drop what it queued. The document keeps its last saved state on disk; nothing outlives the cancel.
startPersist(root: ?) → void
| arg | type | description |
|---|---|---|
| root | ? |
saveNow( ) → void
settle(timeout: ?) → void
| arg | type | description |
|---|---|---|
| timeout | ? |
flush( ) → void
hashInto(h: ?, v: ?) → void
Change detection hashes the geometry in place: encoding every mesh to JSON on each flush allocated the whole document again, every call.
| arg | type | description |
|---|---|---|
| h | ? | |
| v | ? |
geoHash(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
signature(o: ?) → void
| arg | type | description |
|---|---|---|
| o | ? |
exportList(opts: ?) → void
| arg | type | description |
|---|---|---|
| opts | ? |
slotMaterial(o: ?, slot: ?) → void
| arg | type | description |
|---|---|---|
| o | ? | |
| slot | ? |
exportGLB(path: ?, opts: ?) → void
glTF 2.0 binary export (Y-up, the basis Zero renders in). One primitive per material slot.
| arg | type | description |
|---|---|---|
| path | ? | |
| opts | ? |
blob(kind: ?, data: ?, target: ?) → void
| arg | type | description |
|---|---|---|
| kind | ? | |
| data | ? | |
| target | ? |
materialFor(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
writeProvenance(path: ?, result: ?) → void
Records which session, script history and modeling-code version produced an export.
| arg | type | description |
|---|---|---|
| path | ? | |
| result | ? |
exportBundle(path: ?, opts: ?) → void
Native Zero bundle: meshes and materials are written inside the bundle, so it is a self-contained snapshot. Materials bound with zero_material are referenced as-is (custom shaders survive, which a GLB cannot carry).
| arg | type | description |
|---|---|---|
| path | ? | |
| opts | ? |
safe(x: ?) → void
| arg | type | description |
|---|---|---|
| x | ? |
matFor(m: ?) → void
| arg | type | description |
|---|---|---|
| m | ? |
restore(doc: ?) → void
Rebuild the live, editable session (objects, meshes, materials, modifier stacks, parenting, view) from a saved session.json document.
| arg | type | description |
|---|---|---|
| doc | ? |
objectsCount(t: ?) → void
| arg | type | description |
|---|---|---|
| t | ? |
scene_info( ) → void
hideFromEditor( ) → void
Keep the editor camera's view clean: add !modelingWorkspace to its filter once. The user can take it out again (renderLayer.camera) to watch the agent work.
workspace( ) → void
resolve(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
onMemoryPressure( ) → void
previewName(key: ?) → void
| arg | type | description |
|---|---|---|
| key | ? |
evict(key: ?, force: ?) → void
| arg | type | description |
|---|---|---|
| key | ? | |
| force | ? |
closeWorkspace( ) → void
armIdleClose( ) → void
useSession(key: ?) → void
| arg | type | description |
|---|---|---|
| key | ? |
session(name: ?) → void
| arg | type | description |
|---|---|---|
| name | ? |
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.
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.