Showcase · SceneReady

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.

Display
View

Loading the scene…

File
Close-up
Show

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.

Bytes, triangles and draw calls are the export's own counts; load, first frame and fps are measured in this browser, on this page, now. They are not written back into manifest.json — firstFrameMs ships null there on purpose.
filebytestriangles drawn draw callswithout instancing load msfirst frame msfps

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.

0.00 s

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.

0 %

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.

off

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

grouppartsplacementsmasstriangles LOD0triangles 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.

grouppartplacedmaterialtri LOD0tri LOD2edge 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 →

Build your own part with NativeCAD

Free for education and makers with a registered key · $200 per seat per year · Kernel SDK for products.