@developerz.ai/ts23d 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/bug-hunter.md +21 -0
- package/.claude/agents/docs-author.md +13 -0
- package/.claude/agents/dx-auditor.md +14 -0
- package/.claude/agents/primitive-author.md +22 -0
- package/.claude/agents/recipe-author.md +36 -0
- package/.claude/agents/visual-reviewer.md +23 -0
- package/.claude/commands/feature.md +28 -0
- package/.claude/commands/new-recipe.md +19 -0
- package/.claude/commands/release.md +14 -0
- package/.claude/commands/verify.md +9 -0
- package/.claude/skills/author-recipe/SKILL.md +93 -0
- package/CHANGELOG.md +90 -0
- package/CLAUDE.md +85 -0
- package/LICENSE +21 -0
- package/README.md +385 -2
- package/dist/chunk-6b05mnmx.js +19 -0
- package/dist/chunk-6b05mnmx.js.map +11 -0
- package/dist/chunk-7rtfjh9f.js +45 -0
- package/dist/chunk-7rtfjh9f.js.map +10 -0
- package/dist/chunk-8j4c28jt.js +4085 -0
- package/dist/chunk-8j4c28jt.js.map +46 -0
- package/dist/chunk-d1fv6hrm.js +2532 -0
- package/dist/chunk-d1fv6hrm.js.map +43 -0
- package/dist/chunk-dbq4qf52.js +902 -0
- package/dist/chunk-dbq4qf52.js.map +25 -0
- package/dist/chunk-drna2rny.js +836 -0
- package/dist/chunk-drna2rny.js.map +17 -0
- package/dist/chunk-dxvypr7y.js +89 -0
- package/dist/chunk-dxvypr7y.js.map +11 -0
- package/dist/chunk-f6yme003.js +1589 -0
- package/dist/chunk-f6yme003.js.map +30 -0
- package/dist/chunk-hg7pf34j.js +465 -0
- package/dist/chunk-hg7pf34j.js.map +19 -0
- package/dist/chunk-jq4e17tj.js +1031 -0
- package/dist/chunk-jq4e17tj.js.map +21 -0
- package/dist/chunk-y63c6zcv.js +2668 -0
- package/dist/chunk-y63c6zcv.js.map +53 -0
- package/dist/cli/args.d.ts +30 -0
- package/dist/cli/bin.d.ts +2 -0
- package/dist/cli/bin.js +348 -0
- package/dist/cli/bin.js.map +15 -0
- package/dist/cli/load.d.ts +2 -0
- package/dist/cli/manifest.d.ts +53 -0
- package/dist/cli/render-cmds.d.ts +12 -0
- package/dist/cli/run.d.ts +1 -0
- package/dist/cli/texture-cache.d.ts +4 -0
- package/dist/core/asset.d.ts +10 -0
- package/dist/core/definition.d.ts +155 -0
- package/dist/core/errors.d.ts +17 -0
- package/dist/core/family.d.ts +23 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.js +69 -0
- package/dist/core/index.js.map +9 -0
- package/dist/core/mesh.d.ts +35 -0
- package/dist/core/part.d.ts +114 -0
- package/dist/core/png.d.ts +1 -0
- package/dist/core/rng.d.ts +12 -0
- package/dist/core/transform.d.ts +20 -0
- package/dist/core/vec.d.ts +11 -0
- package/dist/core/world.d.ts +16 -0
- package/dist/export/bin-writer.d.ts +16 -0
- package/dist/export/container.d.ts +3 -0
- package/dist/export/credits.d.ts +4 -0
- package/dist/export/glb-options.d.ts +48 -0
- package/dist/export/glb.d.ts +8 -0
- package/dist/export/hierarchy.d.ts +23 -0
- package/dist/export/index.d.ts +5 -0
- package/dist/export/index.js +40 -0
- package/dist/export/index.js.map +9 -0
- package/dist/export/lights.d.ts +8 -0
- package/dist/export/lod-coverage.d.ts +12 -0
- package/dist/export/materials.d.ts +23 -0
- package/dist/export/merge-pivots.d.ts +6 -0
- package/dist/export/metadata.d.ts +21 -0
- package/dist/export/motion.d.ts +9 -0
- package/dist/export/optimize-parts.d.ts +26 -0
- package/dist/export/primitive.d.ts +3 -0
- package/dist/export/tangents.d.ts +2 -0
- package/dist/export/textures.d.ts +22 -0
- package/dist/export/version.d.ts +2 -0
- package/dist/grammar/index.d.ts +2 -0
- package/dist/grammar/index.js +16 -0
- package/dist/grammar/index.js.map +9 -0
- package/dist/grammar/split.d.ts +21 -0
- package/dist/grammar/whyte.d.ts +5 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +457 -0
- package/dist/index.js.map +9 -0
- package/dist/kinds/building.d.ts +44 -0
- package/dist/kinds/faces.d.ts +27 -0
- package/dist/kinds/head-armour.d.ts +5 -0
- package/dist/kinds/head-beard.d.ts +6 -0
- package/dist/kinds/head-bust.d.ts +5 -0
- package/dist/kinds/head-extras.d.ts +15 -0
- package/dist/kinds/head-face.d.ts +8 -0
- package/dist/kinds/head-garb.d.ts +4 -0
- package/dist/kinds/head-geom.d.ts +7 -0
- package/dist/kinds/head-hair.d.ts +4 -0
- package/dist/kinds/head-layout.d.ts +29 -0
- package/dist/kinds/head-mesh.d.ts +31 -0
- package/dist/kinds/head-mouth.d.ts +4 -0
- package/dist/kinds/head-params.d.ts +116 -0
- package/dist/kinds/head-presets.d.ts +19 -0
- package/dist/kinds/head-rim.d.ts +10 -0
- package/dist/kinds/head-tone.d.ts +10 -0
- package/dist/kinds/head-torso.d.ts +35 -0
- package/dist/kinds/head.d.ts +39 -0
- package/dist/kinds/hull-lines.d.ts +65 -0
- package/dist/kinds/hull-skin.d.ts +6 -0
- package/dist/kinds/hull.d.ts +14 -0
- package/dist/kinds/index.d.ts +16 -0
- package/dist/kinds/index.js +78 -0
- package/dist/kinds/index.js.map +9 -0
- package/dist/kinds/mass.d.ts +15 -0
- package/dist/kinds/openings.d.ts +30 -0
- package/dist/kinds/planned.d.ts +6 -0
- package/dist/kinds/roof-chimney.d.ts +16 -0
- package/dist/kinds/roof-shape.d.ts +64 -0
- package/dist/kinds/roof.d.ts +31 -0
- package/dist/kinds/vegetation-fronds.d.ts +15 -0
- package/dist/kinds/vegetation-impostor.d.ts +9 -0
- package/dist/kinds/vegetation-leaves.d.ts +15 -0
- package/dist/kinds/vegetation-mesh.d.ts +21 -0
- package/dist/kinds/vegetation-params.d.ts +90 -0
- package/dist/kinds/vegetation-presets.d.ts +20 -0
- package/dist/kinds/vegetation-skeleton.d.ts +20 -0
- package/dist/kinds/vegetation.d.ts +42 -0
- package/dist/kinds/vehicle.d.ts +42 -0
- package/dist/material/cc0.d.ts +4 -0
- package/dist/material/define.d.ts +34 -0
- package/dist/material/generator.d.ts +4 -0
- package/dist/material/index.d.ts +9 -0
- package/dist/material/index.js +70 -0
- package/dist/material/index.js.map +9 -0
- package/dist/material/library.d.ts +7 -0
- package/dist/material/material-def.d.ts +30 -0
- package/dist/material/paint/bond.d.ts +3 -0
- package/dist/material/paint/canvas.d.ts +39 -0
- package/dist/material/paint/cell.d.ts +4 -0
- package/dist/material/paint/cells-round.d.ts +5 -0
- package/dist/material/paint/cells.d.ts +7 -0
- package/dist/material/paint/compose.d.ts +5 -0
- package/dist/material/paint/concrete.d.ts +3 -0
- package/dist/material/paint/courses.d.ts +31 -0
- package/dist/material/paint/decode-png.d.ts +6 -0
- package/dist/material/paint/default-sheet.d.ts +4 -0
- package/dist/material/paint/fabric.d.ts +4 -0
- package/dist/material/paint/foliage-broad.d.ts +5 -0
- package/dist/material/paint/foliage-common.d.ts +35 -0
- package/dist/material/paint/foliage-compound.d.ts +4 -0
- package/dist/material/paint/foliage-conifer.d.ts +5 -0
- package/dist/material/paint/foliage-raster.d.ts +26 -0
- package/dist/material/paint/foliage.d.ts +3 -0
- package/dist/material/paint/image-strip.d.ts +4 -0
- package/dist/material/paint/kit.d.ts +5 -0
- package/dist/material/paint/masks.d.ts +3 -0
- package/dist/material/paint/metal.d.ts +3 -0
- package/dist/material/paint/noise.d.ts +9 -0
- package/dist/material/paint/normal.d.ts +8 -0
- package/dist/material/paint/orm.d.ts +8 -0
- package/dist/material/paint/planks.d.ts +3 -0
- package/dist/material/paint/plates.d.ts +3 -0
- package/dist/material/paint/shapes.d.ts +8 -0
- package/dist/material/paint/slate.d.ts +3 -0
- package/dist/material/paint/stamp.d.ts +3 -0
- package/dist/material/paint/strip.d.ts +3 -0
- package/dist/material/paint/surface.d.ts +5 -0
- package/dist/material/paint/types.d.ts +65 -0
- package/dist/material/paint/validate.d.ts +3 -0
- package/dist/material/palette.d.ts +14 -0
- package/dist/material/shader-godot.d.ts +2 -0
- package/dist/material/shader-three.d.ts +2 -0
- package/dist/material/shader.d.ts +46 -0
- package/dist/material/slots.d.ts +5 -0
- package/dist/material/texture-source.d.ts +34 -0
- package/dist/material/trim-sheet.d.ts +38 -0
- package/dist/neural/generator.d.ts +25 -0
- package/dist/neural/images.d.ts +17 -0
- package/dist/neural/index.d.ts +2 -0
- package/dist/neural/index.js +14 -0
- package/dist/neural/index.js.map +9 -0
- package/dist/passes/bake-ao.d.ts +17 -0
- package/dist/passes/grime.d.ts +15 -0
- package/dist/passes/index.d.ts +6 -0
- package/dist/passes/index.js +22 -0
- package/dist/passes/index.js.map +9 -0
- package/dist/passes/livery.d.ts +19 -0
- package/dist/passes/optimize-cache.d.ts +15 -0
- package/dist/passes/optimize-weld.d.ts +15 -0
- package/dist/passes/optimize.d.ts +28 -0
- package/dist/passes/ray-grid.d.ts +23 -0
- package/dist/passes/weighted-normals.d.ts +8 -0
- package/dist/primitives/beam.d.ts +17 -0
- package/dist/primitives/bevel-box.d.ts +13 -0
- package/dist/primitives/box.d.ts +16 -0
- package/dist/primitives/cell.d.ts +20 -0
- package/dist/primitives/check.d.ts +12 -0
- package/dist/primitives/closed.d.ts +11 -0
- package/dist/primitives/erosion.d.ts +22 -0
- package/dist/primitives/font-5x7.d.ts +3 -0
- package/dist/primitives/heightfield.d.ts +16 -0
- package/dist/primitives/index.d.ts +23 -0
- package/dist/primitives/index.js +81 -0
- package/dist/primitives/index.js.map +9 -0
- package/dist/primitives/lathe-facets.d.ts +8 -0
- package/dist/primitives/lathe.d.ts +26 -0
- package/dist/primitives/lattice.d.ts +30 -0
- package/dist/primitives/loft.d.ts +15 -0
- package/dist/primitives/mc-table.d.ts +2 -0
- package/dist/primitives/member.d.ts +19 -0
- package/dist/primitives/noise.d.ts +34 -0
- package/dist/primitives/planar.d.ts +10 -0
- package/dist/primitives/prism.d.ts +13 -0
- package/dist/primitives/sculpt-edit.d.ts +56 -0
- package/dist/primitives/sculpt-tree.d.ts +23 -0
- package/dist/primitives/sculpt.d.ts +27 -0
- package/dist/primitives/sdf-grid.d.ts +17 -0
- package/dist/primitives/sdf-ops.d.ts +37 -0
- package/dist/primitives/sdf.d.ts +21 -0
- package/dist/primitives/strip-uv.d.ts +11 -0
- package/dist/primitives/surface-nets.d.ts +7 -0
- package/dist/primitives/sweep.d.ts +19 -0
- package/dist/primitives/terrain-color.d.ts +30 -0
- package/dist/primitives/terrain-grid.d.ts +36 -0
- package/dist/primitives/text-layout.d.ts +22 -0
- package/dist/primitives/text.d.ts +27 -0
- package/dist/primitives/tiled.d.ts +22 -0
- package/dist/primitives/transport.d.ts +17 -0
- package/dist/primitives/triangulate.d.ts +2 -0
- package/dist/primitives/value-noise.d.ts +10 -0
- package/dist/qa/checks.d.ts +11 -0
- package/dist/qa/clash.d.ts +2 -0
- package/dist/qa/floating.d.ts +5 -0
- package/dist/qa/gates.d.ts +12 -0
- package/dist/qa/geometry.d.ts +21 -0
- package/dist/qa/index.d.ts +12 -0
- package/dist/qa/index.js +78 -0
- package/dist/qa/index.js.map +9 -0
- package/dist/qa/inside.d.ts +12 -0
- package/dist/qa/inspect.d.ts +18 -0
- package/dist/qa/lods.d.ts +12 -0
- package/dist/qa/measures.d.ts +4 -0
- package/dist/qa/occlusion.d.ts +3 -0
- package/dist/qa/sanity.d.ts +7 -0
- package/dist/qa/types.d.ts +12 -0
- package/dist/render/beauty.d.ts +40 -0
- package/dist/render/camera.d.ts +33 -0
- package/dist/render/depth-map.d.ts +38 -0
- package/dist/render/font.d.ts +1 -0
- package/dist/render/ground.d.ts +13 -0
- package/dist/render/index.d.ts +10 -0
- package/dist/render/index.js +47 -0
- package/dist/render/index.js.map +9 -0
- package/dist/render/lighting.d.ts +27 -0
- package/dist/render/lod-strip.d.ts +5 -0
- package/dist/render/metrics.d.ts +37 -0
- package/dist/render/options.d.ts +28 -0
- package/dist/render/photo-match.d.ts +19 -0
- package/dist/render/raster.d.ts +25 -0
- package/dist/render/resolve.d.ts +11 -0
- package/dist/render/review-prompt.d.ts +2 -0
- package/dist/render/review-warnings.d.ts +34 -0
- package/dist/render/review.d.ts +24 -0
- package/dist/render/scene.d.ts +18 -0
- package/dist/render/shade.d.ts +22 -0
- package/dist/render/sheet.d.ts +15 -0
- package/dist/render/texture.d.ts +15 -0
- package/dist/render/thumbnail.d.ts +8 -0
- package/dist/render/vis-buffer.d.ts +18 -0
- package/dist/testing/assert.d.ts +21 -0
- package/dist/testing/compiled.d.ts +15 -0
- package/dist/testing/hash.d.ts +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.js +134 -0
- package/dist/testing/index.js.map +13 -0
- package/dist/testing/snapshot.d.ts +13 -0
- package/docs/README.md +56 -0
- package/docs/architecture/README.md +68 -0
- package/docs/architecture/adding-a-kind.md +44 -0
- package/docs/architecture/adding-a-primitive.md +49 -0
- package/docs/architecture/errors.md +47 -0
- package/docs/architecture/glb-production.md +214 -0
- package/docs/architecture/gltf-capabilities.md +117 -0
- package/docs/architecture/materials.md +151 -0
- package/docs/decisions/001-recipe-compiler-over-ai-meshes.md +27 -0
- package/docs/decisions/002-typescript-not-json.md +22 -0
- package/docs/decisions/003-shared-trim-sheet.md +21 -0
- package/docs/decisions/004-z-up-metres.md +21 -0
- package/docs/decisions/005-zero-runtime-deps.md +21 -0
- package/docs/decisions/006-single-package-subpath-exports.md +20 -0
- package/docs/decisions/007-cpu-contact-sheets.md +21 -0
- package/docs/decisions/008-surface-materials.md +21 -0
- package/docs/decisions/009-gltf-front-axis.md +21 -0
- package/docs/decisions/README.md +15 -0
- package/docs/idea/01-vision.md +117 -0
- package/docs/idea/02-dsl.md +343 -0
- package/docs/idea/03-ir.md +97 -0
- package/docs/idea/04-materials.md +114 -0
- package/docs/idea/05-agent-loop.md +141 -0
- package/docs/idea/06-qa.md +101 -0
- package/docs/idea/07-what-fits.md +45 -0
- package/docs/idea/08-neural-adapters.md +78 -0
- package/docs/idea/09-kinds.md +105 -0
- package/docs/idea/10-sculpting.md +166 -0
- package/docs/idea/11-materials-authoring.md +132 -0
- package/docs/idea/12-blender-bridge.md +136 -0
- package/docs/idea/13-asset-pipeline-research.md +89 -0
- package/docs/landscape.md +49 -0
- package/docs/plans/roadmap.md +139 -0
- package/examples/build-with-bun.ts +41 -0
- package/llms.txt +47 -0
- package/package.json +100 -4
- package/recipes/README.md +38 -0
- package/recipes/asteroid/README.md +46 -0
- package/recipes/asteroid/asteroid.ts +336 -0
- package/recipes/boulders/README.md +28 -0
- package/recipes/boulders/boulders.ts +117 -0
- package/recipes/boxcar/README.md +53 -0
- package/recipes/boxcar/boxcar.ts +1000 -0
- package/recipes/cargo_container_scifi/README.md +52 -0
- package/recipes/cargo_container_scifi/cargo_container_scifi.ts +461 -0
- package/recipes/dropship/README.md +84 -0
- package/recipes/dropship/dropship.ts +1144 -0
- package/recipes/eiffel_tower/README.md +110 -0
- package/recipes/eiffel_tower/eiffel_tower.ts +781 -0
- package/recipes/goblin_head/README.md +75 -0
- package/recipes/goblin_head/goblin_head.ts +38 -0
- package/recipes/human_head/README.md +68 -0
- package/recipes/human_head/human_head.ts +38 -0
- package/recipes/loco_440/README.md +32 -0
- package/recipes/loco_440/loco_440.ts +1404 -0
- package/recipes/material_swatches/README.md +21 -0
- package/recipes/material_swatches/material_swatches.ts +189 -0
- package/recipes/mountain_range/README.md +45 -0
- package/recipes/mountain_range/mountain_range.ts +128 -0
- package/recipes/oak/README.md +30 -0
- package/recipes/oak/oak.ts +19 -0
- package/recipes/orc_head/README.md +78 -0
- package/recipes/orc_head/orc_head.ts +41 -0
- package/recipes/palm/README.md +30 -0
- package/recipes/palm/palm.ts +19 -0
- package/recipes/pine/README.md +29 -0
- package/recipes/pine/pine.ts +19 -0
- package/recipes/signal_gantry/README.md +36 -0
- package/recipes/signal_gantry/signal_gantry.ts +522 -0
- package/recipes/station_halt/README.md +39 -0
- package/recipes/station_halt/station_halt.ts +722 -0
- package/recipes/t34/README.md +44 -0
- package/recipes/t34/t34.ts +1068 -0
- package/recipes/tiger_1/README.md +75 -0
- package/recipes/tiger_1/tiger_1.ts +1370 -0
- package/recipes/water_tower/README.md +40 -0
- package/recipes/water_tower/water_tower.ts +542 -0
- package/src/cli/args.ts +125 -0
- package/src/cli/bin.ts +7 -0
- package/src/cli/load.ts +17 -0
- package/src/cli/manifest.ts +95 -0
- package/src/cli/render-cmds.ts +66 -0
- package/src/cli/run.ts +192 -0
- package/src/cli/texture-cache.ts +24 -0
- package/src/core/asset.ts +129 -0
- package/src/core/definition.ts +156 -0
- package/src/core/errors.ts +50 -0
- package/src/core/family.ts +50 -0
- package/src/core/index.ts +66 -0
- package/src/core/mesh.ts +114 -0
- package/src/core/part.ts +130 -0
- package/src/core/png.ts +49 -0
- package/src/core/rng.ts +49 -0
- package/src/core/transform.ts +90 -0
- package/src/core/vec.ts +26 -0
- package/src/core/world.ts +80 -0
- package/src/export/bin-writer.ts +79 -0
- package/src/export/container.ts +35 -0
- package/src/export/credits.ts +25 -0
- package/src/export/glb-options.ts +53 -0
- package/src/export/glb.ts +187 -0
- package/src/export/hierarchy.ts +122 -0
- package/src/export/index.ts +34 -0
- package/src/export/lights.ts +49 -0
- package/src/export/lod-coverage.ts +71 -0
- package/src/export/materials.ts +126 -0
- package/src/export/merge-pivots.ts +146 -0
- package/src/export/metadata.ts +62 -0
- package/src/export/motion.ts +70 -0
- package/src/export/optimize-parts.ts +80 -0
- package/src/export/primitive.ts +35 -0
- package/src/export/tangents.ts +75 -0
- package/src/export/textures.ts +88 -0
- package/src/export/version.ts +6 -0
- package/src/grammar/index.ts +4 -0
- package/src/grammar/split.ts +87 -0
- package/src/grammar/whyte.ts +20 -0
- package/src/index.ts +14 -0
- package/src/kinds/building.ts +153 -0
- package/src/kinds/faces.ts +138 -0
- package/src/kinds/head-armour.ts +181 -0
- package/src/kinds/head-beard.ts +133 -0
- package/src/kinds/head-bust.ts +184 -0
- package/src/kinds/head-extras.ts +150 -0
- package/src/kinds/head-face.ts +242 -0
- package/src/kinds/head-garb.ts +181 -0
- package/src/kinds/head-geom.ts +31 -0
- package/src/kinds/head-hair.ts +193 -0
- package/src/kinds/head-layout.ts +63 -0
- package/src/kinds/head-mesh.ts +195 -0
- package/src/kinds/head-mouth.ts +111 -0
- package/src/kinds/head-params.ts +162 -0
- package/src/kinds/head-presets.ts +155 -0
- package/src/kinds/head-rim.ts +128 -0
- package/src/kinds/head-tone.ts +52 -0
- package/src/kinds/head-torso.ts +230 -0
- package/src/kinds/head.ts +176 -0
- package/src/kinds/hull-lines.ts +160 -0
- package/src/kinds/hull-skin.ts +83 -0
- package/src/kinds/hull.ts +209 -0
- package/src/kinds/index.ts +63 -0
- package/src/kinds/mass.ts +110 -0
- package/src/kinds/openings.ts +141 -0
- package/src/kinds/planned.ts +12 -0
- package/src/kinds/roof-chimney.ts +100 -0
- package/src/kinds/roof-shape.ts +230 -0
- package/src/kinds/roof.ts +250 -0
- package/src/kinds/vegetation-fronds.ts +126 -0
- package/src/kinds/vegetation-impostor.ts +118 -0
- package/src/kinds/vegetation-leaves.ts +168 -0
- package/src/kinds/vegetation-mesh.ts +174 -0
- package/src/kinds/vegetation-params.ts +147 -0
- package/src/kinds/vegetation-presets.ts +184 -0
- package/src/kinds/vegetation-skeleton.ts +168 -0
- package/src/kinds/vegetation.ts +199 -0
- package/src/kinds/vehicle.ts +144 -0
- package/src/material/cc0.ts +41 -0
- package/src/material/define.ts +130 -0
- package/src/material/generator.ts +63 -0
- package/src/material/index.ts +60 -0
- package/src/material/library.ts +196 -0
- package/src/material/material-def.ts +84 -0
- package/src/material/paint/bond.ts +60 -0
- package/src/material/paint/canvas.ts +101 -0
- package/src/material/paint/cell.ts +39 -0
- package/src/material/paint/cells-round.ts +119 -0
- package/src/material/paint/cells.ts +111 -0
- package/src/material/paint/compose.ts +53 -0
- package/src/material/paint/concrete.ts +62 -0
- package/src/material/paint/courses.ts +85 -0
- package/src/material/paint/decode-png.ts +106 -0
- package/src/material/paint/default-sheet.ts +73 -0
- package/src/material/paint/fabric.ts +63 -0
- package/src/material/paint/foliage-broad.ts +126 -0
- package/src/material/paint/foliage-common.ts +93 -0
- package/src/material/paint/foliage-compound.ts +135 -0
- package/src/material/paint/foliage-conifer.ts +143 -0
- package/src/material/paint/foliage-raster.ts +196 -0
- package/src/material/paint/foliage.ts +23 -0
- package/src/material/paint/image-strip.ts +88 -0
- package/src/material/paint/kit.ts +37 -0
- package/src/material/paint/masks.ts +46 -0
- package/src/material/paint/metal.ts +109 -0
- package/src/material/paint/noise.ts +52 -0
- package/src/material/paint/normal.ts +52 -0
- package/src/material/paint/orm.ts +108 -0
- package/src/material/paint/planks.ts +101 -0
- package/src/material/paint/plates.ts +72 -0
- package/src/material/paint/shapes.ts +28 -0
- package/src/material/paint/slate.ts +52 -0
- package/src/material/paint/stamp.ts +40 -0
- package/src/material/paint/strip.ts +48 -0
- package/src/material/paint/surface.ts +60 -0
- package/src/material/paint/types.ts +94 -0
- package/src/material/paint/validate.ts +74 -0
- package/src/material/palette.ts +46 -0
- package/src/material/shader-godot.ts +77 -0
- package/src/material/shader-three.ts +103 -0
- package/src/material/shader.ts +100 -0
- package/src/material/slots.ts +18 -0
- package/src/material/texture-source.ts +86 -0
- package/src/material/trim-sheet.ts +166 -0
- package/src/neural/generator.ts +37 -0
- package/src/neural/images.ts +27 -0
- package/src/neural/index.ts +10 -0
- package/src/passes/bake-ao.ts +183 -0
- package/src/passes/grime.ts +37 -0
- package/src/passes/index.ts +8 -0
- package/src/passes/livery.ts +66 -0
- package/src/passes/optimize-cache.ts +175 -0
- package/src/passes/optimize-weld.ts +147 -0
- package/src/passes/optimize.ts +85 -0
- package/src/passes/ray-grid.ts +237 -0
- package/src/passes/weighted-normals.ts +125 -0
- package/src/primitives/beam.ts +60 -0
- package/src/primitives/bevel-box.ts +140 -0
- package/src/primitives/box.ts +90 -0
- package/src/primitives/cell.ts +115 -0
- package/src/primitives/check.ts +49 -0
- package/src/primitives/closed.ts +74 -0
- package/src/primitives/erosion.ts +183 -0
- package/src/primitives/font-5x7.ts +117 -0
- package/src/primitives/heightfield.ts +101 -0
- package/src/primitives/index.ts +56 -0
- package/src/primitives/lathe-facets.ts +45 -0
- package/src/primitives/lathe.ts +174 -0
- package/src/primitives/lattice.ts +131 -0
- package/src/primitives/loft.ts +174 -0
- package/src/primitives/mc-table.ts +41 -0
- package/src/primitives/member.ts +130 -0
- package/src/primitives/noise.ts +157 -0
- package/src/primitives/planar.ts +55 -0
- package/src/primitives/prism.ts +85 -0
- package/src/primitives/sculpt-edit.ts +212 -0
- package/src/primitives/sculpt-tree.ts +226 -0
- package/src/primitives/sculpt.ts +80 -0
- package/src/primitives/sdf-grid.ts +131 -0
- package/src/primitives/sdf-ops.ts +145 -0
- package/src/primitives/sdf.ts +83 -0
- package/src/primitives/strip-uv.ts +26 -0
- package/src/primitives/surface-nets.ts +161 -0
- package/src/primitives/sweep.ts +162 -0
- package/src/primitives/terrain-color.ts +85 -0
- package/src/primitives/terrain-grid.ts +137 -0
- package/src/primitives/text-layout.ts +85 -0
- package/src/primitives/text.ts +197 -0
- package/src/primitives/tiled.ts +93 -0
- package/src/primitives/transport.ts +85 -0
- package/src/primitives/triangulate.ts +42 -0
- package/src/primitives/value-noise.ts +62 -0
- package/src/qa/checks.ts +110 -0
- package/src/qa/clash.ts +177 -0
- package/src/qa/floating.ts +63 -0
- package/src/qa/gates.ts +126 -0
- package/src/qa/geometry.ts +187 -0
- package/src/qa/index.ts +28 -0
- package/src/qa/inside.ts +114 -0
- package/src/qa/inspect.ts +107 -0
- package/src/qa/lods.ts +97 -0
- package/src/qa/measures.ts +67 -0
- package/src/qa/occlusion.ts +166 -0
- package/src/qa/sanity.ts +137 -0
- package/src/qa/types.ts +17 -0
- package/src/render/beauty.ts +115 -0
- package/src/render/camera.ts +142 -0
- package/src/render/depth-map.ts +191 -0
- package/src/render/font.ts +76 -0
- package/src/render/ground.ts +87 -0
- package/src/render/index.ts +34 -0
- package/src/render/lighting.ts +121 -0
- package/src/render/lod-strip.ts +34 -0
- package/src/render/metrics.ts +147 -0
- package/src/render/options.ts +81 -0
- package/src/render/photo-match.ts +28 -0
- package/src/render/raster.ts +143 -0
- package/src/render/resolve.ts +109 -0
- package/src/render/review-prompt.ts +59 -0
- package/src/render/review-warnings.ts +92 -0
- package/src/render/review.ts +103 -0
- package/src/render/scene.ts +119 -0
- package/src/render/shade.ts +204 -0
- package/src/render/sheet.ts +88 -0
- package/src/render/texture.ts +97 -0
- package/src/render/thumbnail.ts +75 -0
- package/src/render/vis-buffer.ts +119 -0
- package/src/testing/assert.ts +115 -0
- package/src/testing/compiled.ts +31 -0
- package/src/testing/hash.ts +14 -0
- package/src/testing/index.ts +14 -0
- package/src/testing/snapshot.ts +37 -0
- package/src/types/gltf-validator.d.ts +13 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Mesh, Vec3 } from '../core/index.js';
|
|
2
|
+
export interface GrimeZone {
|
|
3
|
+
readonly at: Vec3;
|
|
4
|
+
readonly radius: number;
|
|
5
|
+
/** 0..1 darkening at the centre. */
|
|
6
|
+
readonly strength: number;
|
|
7
|
+
}
|
|
8
|
+
export interface GrimeOptions {
|
|
9
|
+
/** Height (m) below which mud/dust builds up toward the ground. */
|
|
10
|
+
readonly ground?: number;
|
|
11
|
+
/** Darkening at z = 0. */
|
|
12
|
+
readonly groundStrength?: number;
|
|
13
|
+
readonly zones?: readonly GrimeZone[];
|
|
14
|
+
}
|
|
15
|
+
export declare function grime(mesh: Mesh, o: GrimeOptions): Mesh;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { type AoOptions, bakeAo, bakeAoAsset } from './bake-ao.js';
|
|
2
|
+
export { type GrimeOptions, type GrimeZone, grime } from './grime.js';
|
|
3
|
+
export { type Livery, type LiveryRule, livery } from './livery.js';
|
|
4
|
+
export { type OptimizeOptions, type OptimizeReport, optimize } from './optimize.js';
|
|
5
|
+
export { RayGrid } from './ray-grid.js';
|
|
6
|
+
export { type WeightedNormalsOptions, weightedNormals } from './weighted-normals.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RayGrid2,
|
|
3
|
+
bakeAo2,
|
|
4
|
+
bakeAoAsset2,
|
|
5
|
+
grime2,
|
|
6
|
+
livery2,
|
|
7
|
+
optimize2,
|
|
8
|
+
weightedNormals2
|
|
9
|
+
} from "../chunk-drna2rny.js";
|
|
10
|
+
import"../chunk-hg7pf34j.js";
|
|
11
|
+
export {
|
|
12
|
+
RayGrid2 as RayGrid,
|
|
13
|
+
bakeAo2 as bakeAo,
|
|
14
|
+
bakeAoAsset2 as bakeAoAsset,
|
|
15
|
+
grime2 as grime,
|
|
16
|
+
livery2 as livery,
|
|
17
|
+
optimize2 as optimize,
|
|
18
|
+
weightedNormals2 as weightedNormals
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//# debugId=FB4A86370A140D3564756E2164756E21
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Mesh, Vec2, Vec3 } from '../core/index.js';
|
|
2
|
+
export interface LiveryRule {
|
|
3
|
+
readonly color: Vec3;
|
|
4
|
+
/** Height band [z0, z1] (metres). */
|
|
5
|
+
readonly z?: readonly [number, number];
|
|
6
|
+
/** Along-length band [x0, x1] (metres, +X forward). */
|
|
7
|
+
readonly x?: readonly [number, number];
|
|
8
|
+
/** Polygon in the side elevation (x, z): the region a stripe or panel covers. */
|
|
9
|
+
readonly poly?: readonly Vec2[];
|
|
10
|
+
/** Only faces whose normal points this way (n·axis > 0.5; roof: n.z > 0.55). */
|
|
11
|
+
readonly facing?: 'roof' | 'under' | 'front' | 'back' | 'side';
|
|
12
|
+
/** Multiply into the existing colour instead of replacing it (weathering, shading). */
|
|
13
|
+
readonly multiply?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface Livery {
|
|
16
|
+
readonly base?: Vec3;
|
|
17
|
+
readonly rules: readonly LiveryRule[];
|
|
18
|
+
}
|
|
19
|
+
export declare function livery(mesh: Mesh, l: Livery): Mesh;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Reorder triangles for an LRU cache of 32 (Forsyth). Returns a new index buffer. */
|
|
2
|
+
export declare function forsyth(indices: Uint32Array, vertexCount: number): Uint32Array;
|
|
3
|
+
/** Renumber vertices in order of first use; unreferenced vertices are dropped. */
|
|
4
|
+
export declare function fetchOrder(indices: Uint32Array, vertexCount: number): {
|
|
5
|
+
indices: Uint32Array;
|
|
6
|
+
order: Uint32Array;
|
|
7
|
+
};
|
|
8
|
+
export interface CacheStats {
|
|
9
|
+
/** Average cache misses per triangle (0.5 ideal on a regular grid, 3 worst). */
|
|
10
|
+
readonly acmr: number;
|
|
11
|
+
/** Misses per unique vertex (1.0 ideal). */
|
|
12
|
+
readonly atvr: number;
|
|
13
|
+
}
|
|
14
|
+
/** Simulate a FIFO post-transform cache (16 entries, the meshoptimizer/NVIDIA convention). */
|
|
15
|
+
export declare function cacheStats(indices: Uint32Array, vertexCount: number, size?: number): CacheStats;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Mesh } from '../core/index.js';
|
|
2
|
+
export interface WeldTolerance {
|
|
3
|
+
/** Position grid, metres. */
|
|
4
|
+
readonly position: number;
|
|
5
|
+
readonly normal: number;
|
|
6
|
+
readonly uv: number;
|
|
7
|
+
readonly color: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_WELD: WeldTolerance;
|
|
10
|
+
export interface Welded {
|
|
11
|
+
readonly mesh: Mesh;
|
|
12
|
+
readonly degenerate: number;
|
|
13
|
+
readonly duplicate: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function weld(m: Mesh, t?: WeldTolerance): Welded;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Mesh } from '../core/index.js';
|
|
2
|
+
export interface OptimizeOptions {
|
|
3
|
+
/** Merge vertices closer than this (metres) with matching normal/uv/colour. Default 1e-5. */
|
|
4
|
+
readonly weldEpsilon?: number;
|
|
5
|
+
/** Reorder for the vertex cache (Forsyth). Default true. */
|
|
6
|
+
readonly vertexCache?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface OptimizeReport {
|
|
9
|
+
readonly verticesBefore: number;
|
|
10
|
+
readonly verticesAfter: number;
|
|
11
|
+
readonly trianglesBefore: number;
|
|
12
|
+
readonly trianglesAfter: number;
|
|
13
|
+
/** Zero-area / collapsed triangles dropped. */
|
|
14
|
+
readonly degenerate: number;
|
|
15
|
+
/** Exact duplicate triangles (same winding) dropped. */
|
|
16
|
+
readonly duplicate: number;
|
|
17
|
+
/** Average cache miss ratio per triangle before (FIFO 16). */
|
|
18
|
+
readonly acmrBefore: number;
|
|
19
|
+
/** Average cache miss ratio per triangle after reordering (lower is better, ~0.6–0.8 is good). */
|
|
20
|
+
readonly acmr: number;
|
|
21
|
+
/** Cache misses per vertex before / after (1.0 is ideal). */
|
|
22
|
+
readonly atvrBefore: number;
|
|
23
|
+
readonly atvr: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function optimize(mesh: Mesh, o?: OptimizeOptions): {
|
|
26
|
+
mesh: Mesh;
|
|
27
|
+
report: OptimizeReport;
|
|
28
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
export declare class RayGrid {
|
|
3
|
+
private readonly tri;
|
|
4
|
+
/** Per triangle: v0, e1 = v1 − v0, e2 = v2 − v0 (Möller–Trumbore inputs, computed once). */
|
|
5
|
+
private readonly edges;
|
|
6
|
+
/** Per triangle: unnormalised plane normal e1 × e2 and its offset n·v0. */
|
|
7
|
+
private readonly planes;
|
|
8
|
+
private readonly start;
|
|
9
|
+
private readonly list;
|
|
10
|
+
private readonly min;
|
|
11
|
+
private readonly res;
|
|
12
|
+
private readonly cell;
|
|
13
|
+
private readonly stamp;
|
|
14
|
+
private ray;
|
|
15
|
+
constructor(mesh: Mesh);
|
|
16
|
+
private coord;
|
|
17
|
+
/** Any hit of the ray o + t·d (d unit) for 0 < t ≤ tMax. Scalar arguments: no allocation. */
|
|
18
|
+
hit(ox: number, oy: number, oz: number, dx: number, dy: number, dz: number, tMax: number): boolean;
|
|
19
|
+
/** Möller–Trumbore on cached v0, e1, e2 (the same arithmetic as deriving them per ray). */
|
|
20
|
+
private test;
|
|
21
|
+
/** True if the ray o + t·d (d unit) hits any triangle for 0 < t ≤ tMax. */
|
|
22
|
+
occluded(o: Vec3, d: Vec3, tMax: number): boolean;
|
|
23
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Mesh } from '../core/index.js';
|
|
2
|
+
export interface WeightedNormalsOptions {
|
|
3
|
+
/** Faces meeting at more than this many degrees keep a hard edge. Default 40. */
|
|
4
|
+
readonly hardAngle?: number;
|
|
5
|
+
/** Positions closer than this (metres) count as one point. Default 1e-5. */
|
|
6
|
+
readonly epsilon?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function weightedNormals(m: Mesh, o?: WeightedNormalsOptions): Mesh;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import type { StripId } from '../material/index.js';
|
|
3
|
+
export interface BeamOptions {
|
|
4
|
+
readonly from: Vec3;
|
|
5
|
+
readonly to: Vec3;
|
|
6
|
+
/** Side of a square section, or diameter of a round one. */
|
|
7
|
+
readonly width: number;
|
|
8
|
+
readonly height?: number;
|
|
9
|
+
readonly segments?: number;
|
|
10
|
+
readonly color: Vec3;
|
|
11
|
+
readonly strip?: StripId;
|
|
12
|
+
/** Which way the section's local Y faces (roll). Default: world Z, or X for vertical beams. */
|
|
13
|
+
readonly up?: Vec3;
|
|
14
|
+
/** End caps; turn off for lattice members whose ends are buried in joints (−⅓ triangles). */
|
|
15
|
+
readonly caps?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function beam(o: BeamOptions): Mesh;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
type FaceName = 'top' | 'bottom' | 'front' | 'back' | 'left' | 'right';
|
|
4
|
+
export interface BevelBoxInput {
|
|
5
|
+
readonly half: Vec3;
|
|
6
|
+
readonly centre: Vec3;
|
|
7
|
+
readonly bevel: number;
|
|
8
|
+
readonly color: Vec3;
|
|
9
|
+
readonly strip: StripId;
|
|
10
|
+
readonly omit: readonly FaceName[];
|
|
11
|
+
}
|
|
12
|
+
export declare function bevelBox(o: BevelBoxInput): Mesh;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export interface BoxOptions {
|
|
4
|
+
/** Width (X), depth (Y), height (Z) in metres. */
|
|
5
|
+
readonly size: Vec3;
|
|
6
|
+
readonly color: Vec3;
|
|
7
|
+
readonly strip?: StripId;
|
|
8
|
+
/** Centre of the base face. */
|
|
9
|
+
readonly at?: Vec3;
|
|
10
|
+
/** Skip faces nobody sees (e.g. the bottom on the ground). */
|
|
11
|
+
readonly omit?: readonly ('top' | 'bottom' | 'front' | 'back' | 'left' | 'right')[];
|
|
12
|
+
/** Chamfer width in metres on every edge (12 + 8 extra faces, 44 triangles). LOD it:
|
|
13
|
+
* `bevel: ctx.pick([0.02, 0.01, 0])`. Must stay under half the smallest size. Default 0. */
|
|
14
|
+
readonly bevel?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function box(o: BoxOptions): Mesh;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type CellId, type StripId } from '../material/index.js';
|
|
3
|
+
export interface CellOptions {
|
|
4
|
+
/** Bottom-left corner as seen from the front. */
|
|
5
|
+
readonly origin: Vec3;
|
|
6
|
+
/** Width edge (cell U), metres. */
|
|
7
|
+
readonly u: Vec3;
|
|
8
|
+
/** Height edge (cell V, up), metres. */
|
|
9
|
+
readonly v: Vec3;
|
|
10
|
+
readonly color: Vec3;
|
|
11
|
+
readonly cell: CellId;
|
|
12
|
+
/** Recess depth in metres (> 0 behind the plane, < 0 proud of it). Default 0. */
|
|
13
|
+
readonly inset?: number;
|
|
14
|
+
/** Strip the reveal faces tile at true scale. Default 'plain'. */
|
|
15
|
+
readonly reveal?: StripId;
|
|
16
|
+
readonly revealColor?: Vec3;
|
|
17
|
+
/** Both sides (leaf cards, hanging signs). Not with an inset. */
|
|
18
|
+
readonly doubleSided?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function cell(o: CellOptions): Mesh;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Vec3 } from '../core/index.js';
|
|
2
|
+
export declare function invalid(cause: string, fix: string): never;
|
|
3
|
+
/** Two edge vectors spanning a real parallelogram; returns |u|, |v| and the unit normal u×v. */
|
|
4
|
+
export declare function spanOf(what: string, origin: Vec3, u: Vec3, v: Vec3): {
|
|
5
|
+
lu: number;
|
|
6
|
+
lv: number;
|
|
7
|
+
n: Vec3;
|
|
8
|
+
};
|
|
9
|
+
/** An integer count in [min, max]. */
|
|
10
|
+
export declare function count(what: string, n: number, min: number, max: number): number;
|
|
11
|
+
/** A finite number > 0. */
|
|
12
|
+
export declare function positive(what: string, n: number, example: string): number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Mesh } from '../core/index.js';
|
|
2
|
+
/** Undirected edges walked a different number of times a→b than b→a (0 = closed, oriented). */
|
|
3
|
+
export declare function openEdges(m: Mesh): number;
|
|
4
|
+
/** Directed edges used more than once: 0 = 2-manifold (given openEdges = 0). */
|
|
5
|
+
export declare function nonManifoldEdges(m: Mesh): number;
|
|
6
|
+
/**
|
|
7
|
+
* Triangles whose winding (b − a) × (c − a) clearly disagrees with their mean vertex normal
|
|
8
|
+
* (cosine < −0.1; inside-out scores ≈ −1). Slivers whose face normal lies in the surface
|
|
9
|
+
* (cosine ≈ 0, e.g. surface nets at sub-cell features) are orientation-ambiguous, not counted.
|
|
10
|
+
*/
|
|
11
|
+
export declare function windingFlips(m: Mesh): number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Rng } from '../core/index.js';
|
|
2
|
+
import type { TerrainGrid } from './terrain-grid.js';
|
|
3
|
+
export interface ErosionOptions {
|
|
4
|
+
/** Droplets simulated. ~1 per grid point is mild, 2–3 is strongly carved. Default 70 000. */
|
|
5
|
+
readonly droplets?: number;
|
|
6
|
+
/** Steps a droplet lives. Default 30. */
|
|
7
|
+
readonly lifetime?: number;
|
|
8
|
+
/** 0 = droplets follow the gradient exactly, 1 = they never turn. Default 0.05. */
|
|
9
|
+
readonly inertia?: number;
|
|
10
|
+
/** Sediment a droplet can carry per unit of speed × water × drop. Default 4. */
|
|
11
|
+
readonly capacity?: number;
|
|
12
|
+
readonly minCapacity?: number;
|
|
13
|
+
/** Share of spare capacity eroded per step. Default 0.3. */
|
|
14
|
+
readonly erode?: number;
|
|
15
|
+
/** Share of surplus sediment deposited per step. Default 0.3. */
|
|
16
|
+
readonly deposit?: number;
|
|
17
|
+
readonly evaporate?: number;
|
|
18
|
+
readonly gravity?: number;
|
|
19
|
+
/** Erosion brush radius in grid cells (wider = smoother gullies). Default 3. */
|
|
20
|
+
readonly radius?: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function hydraulicErosion(g: TerrainGrid, rng: Rng, o?: ErosionOptions): TerrainGrid;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export interface HeightfieldOptions {
|
|
4
|
+
/** [minX, minY, maxX, maxY] in metres. */
|
|
5
|
+
readonly rect: readonly [number, number, number, number];
|
|
6
|
+
readonly cells: readonly [number, number];
|
|
7
|
+
readonly height: (x: number, y: number) => number;
|
|
8
|
+
/** Vertex colour per point (e.g. darker in ruts, greener on slopes). */
|
|
9
|
+
readonly color: Vec3 | ((x: number, y: number, z: number) => Vec3);
|
|
10
|
+
readonly strip?: StripId;
|
|
11
|
+
/** Close the sides down to this z (e.g. 0): flat-shaded walls, outward normals. */
|
|
12
|
+
readonly skirt?: number;
|
|
13
|
+
/** Wall colour; default: the terrain colour at the top edge. */
|
|
14
|
+
readonly skirtColor?: Vec3;
|
|
15
|
+
}
|
|
16
|
+
export declare function heightfield(o: HeightfieldOptions): Mesh;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { type BeamOptions, beam } from './beam.js';
|
|
2
|
+
export { type BoxOptions, box } from './box.js';
|
|
3
|
+
export { type CellOptions, cell } from './cell.js';
|
|
4
|
+
export { type ErosionOptions, hydraulicErosion } from './erosion.js';
|
|
5
|
+
export { type HeightfieldOptions, heightfield } from './heightfield.js';
|
|
6
|
+
export { cylinder, type LatheOptions, lathe } from './lathe.js';
|
|
7
|
+
export { type LatticeOptions, lattice, type TrussPattern } from './lattice.js';
|
|
8
|
+
export { type LoftColor, type LoftOptions, loft, ringXY } from './loft.js';
|
|
9
|
+
export type { SectionKind } from './member.js';
|
|
10
|
+
export { billow, type FractalOptions, fbm, gradientNoise2, type Noise2, ridged, terrace, valueNoise2, warp, } from './noise.js';
|
|
11
|
+
export { type PlanarOptions, planar } from './planar.js';
|
|
12
|
+
export { type PrismOptions, prism } from './prism.js';
|
|
13
|
+
export { type SculptEdit, type SculptField, type SculptOptions, type SculptShape, sculpt, sculptField, } from './sculpt.js';
|
|
14
|
+
export { type SdfColor, type SdfOptions, sdf } from './sdf.js';
|
|
15
|
+
export { type Field, sd } from './sdf-ops.js';
|
|
16
|
+
export { type SweepOptions, sweep } from './sweep.js';
|
|
17
|
+
export { type TerrainColorOptions, type TerrainPalette, terrainColor } from './terrain-color.js';
|
|
18
|
+
export { sampler, slopeMap, type TerrainGrid, type TerrainGridOptions, type ThermalOptions, terrainGrid, thermalErosion, } from './terrain-grid.js';
|
|
19
|
+
export { type MeasureOptions, measureText, type TextFont, type TextOptions, text, } from './text.js';
|
|
20
|
+
export { type TiledOptions, tiled } from './tiled.js';
|
|
21
|
+
export { arcLengths, type SweepFrame, transportFrames } from './transport.js';
|
|
22
|
+
export { triangulate } from './triangulate.js';
|
|
23
|
+
export { valueNoise } from './value-noise.js';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {
|
|
2
|
+
box2,
|
|
3
|
+
lathe2,
|
|
4
|
+
cylinder2,
|
|
5
|
+
beam2,
|
|
6
|
+
cell2,
|
|
7
|
+
hydraulicErosion2,
|
|
8
|
+
heightfield2,
|
|
9
|
+
triangulate2,
|
|
10
|
+
lattice2,
|
|
11
|
+
ringXY2,
|
|
12
|
+
loft2,
|
|
13
|
+
gradientNoise22,
|
|
14
|
+
valueNoise22,
|
|
15
|
+
fbm2,
|
|
16
|
+
billow2,
|
|
17
|
+
ridged2,
|
|
18
|
+
warp2,
|
|
19
|
+
terrace2,
|
|
20
|
+
planar2,
|
|
21
|
+
prism2,
|
|
22
|
+
sd2,
|
|
23
|
+
sdf2,
|
|
24
|
+
sculptField2,
|
|
25
|
+
sculpt2,
|
|
26
|
+
arcLengths2,
|
|
27
|
+
transportFrames2,
|
|
28
|
+
sweep2,
|
|
29
|
+
terrainGrid2,
|
|
30
|
+
sampler2,
|
|
31
|
+
slopeMap2,
|
|
32
|
+
thermalErosion2,
|
|
33
|
+
terrainColor2,
|
|
34
|
+
measureText2,
|
|
35
|
+
text2,
|
|
36
|
+
tiled2,
|
|
37
|
+
valueNoise3
|
|
38
|
+
} from "../chunk-d1fv6hrm.js";
|
|
39
|
+
import"../chunk-y63c6zcv.js";
|
|
40
|
+
import"../chunk-hg7pf34j.js";
|
|
41
|
+
export {
|
|
42
|
+
arcLengths2 as arcLengths,
|
|
43
|
+
beam2 as beam,
|
|
44
|
+
billow2 as billow,
|
|
45
|
+
box2 as box,
|
|
46
|
+
cell2 as cell,
|
|
47
|
+
cylinder2 as cylinder,
|
|
48
|
+
fbm2 as fbm,
|
|
49
|
+
gradientNoise22 as gradientNoise2,
|
|
50
|
+
heightfield2 as heightfield,
|
|
51
|
+
hydraulicErosion2 as hydraulicErosion,
|
|
52
|
+
lathe2 as lathe,
|
|
53
|
+
lattice2 as lattice,
|
|
54
|
+
loft2 as loft,
|
|
55
|
+
measureText2 as measureText,
|
|
56
|
+
planar2 as planar,
|
|
57
|
+
prism2 as prism,
|
|
58
|
+
ridged2 as ridged,
|
|
59
|
+
ringXY2 as ringXY,
|
|
60
|
+
sampler2 as sampler,
|
|
61
|
+
sculpt2 as sculpt,
|
|
62
|
+
sculptField2 as sculptField,
|
|
63
|
+
sd2 as sd,
|
|
64
|
+
sdf2 as sdf,
|
|
65
|
+
slopeMap2 as slopeMap,
|
|
66
|
+
sweep2 as sweep,
|
|
67
|
+
terrace2 as terrace,
|
|
68
|
+
terrainColor2 as terrainColor,
|
|
69
|
+
terrainGrid2 as terrainGrid,
|
|
70
|
+
text2 as text,
|
|
71
|
+
thermalErosion2 as thermalErosion,
|
|
72
|
+
tiled2 as tiled,
|
|
73
|
+
transportFrames2 as transportFrames,
|
|
74
|
+
triangulate2 as triangulate,
|
|
75
|
+
valueNoise3 as valueNoise,
|
|
76
|
+
valueNoise22 as valueNoise2,
|
|
77
|
+
warp2 as warp
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
//# debugId=5990930430129EC464756E2164756E21
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Vec2, Vec3 } from '../core/index.js';
|
|
2
|
+
/** The profile and segment count lathe was given. */
|
|
3
|
+
interface Facetable {
|
|
4
|
+
readonly profile: readonly Vec2[];
|
|
5
|
+
readonly segments: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function facets(o: Facetable, put: (p: Vec3, n: Vec3, uv: Vec2) => number, tri: (a: number, b: number, c: number) => void, sideUv: (s: number, i: number, r: number) => Vec2): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Mesh, type Vec2, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export interface LatheOptions {
|
|
4
|
+
readonly profile: readonly Vec2[];
|
|
5
|
+
readonly segments: number;
|
|
6
|
+
readonly color: Vec3;
|
|
7
|
+
readonly strip?: StripId;
|
|
8
|
+
/** Rotate the lathe axis from Z onto X or Y (wheels spin about Y). */
|
|
9
|
+
readonly axis?: 'x' | 'y' | 'z';
|
|
10
|
+
readonly at?: Vec3;
|
|
11
|
+
/** Close the ends with fans (solid cylinders/wheels). */
|
|
12
|
+
readonly caps?: boolean;
|
|
13
|
+
/** Profile turns sharper than this (degrees) get split normals: a hard rim, not a smear
|
|
14
|
+
* whose averaged normal opposes one band. Default 50. */
|
|
15
|
+
readonly creaseDeg?: number;
|
|
16
|
+
/** 'metres': true-scale strip mapping. Default 'stretch'. */
|
|
17
|
+
readonly uv?: 'stretch' | 'metres';
|
|
18
|
+
/** Flat facets: one normal per segment (an n-sided prism of revolution). */
|
|
19
|
+
readonly faceted?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function lathe(o: LatheOptions): Mesh;
|
|
22
|
+
/** Convenience: a capped cylinder, the most common lathe. */
|
|
23
|
+
export declare const cylinder: (o: Omit<LatheOptions, 'profile' | 'caps'> & {
|
|
24
|
+
radius: number;
|
|
25
|
+
length: number;
|
|
26
|
+
}) => Mesh;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
import { type SectionKind } from './member.js';
|
|
4
|
+
export type TrussPattern = 'warren' | 'pratt' | 'howe' | 'x';
|
|
5
|
+
export interface LatticeOptions {
|
|
6
|
+
readonly from: Vec3;
|
|
7
|
+
readonly to: Vec3;
|
|
8
|
+
/** Chord-to-chord height in metres (at `from`; `depthEnd` tapers it toward `to`). */
|
|
9
|
+
readonly depth: number;
|
|
10
|
+
readonly depthEnd?: number;
|
|
11
|
+
/** Box truss: chord spacing across, metres (and `widthEnd`). Omit for a planar truss. */
|
|
12
|
+
readonly width?: number;
|
|
13
|
+
readonly widthEnd?: number;
|
|
14
|
+
/** Which way depth rises. Default world Z (world X for a vertical truss). */
|
|
15
|
+
readonly up?: Vec3;
|
|
16
|
+
readonly centred?: boolean;
|
|
17
|
+
readonly pattern?: TrussPattern;
|
|
18
|
+
/** Panels along the length. Default ≈ length / depth. */
|
|
19
|
+
readonly bays?: number;
|
|
20
|
+
/** Chord member width, metres. */
|
|
21
|
+
readonly chord: number;
|
|
22
|
+
/** Web member width. Default 0.6 · chord. */
|
|
23
|
+
readonly web?: number;
|
|
24
|
+
readonly section?: SectionKind;
|
|
25
|
+
readonly color: Vec3;
|
|
26
|
+
readonly strip?: StripId;
|
|
27
|
+
}
|
|
28
|
+
export declare function lattice(o: LatticeOptions): Mesh;
|
|
29
|
+
/** Web members of one face as [t0, onTop0, t1, onTop1], in a fixed order (determinism). */
|
|
30
|
+
export declare function webMembers(pattern: TrussPattern, k: number): [number, boolean, number, boolean][];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export type LoftColor = Vec3 | ((ring: readonly Vec3[], i: number, p: Vec3) => Vec3);
|
|
4
|
+
export interface LoftOptions {
|
|
5
|
+
readonly rings: readonly (readonly Vec3[])[];
|
|
6
|
+
/** One colour, or one per vertex from (ring, ring index, point). */
|
|
7
|
+
readonly color: LoftColor;
|
|
8
|
+
readonly strip?: StripId;
|
|
9
|
+
readonly capStart?: boolean;
|
|
10
|
+
readonly capEnd?: boolean;
|
|
11
|
+
readonly uv?: 'length' | 'row' | 'swap';
|
|
12
|
+
}
|
|
13
|
+
/** An elliptical ring in the plane z = centre.z, CCW seen from +Z; `wobble(angle)` scales radius. */
|
|
14
|
+
export declare function ringXY(centre: Vec3, rx: number, ry: number, segments: number, wobble?: (angle: number) => number, phase?: number): Vec3[];
|
|
15
|
+
export declare function loft(o: LoftOptions): Mesh;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MeshBuilder, Vec2, Vec3 } from '../core/index.js';
|
|
2
|
+
import type { UvRect } from '../material/index.js';
|
|
3
|
+
export type SectionKind = 'square' | 'angle';
|
|
4
|
+
export interface Section {
|
|
5
|
+
/** Profile in the member's (x, y) plane, CCW seen from the far end. */
|
|
6
|
+
readonly ring: readonly Vec2[];
|
|
7
|
+
readonly caps: readonly (readonly [number, number, number])[];
|
|
8
|
+
/** Cumulative perimeter run at each ring vertex, as a fraction 0..1 (V across the strip). */
|
|
9
|
+
readonly run: readonly number[];
|
|
10
|
+
/** Side triangles per member (caps add 2 · caps.length). */
|
|
11
|
+
readonly sideTris: number;
|
|
12
|
+
}
|
|
13
|
+
/** A section of outside width `w`; angle legs are 15% of the width thick. */
|
|
14
|
+
export declare function section(kind: SectionKind, w: number): Section;
|
|
15
|
+
/**
|
|
16
|
+
* Extrude `s` from a to b. `y` is the section's local up (must not be parallel to b − a): put it
|
|
17
|
+
* on the face normal so members lie flush in their truss plane. Caps close both ends.
|
|
18
|
+
*/
|
|
19
|
+
export declare function emitMember(mb: MeshBuilder, s: Section, a: Vec3, b: Vec3, y: Vec3, caps: boolean, color: Vec3, rect: UvRect): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Rng } from '../core/index.js';
|
|
2
|
+
export type Noise2 = (x: number, y: number) => number;
|
|
3
|
+
export interface FractalOptions {
|
|
4
|
+
/** Metres per base feature (the first octave's wavelength). Default 1. */
|
|
5
|
+
readonly scale?: number;
|
|
6
|
+
readonly octaves?: number;
|
|
7
|
+
/** Frequency multiplier per octave. Default 2. */
|
|
8
|
+
readonly lacunarity?: number;
|
|
9
|
+
/** Amplitude multiplier per octave (persistence). Default 0.5. */
|
|
10
|
+
readonly gain?: number;
|
|
11
|
+
}
|
|
12
|
+
/** Perlin gradient noise, feature size 1 m, ≈ [−1, 1]. */
|
|
13
|
+
export declare function gradientNoise2(rng: Rng): Noise2;
|
|
14
|
+
/** Value noise (smoothed random lattice), feature size 1 m, [−1, 1]. Blobbier than gradient. */
|
|
15
|
+
export declare function valueNoise2(rng: Rng): Noise2;
|
|
16
|
+
/** Fractal Brownian motion: the default rolling-hills / rough-surface noise, ≈ [−1, 1]. */
|
|
17
|
+
export declare const fbm: (n: Noise2, o?: FractalOptions) => Noise2;
|
|
18
|
+
/** Billow: |noise| octaves, rounded domes and sharp creases (hills, clouds), [−1, 1]. */
|
|
19
|
+
export declare const billow: (n: Noise2, o?: FractalOptions) => Noise2;
|
|
20
|
+
/**
|
|
21
|
+
* Ridged multifractal (Musgrave): inverted |noise| squared, each octave weighted by the last, so
|
|
22
|
+
* detail piles up on the ridgelines and valleys stay smooth. [0, 1].
|
|
23
|
+
*/
|
|
24
|
+
export declare function ridged(n: Noise2, o?: FractalOptions & {
|
|
25
|
+
readonly offset?: number;
|
|
26
|
+
}): Noise2;
|
|
27
|
+
/** Domain warp: sample `n` at a point pushed by two other noises × `amount` metres (Quílez). */
|
|
28
|
+
export declare const warp: (n: Noise2, wx: Noise2, wy: Noise2, amount: number) => Noise2;
|
|
29
|
+
/**
|
|
30
|
+
* Terraces: snap a height to steps of `step` metres. `sharpness` is the share of each step that is
|
|
31
|
+
* a flat tread (0 = no terracing, 1 = flat treads and vertical risers); the rest is a smooth riser.
|
|
32
|
+
* Strata, rice paddies, open-pit benches.
|
|
33
|
+
*/
|
|
34
|
+
export declare function terrace(h: number, step: number, sharpness?: number): number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Mesh, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export interface PlanarOptions {
|
|
4
|
+
/** Counter-clockwise as seen from the side the face points to. */
|
|
5
|
+
readonly points: readonly Vec3[];
|
|
6
|
+
readonly color: Vec3;
|
|
7
|
+
readonly strip?: StripId;
|
|
8
|
+
readonly doubleSided?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function planar(o: PlanarOptions): Mesh;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Mesh, type Vec2, type Vec3 } from '../core/index.js';
|
|
2
|
+
import { type StripId } from '../material/index.js';
|
|
3
|
+
export interface PrismOptions {
|
|
4
|
+
readonly profile: readonly Vec2[];
|
|
5
|
+
readonly depth: number;
|
|
6
|
+
readonly plane?: 'xz' | 'xy' | 'yz';
|
|
7
|
+
/** Extrusion is centred on the plane unless `from` is given (0 = starts at the plane). */
|
|
8
|
+
readonly centred?: boolean;
|
|
9
|
+
readonly color: Vec3;
|
|
10
|
+
readonly strip?: StripId;
|
|
11
|
+
readonly caps?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function prism(o: PrismOptions): Mesh;
|