All docs
Docs/ API Reference/ lsdtools.procedural reference
API Reference

lsdtools.procedural reference

Generated public SDK reference for lsdtools.procedural.

SDK distribution 1.0.0; API contract 1.0; generator 1.0.0.

Product source digest: 13800cef04184609594a0b15f310d52e8ece337faa4be2176039a5286946127b.

Generated from declared public exports and source syntax. Signatures and annotations are declaration spellings; decorators, factories and annotations are never executed. Class members below are declared members; base classes remain explicit. Source docstrings describe their owning implementation; they do not grant app permissions.

text
Lazy mesh authoring facade over the numerical service and native Mesh Studio.

Games may evaluate recipes without Engine or GTK. Pipeline adapters import Engine
only when selected; editor construction consumes explicit frontend project ports.

lsdtools.procedural.BuildProceduralMesh#

Kind: class. Source: services/procedural/src/lsd_procedural/steps.py:119.

Source docstring:

text
Evaluate an explicit retained recipe into a lossless typed mesh product.

Implementation alias: lsd_procedural.steps.BuildProceduralMesh.

Declared bases: LoadStep.

lsdtools.procedural.BuildProceduralMesh.type_id#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:121.

Python
type_id = 'lsd-procedural.build_mesh'

lsdtools.procedural.BuildProceduralMesh.output_ports#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:122.

Python
output_ports = ['mesh']

lsdtools.procedural.BuildProceduralMesh.cache_pin#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:123.

Python
cache_pin = 'lsd-procedural-mesh-product-v1'

lsdtools.procedural.BuildProceduralMesh.recipe#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:124.

Python
recipe = param(dict, required=True, label='Mesh recipe', validators=[_validate_recipe], description='Bounded version-1 recipe with stable parts and retained procedural inputs.')

lsdtools.procedural.BuildProceduralMesh.run#

Kind: method. Source: services/procedural/src/lsd_procedural/steps.py:127.

Python
run(self)
Python
self: (unannotated)

lsdtools.procedural.ExportProceduralMesh#

Kind: class. Source: services/procedural/src/lsd_procedural/steps.py:210.

Source docstring:

text
Deliver a tracked mesh product, interchange assets and runtime objects table.

Implementation alias: lsd_procedural.steps.ExportProceduralMesh.

Declared bases: DeliverStep.

lsdtools.procedural.ExportProceduralMesh.type_id#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:212.

Python
type_id = 'lsd-procedural.export_mesh'

lsdtools.procedural.ExportProceduralMesh.input_ports#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:213.

Python
input_ports = ['mesh']

lsdtools.procedural.ExportProceduralMesh.output_ports#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:214.

Python
output_ports = ['product', 'glb', 'obj', 'objects']

lsdtools.procedural.ExportProceduralMesh.cache_pin#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:215.

Python
cache_pin = 'lsd-procedural-export-v1:' + hashlib.sha256(_canonical(_DELIVERY_PROFILE)).hexdigest()

lsdtools.procedural.ExportProceduralMesh.run#

Kind: method. Source: services/procedural/src/lsd_procedural/steps.py:217.

Python
run(self, inputs)
Python
inputs: (unannotated)
self: (unannotated)

lsdtools.procedural.MeshError#

Kind: class. Source: services/procedural/src/lsd_procedural/geometry.py:23.

Source docstring:

text
An invalid or over-budget mesh description.

Implementation alias: lsd_procedural.geometry.MeshError.

Declared bases: ValueError.

lsdtools.procedural.MeshSession#

Kind: class. Source: services/procedural/src/lsd_procedural/model.py:274.

Python
MeshSession(self, recipe=None)

Source docstring:

text
One bounded authoring document; hosts retain responsibility for role/approval.

The local command boundary is not a replacement wire or an authorization broker.
A composing LSD View maps its declared actions to dispatch after normal approval.

Implementation alias: lsd_procedural.model.MeshSession.

lsdtools.procedural.MeshSession.__init__#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:280.

Python
__init__(self, recipe=None)
Python
recipe: (unannotated)
self: (unannotated)

lsdtools.procedural.MeshSession.revision#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:292.

Python
revision(self)
Python
self: (unannotated)

lsdtools.procedural.MeshSession.asset#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:297.

Python
asset(self)
Python
self: (unannotated)

lsdtools.procedural.MeshSession.snapshot#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:301.

Python
snapshot(self)
Python
self: (unannotated)

Source docstring:

text
Read an immutable asset and its revision together under one lock.

lsdtools.procedural.MeshSession.dispatch_snapshot#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:306.

Python
dispatch_snapshot(self, action, params=None)
Python
action: (unannotated)
params: (unannotated)
self: (unannotated)

Source docstring:

text
Bind a command receipt to its exact asset, recipe and inspection state.

Native hosts may call this in a worker and publish the returned detached
data on their UI thread. No callback runs while this lock is held.

lsdtools.procedural.MeshSession.recipe#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:317.

Python
recipe(self)
Python
self: (unannotated)

lsdtools.procedural.MeshSession.describe#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:321.

Python
describe(self)
Python
self: (unannotated)

lsdtools.procedural.MeshSession.dispatch#

Kind: method. Source: services/procedural/src/lsd_procedural/model.py:435.

Python
dispatch(self, action, params=None)
Python
action: (unannotated)
params: (unannotated)
self: (unannotated)

Source docstring:

text
Return a JSON-safe receipt; rejected edits preserve geometry and history.

lsdtools.procedural.RenderProceduralMesh#

Kind: class. Source: services/procedural/src/lsd_procedural/steps.py:151.

Source docstring:

text
Preview geometry and authored corner shading through the existing mesh viewer.

Implementation alias: lsd_procedural.steps.RenderProceduralMesh.

Declared bases: DeliverStep.

lsdtools.procedural.RenderProceduralMesh.type_id#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:153.

Python
type_id = 'lsd-procedural.render_mesh'

lsdtools.procedural.RenderProceduralMesh.input_ports#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:154.

Python
input_ports = ['mesh']

lsdtools.procedural.RenderProceduralMesh.viewer_payload_type#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:155.

Python
viewer_payload_type = LayerPayload

lsdtools.procedural.RenderProceduralMesh.layer_kind#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:156.

Python
layer_kind = 'mesh'

lsdtools.procedural.RenderProceduralMesh.value_binding#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:157.

Python
value_binding = 'column'

lsdtools.procedural.RenderProceduralMesh.cache_pin#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:158.

Python
cache_pin = 'lsd-procedural-preview-v1'

lsdtools.procedural.RenderProceduralMesh.layer#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:159.

Python
layer = param(str, default='', group='Render', description='Layer id; blank uses entity and step.')

lsdtools.procedural.RenderProceduralMesh.view#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:160.

Python
view = param(str, default='', group='Render', description='In-scene view; blank uses current.')

lsdtools.procedural.RenderProceduralMesh.target#

Kind: attribute. Source: services/procedural/src/lsd_procedural/steps.py:161.

Python
target = param(str, default='', group='Render', description='Main-view target; blank uses active viewer.')

lsdtools.procedural.RenderProceduralMesh.run#

Kind: method. Source: services/procedural/src/lsd_procedural/steps.py:163.

Python
run(self, inputs)
Python
inputs: (unannotated)
self: (unannotated)

lsdtools.procedural.build_mesh_product#

Kind: function. Source: services/procedural/src/lsd_procedural/product.py:154.

Python
build_mesh_product(asset: Asset, recipe: dict, *, source: dict | None=None) -> Mapping[str, bytes]
Python
asset: Asset
recipe: dict
source: dict | None

Source docstring:

text
Encode an exact evaluated recipe as immutable portable product files.

The supplied asset is checked against a fresh evaluation so an accidental
stale asset/recipe pair cannot acquire false lineage. Reads never evaluate
the recipe. ``source`` is None offline, or the complete detached canonical
configuration SourceBinding record; an editor draft revision is not one.

Implementation alias: lsd_procedural.product.build_mesh_product.

lsdtools.procedural.can_edit_mesh#

Kind: function. Source: sdk/src/lsdtools/procedural.py:113.

Python
can_edit_mesh(entity)
Python
entity: (unannotated)

Source docstring:

text
Coarse entity eligibility; opening always validates an exact published source.

A published entity deliberately has no executable configurable instances.
It is an eligible route carrier; the exact source belongs to its project
snapshot and is checked by create_mesh_editor/open_mesh_editor.

lsdtools.procedural.compile_recipe#

Kind: function. Source: services/procedural/src/lsd_procedural/model.py:153.

Python
compile_recipe(recipe: dict) -> Asset
Python
recipe: dict

Source docstring:

text
Compile v1 JSON into detached geometry; never execute code or touch files.

Implementation alias: lsd_procedural.model.compile_recipe.

lsdtools.procedural.create_mesh_editor#

Kind: function. Source: sdk/src/lsdtools/procedural.py:148.

Python
create_mesh_editor(context, *, configurable_id, entity=None, view_id)
Python
configurable_id: (unannotated)
context: (unannotated)
entity: (unannotated)
view_id: (unannotated)

Source docstring:

text
Compose one source-bound editor; its ConfigurationDraft owns history and Save.

lsdtools.procedural.example_recipe#

Kind: function. Source: services/procedural/src/lsd_procedural/presets.py:27.

Python
example_recipe(name: str, seed: int=0) -> dict
Python
name: str
seed: int

Implementation alias: lsd_procedural.presets.example_recipe.

lsdtools.procedural.expanded_mesh_arrays#

Kind: function. Source: services/procedural/src/lsd_procedural/product.py:341.

Python
expanded_mesh_arrays(mesh: MeshData) -> ExpandedMeshArrays
Python
mesh: MeshData

Source docstring:

text
Split corners only when geometric index, normal or UV differs.

A downstream assembly must pair source_vertices with its component identity;
vertex zero in two components is two different geometric vertices. A UV-less
preview may use positions/normals and factor colors while preserving UVs and
PBR material values in the typed product. That is an explicit preview profile,
not a lossless renderer mesh-asset or GLB import/export claim.

Implementation alias: lsd_procedural.product.expanded_mesh_arrays.

lsdtools.procedural.export_glb#

Kind: function. Source: services/procedural/src/lsd_procedural/export.py:52.

Python
export_glb(asset: Asset) -> bytes
Python
asset: Asset

Source docstring:

text
Export a self-contained glTF 2.0 binary, rotating Z-up assets to Y-up.

Each named part is one node/mesh/primitive and shares the asset's named PBR
materials. Each part uses local float32 vertex buffers and a node translation
preserving its authored placement in meters. Its bounds center is subtracted
in float64 before conversion; normals and UVs retain their corner association.
Output has no timestamps, external resources or executable payloads.

Implementation alias: lsd_procedural.export.export_glb.

lsdtools.procedural.export_obj#

Kind: function. Source: services/procedural/src/lsd_procedural/export.py:160.

Python
export_obj(asset: Asset) -> str
Python
asset: Asset

Source docstring:

text
Return geometry-only Wavefront OBJ text in the source meter/Z-up frame.

OBJ retains corner UVs/normals and named objects. Materials are deliberately
omitted; use GLB for color/PBR transport. No external MTL file is referenced.

Implementation alias: lsd_procedural.export.export_obj.

lsdtools.procedural.files_from_mesh_table#

Kind: function. Source: services/procedural/src/lsd_procedural/steps.py:70.

Python
files_from_mesh_table(table: pa.Table) -> Mapping[str, bytes]
Python
table: pa.Table

Source docstring:

text
Decode independently, preserving required codec stamps beside host metadata.

Implementation alias: lsd_procedural.steps.files_from_mesh_table.

lsdtools.procedural.generator_catalog#

Kind: function. Source: services/procedural/src/lsd_procedural/procedural.py:67.

Python
generator_catalog()

Implementation alias: lsd_procedural.procedural.generator_catalog.

lsdtools.procedural.inspect_mesh#

Kind: function. Source: services/procedural/src/lsd_procedural/inspect.py:13.

Python
inspect_mesh(mesh: MeshData) -> dict
Python
mesh: MeshData

Source docstring:

text
Return JSON-compatible measurements; never infer welded topology from UVs.

``closed`` means all indexed edges have two incident faces, with no duplicate
or degenerate triangles. This does not certify an embedded solid: triangle
intersections, nested-shell intent and vertex-link manifoldness are not tested.
Volume uses the oriented-surface integral, so callers must retain those caveats.

Implementation alias: lsd_procedural.inspect.inspect_mesh.

lsdtools.procedural.inspect_mesh_product#

Kind: function. Source: services/procedural/src/lsd_procedural/product.py:275.

Python
inspect_mesh_product(files: Mapping[str, bytes]) -> dict
Python
files: Mapping[str, bytes]

Source docstring:

text
Return bounded lineage and channel signatures after complete validation.

Signatures distinguish topology/vertex domain, positions, shading and material
changes. They identify bytes, not a promise that an old rig is compatible.

Implementation alias: lsd_procedural.product.inspect_mesh_product.

lsdtools.procedural.mesh_dependencies#

Kind: function. Source: sdk/src/lsdtools/procedural.py:49.

Python
mesh_dependencies(backend, *, configurable_id)
Python
backend: (unannotated)
configurable_id: (unannotated)

Source docstring:

text
Inspect current data connections around one source without inferring rig compatibility.

Uses only published bindings. Source tags in exported tables are descriptive
hints and cannot authorize edits or substitute for this project graph.

lsdtools.procedural.mesh_product_recipe#

Kind: function. Source: services/procedural/src/lsd_procedural/product.py:270.

Python
mesh_product_recipe(files: Mapping[str, bytes]) -> dict
Python
files: Mapping[str, bytes]

Source docstring:

text
Return detached source data after complete product validation; never evaluate it.

Implementation alias: lsd_procedural.product.mesh_product_recipe.

lsdtools.procedural.mesh_product_table#

Kind: function. Source: services/procedural/src/lsd_procedural/steps.py:58.

Python
mesh_product_table(files: Mapping[str, bytes]) -> pa.Table
Python
files: Mapping[str, bytes]

Source docstring:

text
Persist a completely validated product as one strict typed Arrow value.

Implementation alias: lsd_procedural.steps.mesh_product_table.

lsdtools.procedural.mesh_sources#

Kind: function. Source: sdk/src/lsdtools/procedural.py:30.

Python
mesh_sources(backend, *, entity_id=None)
Python
backend: (unannotated)
entity_id: (unannotated)

Source docstring:

text
Describe every exact mesh source in the held publication, never a guessed first step.

lsdtools.procedural.open_mesh_editor#

Kind: function. Source: sdk/src/lsdtools/procedural.py:164.

Python
open_mesh_editor(context, *, entity, configurable_id)
Python
configurable_id: (unannotated)
context: (unannotated)
entity: (unannotated)

Source docstring:

text
Present one exact source through the shared native main-view route.

lsdtools.procedural.operation_catalog#

Kind: function. Source: services/procedural/src/lsd_procedural/geometry.py:551.

Python
operation_catalog()

Source docstring:

text
Return detached JSON schemas for every supported operation.

Implementation alias: lsd_procedural.geometry.operation_catalog.

lsdtools.procedural.parse_recipe_text#

Kind: function. Source: services/procedural/src/lsd_procedural/model.py:101.

Python
parse_recipe_text(text: str)
Python
text: str

Source docstring:

text
Bounded strict JSON parsing for recipe files, widget drafts and requests.

Duplicate keys and nonfinite literals are errors. This parses data only;
compile_recipe supplies the shape/semantic validation.

Implementation alias: lsd_procedural.model.parse_recipe_text.

lsdtools.procedural.read_mesh_product#

Kind: function. Source: services/procedural/src/lsd_procedural/product.py:265.

Python
read_mesh_product(files: Mapping[str, bytes]) -> Asset
Python
files: Mapping[str, bytes]

Source docstring:

text
Validate every declared file and return an immutable, independently decoded asset.

Implementation alias: lsd_procedural.product.read_mesh_product.

lsdtools.procedural.recipe_schema#

Kind: function. Source: services/procedural/src/lsd_procedural/schema.py:6.

Python
recipe_schema()

Source docstring:

text
Return a fresh schema; no caller can change another session's catalog.

Implementation alias: lsd_procedural.schema.recipe_schema.

lsdtools.procedural.template_catalog#

Kind: function. Source: services/procedural/src/lsd_procedural/presets.py:23.

Python
template_catalog()

Implementation alias: lsd_procedural.presets.template_catalog.

By LSD Team · Last updated Oct 16, 2026 Ask a question View as Markdown
Type to search every doc, guide, and tutorial.
↑↓ navigate↵ openesc close