A turbogenerator, and several performant views of it
One B-rep assembly — a containerised 42 MW-class natural-gas turbogenerator, 166 distinct parts placed 852 times, from the concrete pad to the exhaust stack, every one mounted to the part it rests on — exported once through SceneReady. One export, a chain of views, each with a measured cost: every number on this page is read out of the manifest or measured in the viewer.
Drag to orbit, scroll to zoom. 1–5 display mode, i f t s view — remembered across file swaps. One viewer, one WebGL context, drives every panel below.
Performant views
The same assembly, four files. Nothing is re-modeled between them and nothing is re-tessellated in the browser: the LOD chain is built once at export by quadric edge collapse that keeps every part closed at every level (no holes, no flipped facets — the build refuses a level that opens), and the page switches level by loading the file for it.
Which view is on screen
Switching keeps the camera, the display mode and everything you have set below, so the comparison is like for like.
| file | bytes | triangles drawn | draw calls | without instancing | load ms | first frame ms | fps |
|---|
Motion — the run clip
The rotor turns and the variable stator stage strokes through its travel. One clip, driven by the viewer's own transport.
Exploded view
One multiply-add per node: p′ = p + explodeUnit · explodeDistanceMm ·
factor. The distance is one step per level of the mount tree (pad → skid → walls and
engine → what sits on them …) and the direction is away from the very thing each placement is
mounted to — dropped onto the upper hemisphere, because into the ground is the one direction
that is not a place. So the plant still lifts out of the pad in layers, but a ring of thirty
fuel nozzles opens off its casing and a gearbox hung underneath swings out sideways instead of
through what it hangs from. Both are precomputed at export from each placement's
mount.parent and its measured extents; the engine close-up carries its own
table, counted from the engine's root part.
Isolate a group
Turn the enclosure off to get at the engine; turn everything but the engine off to get at the stage. Hiding is per node, so an instanced row disappears with all of its placements.
Section plane
A vertical plane through the engine centreline — a clip plane on the renderer, so it cuts the surfaces, the B-rep edge lines and the drawing fill in one pass. Turning it on puts it exactly on the axis; the slider walks it sideways, ±1.5 m across the enclosure.
The blade's two appearances
Both materials are in the file already. The swap is one material index on one mesh — no re-fetch, no second scene.
Camera bookmarks
Framed from each group's own centre and extent in the manifest, not from hand-typed camera positions.
What is in the scene
| group | parts | placements | mass | triangles LOD0 | triangles LOD2 |
|---|
Every part
One row per distinct part: what it is, how many times it is placed, which material class it takes, and what it costs at the two ends of the LOD chain. A part with more than one placement is a single mesh in the file with a matrix per placement.
| group | part | placed | material | tri LOD0 | tri LOD2 | edge segs |
|---|
How it was built
Every part here is a kernel-built B-rep solid, not a mesh: authored through
the same modeling calls an agent makes, written out as STEP AP242 and read back, then tessellated
once per part off its own surfaces — so the shading uses the surfaces' normals and the lines
you see in shaded + edges and drawing are every EDGE_CURVE
sampled off its own curve, shipped in the file as a line set, rather than a guess at an edge set
from triangle angles. The glTF carries the scene graph, GPU instancing, the LOD chain, materials and
the kinematics clip: 166 parts, 852 placements, one STEP assembly.
The first-stage rotor blade in the engine — the one placed 80 times, and the one part in this scene that carries a second appearance — has a page of its own, where three of its dimensions were moved and four independent solvers were asked at every point whether it was still acceptable: a turbine blade, boxed in by four solvers →
Take the files
The four glTF binaries this page loads and the manifest it reads. They open in any glTF viewer; the manifest is plain JSON.
More demos
All demos →A supersonic engine core, rebuilt from public photos
Compressor, turbine, fuel system and build stand, stacked on the plate the way the shop builds it.
4,447 bodies in one build Turbine bladeA turbine blade, boxed in by four solvers
Castability, rim load, tip clearance and aero each draw a wall, and the picked blade clears every one.
8 solved designs to compare IMTS casingA jet-engine casing, from a reference photo to a solved model
A machined casing rebuilt from one photo, every island fillet blended and the machining check passed.
42/42 root fillets blended Rear differentialOne wheel held, the other turns twice as fast
A complete rear differential with every bolt modelled, driven only by its mates, its feature tree open.
59 parts · 123 matesBuild your own part with NativeCAD
Free for education and makers with a registered key · $200 per seat per year · Kernel SDK for products.