Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unified Mesh Loading API #7529

Closed
fm3 opened this issue Jan 9, 2024 · 1 comment · Fixed by #7587
Closed

Unified Mesh Loading API #7529

fm3 opened this issue Jan 9, 2024 · 1 comment · Fixed by #7587

Comments

@fm3
Copy link
Member

fm3 commented Jan 9, 2024

There are currently three different APIs for meshes: precomputed v3, precomputed (legacy), ad-hoc.

Can we provide a unified API for all three?

Things to consider

  • LODs
  • mags
  • multiple meshfiles can exist for the same segmentation
  • encodings/compression (DRACO,stl,…)
  • mappings (some meshfiles are computed for oversegmentation. need to request all the meshes mapped to target id)

Rough Design:

  • LIST SOURCES: List available mesh sources (meshfiles, adhoc, remote?)
  • METADATA + PARAMETER RANGES: Second route (or as part of first one) to query metadata for a mesh source:
    • available parameter ranges
      • Numeric (LODs, mags, subsamplingStrides)
      • Applyable Mappings (mapping name in case of mapping-specific meshfile, ANY in case of oversegmentation meshfile or adhoc mapping)
    • encoding info (DRACO,stl,…)
    • needs NEIGHBORS logic
  • LIST CHUNKS
    • For a mesh source, and a segment/agglomerate id, a mag, an LOD, a mapping name, list available chunks (returns transform, offset and for each chunk a position)
  • CHUNK DATA
    • data for a list of chunks (as identified by mesh source, segmentId/agglomerateId, mappingName, lod, mag, position)
    • may return more chunks than are requested (in case of mapping and oversegmentation meshfile)
    • needs to return metadata as well (byte lengths of returned chunks + counts per position)

Problem:

  • NEIGHBORS case
    • no list chunks, instead data by single seed position (from click), response has NEIGHBORS header

Question:

  • request multiple LODs in one request?
  • tracingstore vs datastore? should both offer this route? frontend needs to distinguish? (meshfiles are only on datastore. for editable mappings, datastore requests segment list from tracingstore)

Alternative thought

  • new route for loading the whole mesh (backend puzzles it together)
  • or just use the old routes in libs
@fm3
Copy link
Member Author

fm3 commented Jan 24, 2024

Summary of decisions from meeting:

  • add routes for loading a whole mesh (backend puzzles it together, serves stl)

  • drop support for “old” meshfile format, perform migration for existing files

  • frontend can continue to use existing chunked data loading routes

  • python client should download whole mesh, using seed positions passed from frontend in case of ad-hoc without segment index

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant