Skip to content

Research: a detailed, licensed CAD model of a specific engine for graphics quality #8

Description

@PouyanJay

Every model in the app is generated in TypeScript. That keeps the repository self-contained and lets the separation and mechanism code know every piece, but the geometry is deliberately generic. The largest possible step in visual quality is a detailed, licensed model of one specific real engine. This issue is to investigate and decide, not to build yet.

What is needed

A written recommendation, added under docs/, that answers:

  • Which engine to source, and from where. Candidates include manufacturer education programmes, university CAD repositories, and commercial marketplaces with explicit licences.
  • Licence terms: whether redistribution in a public repository is allowed, attribution requirements, and whether derived works (our part naming, decimation, separation metadata) are permitted.
  • Technical fit: units, coordinate conventions, level of detail, triangle count, and whether the model comes as a hierarchy with named parts or as a single mesh. The separation feature needs individual pieces with stable identities, so a single mesh is of little use.
  • Delivery: whether the asset would live in the repository, be fetched at runtime, or ship as an optional download, and what that means for the current "no network needed" property.
  • Effort: what the import pipeline would look like (glTF with a part manifest is the likely format) and how the existing catalog, picking, labels, cutaway and separation would map onto imported parts.

Success criteria

  • A document in docs/ with a comparison of at least three candidate sources and a clear recommendation, or a clear recommendation not to proceed.
  • The licence for the recommended asset has been read in full and the relevant clauses are quoted.
  • A small proof of concept branch that loads a glTF file into the scene, registers its parts with the separation controller, and passes the identity and reassembly checks. This proves the pipeline before any purchase.
  • A note in docs/ARCHITECTURE.md recording the source, licence, units, coordinate conventions, level of detail and hierarchy, as the existing Graphics section already asks for.

Suggested approach

  • Add a glTF loading path to the scene behind a feature flag. Map each named node to a piece, and read a sidecar manifest that assigns nodes to component groups. The catalog in lib/engine/engine-data.ts gains an optional source: 'generated' | 'imported' field.
  • Test the pipeline with a free, permissively licensed model first (for example a Creative Commons turbine from a public repository) so the code work is not blocked on procurement.
  • Decimate and compress with the standard glTF tooling (Draco or Meshopt) and measure load time on a mid-range phone before deciding on delivery.
  • Keep the generated models as the default. An imported model should be an additional entry in the engine library, not a replacement, so the educational reference set stays intact.

Out of scope

Buying anything, and replacing the generated engines.

Touchpoints

docs/, components/engine/engine-scene.tsx, lib/engine/engine-data.ts, lib/engine/explosion-controller.ts

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: dataCatalog, imported datasets, external assetsarea: sceneThree.js scene, geometry, cameras, renderingdocumentationImprovements or additions to documentationpriority: lowNice to haveresearchNeeds investigation or a decision before buildingv0.2.0Planned for the v0.2.0 release

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions