Extensible Scalable 3D - Describing three-dimensional web scenes by parameters: the ES3D format and its reference implementation
Authors/Creators
Description
Abstract
Let us start by looking at the web today. 3D (three-dimensional) content is formatted as
tessellated triangles as standard. The exporter creates fixed geometry, and raising quality or
adding copies of an object substantially increases file size, which is suitable for 3D printing or
professional rendering, but hardly necessary for websites. As long as the design looks nearly
identical, e.g. each difference is less than a pixel, the render is satisfactory. This paper is an early
introduction to ES3D (Extensible Scalable 3D), a declarative scene format that is inspired by the
2D SVG (Scalable Vector Graphics) format. The ES3D file format uses SVG-style paths such as
extrude, revolve, swept and involute gears, repetition and seeded procedural placement stored as
parameters and the file is converted into triangular mesh on the client’s side. The level of detail is
a chordal-error bound, meaning a renderer draws the roughest mesh that fits within one pixel,
whilst procedural placement is identical between devices, so each client sees an identical instance.
This paper sets out to define the format, its syntaxes and reference implementations. This includes
a JavaScript reader which uses WebAssembly kernels, WebGPU and WebGL2 renderers, and a
persistent geometry cache. Across nine benchmark scenes with identical triangles, in the six
procedural scenes beyond a single cube, minified ES3D documents of 0.6–1.2 kB (gzip) replace
instanced glTF files of 83–685 kB, making them roughly 100 to 790 times smaller. Without
procedural structure, the scanned mesh remains close to quantised glTF in size (703.5 kB against
743.7 kB).
Key findings
Parameter-dependent geometry is reliant on the level of scene complexity, not triangle
count. In the mentioned benchmarks, 598 bytes hold a forest of 7,401 instances and almost two million
triangles, whilst a stress test of 39 million triangles is 581 bytes. On scenes built from shapes, paths and
repetition, ES3D files are multiple orders of magnitude smaller than glTF and OBJ, which, with proper
setup, can reduce bandwidth required on origin servers, but, as a consequence, the user’s device bears
the rendering load. On the two phones tested, ES3D drew the two largest scenes 2.2–3.5 times faster than
three.js drew instanced glTF, but mesh bodies like a scan experienced little to no benefits compared to
quantised glTF files. ES3D is not a replacement for modern 3D file formats, but is better in specific use
cases.
Files
ES3D-wp.pdf
Additional details
Related works
- Is documented by
- Software: https://github.com/bitilia/es3d (URL)
- Is supplemented by
- Other: https://es3d.org/ (URL)
Software
- Repository URL
- https://github.com/bitilia/es3d
- Programming language
- JavaScript , C
- Development Status
- Concept