Repository navigation
67js 0.18.0
- Clip layers on an imported asset take a
stripwith start, scale, repeat, blend in and out, extend and blend mode, so a walk repeated three times can crossfade into an idle (#693) - Particle emitters take points from a mesh surface (weighted by area), its vertices or its closed volume, push them along the normal, and draw each particle as one of up to 8 listed nodes with a random or surface-aligned rotation (#695)
scene_applytakesbake-motion: it samples nodes over a range into keyframe tracks (tracks, IK, constraints, drivers, ragdoll and rigid bodies), optionally drops keys within a position and angle tolerance, and removes the sources it replaced, so the motion exports as a clip (#697)sdfgeometry meshes a tree of sphere, box, round box, capsule, cylinder and torus shapes with union, subtract, intersect, smooth blends and offset by surface nets, so blobby bodies and rounded joins need no hand modeling (#700)curvegeometry takeskindpoly or nurbs, severalsplines, arc, spiral and starshapes and atrim, so rails, ropes and a growing vine need no hand-placed points (#701)uv_project(cube, cylinder, sphere) anduv_packmesh edits write and pack UVs with one texel density (#702)mesh_editgainspoke,dual,tris_to_quads,symmetrize,scale_elementsandextrude_edges(#703)- Add a
buildmesh modifier that reveals faces overstartandlengthframes in index, seeded random or axis order, withreverse(#704). scene_restoretakesrevisionto undo the last fewscene_applyedits in one call, with no checkpoint made first (#744)- Docs: add an FAQ page for the questions from the launch: three.js, size and speed, tokens, what the agent sees, undo and diffs (#745).
- Set
SIXTYSEVENJS_MCP_LOG=<file>to log each MCP tool call (tool, duration, ok, result size, never arguments), and runscripts/summarize-mcp-log.mjsfor calls, error rate and median duration per tool (#746) - Depth precision by default (#751, phase 1 of 2): the colour pass draws with reversed-Z and a 32-bit float depth buffer wherever
EXT_clip_controlexists, at any far / near ratio, from the first frame; the 16-bit depth buffer is gone; without the extension the depth buffer is 24-bit and the near plane fits the visible bounds when the camera left near unset;reversedDepth: falseopts out;installDepthPrecision,hasFarOverlapandrequestReversedDepthare removed (useinstallCoplanarDiagnosticsfor the warning);bench/flicker/index.htmlis a viewer with a flicker probe - Flush faces stop flickering by default (#751, phase 2, step 1 of 2): faces that lie on one plane or a few millimetres apart, inside one mesh or across parts, are ranked per triangle and drawn with a small view-space depth bias, so the face in front wins at every distance and on every depth format; agent scenes do it unless
environment.resolveCoplanarisfalse, a renderer does it withresolveCoplanar: resolveFlushParts;decalanddepthLayeruse the same bias; what cannot be ranked (more than 15 faces stacked on one plane, double-sided faces a gap apart) comes back as acoplanar-overlapwarning with areason;coplanarLayers,resolveCoplanarPartsandEXACT_FLUSH_DISTANCEare removed;bench/flickerhas trap scenes (?trap=,probe.mjs --traps) - Hidden flush faces are cut away (#751, phase 2, step 2 of 2): where an opaque face covers another on exactly the same plane (1 cm2 or more), the covered part is cut out of the copy the hidden face draws with, every vertex array interpolated, so a stack of any depth on one plane stops flickering and no longer reports
rank-overflow; parts and their geometry stay as they are (flushOrderOf(part).geometryholds the cut copy), instances of one geometry share a cut, and the path tracer traces the cut geometry; a face under a blended or masked face, or a double-sided face under a one-sided one, is still ranked;bench/flickergains theplaque-closeup-0.5mtrap with an open-pixel count - Near-flush faces are cut too (#751): an opaque face in front of another by at most a thousandth of the side of their shared area (from 1 mm to 1 cm) cuts the face behind it, as a flush face does, instead of taking a rank; the Melbourne city model, whose stacked blocks nest facades 5 to 17 mm apart up to 17 deep, now reports no
rank-overflow - scene_inspect and scene_capabilities take the inputs Haiku sent in the bench: short mesh edit branch names (meshEdit.inset), dotted fields (environment.spotLights), near topic names (uvs, scene.terrain), source nodes without a mesh of their own, includeBounds with kind hierarchy; an unwalkable path start names the nearest walkable point (#761)
- scene_inspect with a node ID lists the parts below it and tags each with
fromNode; a node with no part below it, such as a skeleton joint, returns its transform (parent, joint flag, local translation, rotation and scale, rest world position) instead of an error (#761) 67js/addons/runtimeaddscreateRuntime, a live game loop with fixed, variable or interpolated steps, ordered pluggable systems, pause on a hidden tab and a frame-time readout (#770)
Install: npm install @codepawlhq/67js@0.18.0