Files
artcraft/frontend/apps
BFlat cc8a124bdb feat(webapp): add 3D Object (mesh) and 3D World (splat) create pages
Wire up the new omni_gen mesh + splat endpoints in the frontend and add two
new create pages that mirror the existing Create Image / Create Video flow.
Backend was already shipped; this is frontend-only.

API layer (libs/api, libs/omni-gen):
- OmniGenApi: add mesh + splat request/response/model-info types and the six
  new methods (models/cost/generate for mesh and splat)
- Add useOmniGenMeshModels / useOmniGenSplatModels session-cached model hooks

Pages (apps/artcraft-webapp):
- New /create-object (3D Object) and /create-world (3D World) page trios
  (page + zustand store + generate/poll api), cloned from create-image
- Capability-gated controls per selected model: mesh output type, polygon type,
  geometry/texture quality, face count, PBR + texture toggles, multi-view
  (front/back/left/right) and mesh-file inputs; splat panorama + disable-recaption
  toggles and reference video
- Add useMeshCostEstimate / useSplatCostEstimate credit hooks
- Register routes in app.tsx and add "3D Object" / "3D World" sidebar entries

Shared generation feed (libs/components/generation-list + webapp gallery):
- Teach useGenerationJobs the object_generation / splat_generation inference
  categories, surfaced as the "dimensional" media class
- Render 3D result cards from the media file's cover image / screenshot
- useGalleryData: optional model-id filter so the object and world feeds only
  show their own generations
- Widen InProgressJob / FailedJob / PendingCard / RecreateSlotContext media
  class to include "dimensional"

Clicking a 3D card opens the existing Viewer3D lightbox (already handles .glb
meshes and .spz splats). No backend changes.
2026-07-08 20:04:20 +07:00
..
2026-06-16 02:53:06 -04:00