Every file in this directory, its license, and what was done to it.
| Files | rubber004_normal.jpg, rubber004_rough.jpg |
| Source | https://ambientcg.com/view?id=Rubber004 |
| Provider | ambientCG (Lennart Demes) |
| License | CC0 1.0 Universal (public domain dedication) |
| License verified | https://ambientcg.com/license — “licensed under the Creative Commons CC0 1.0 Universal License” |
| Retrieved | 2026-08-03 |
| Tile size | 75 × 75 mm (the provider’s stated physical scale) |
CC0 requires no attribution. This record exists anyway, because an engineering tool should be able to account for every pixel it ships.
Downloaded as the 1K-JPG set (8.4 MB). From it, only the NormalGL and Roughness maps were kept, resized to 512 × 512 and re-encoded as progressive JPEG at quality 88 — 114 KB total.
Deliberately not used:
src/geometry/tire.js).512 px is not a compromise: these are seamless micro-detail maps tiled dozens of times around a tire’s circumference, so resolution beyond the tile’s own physical scale buys nothing visible and costs weight on a GitHub Pages site.
Tiling is derived from real physical dimensions, not guessed. For an 11R22.5 the circumference is π × 1054 mm = 3311 mm, which is 3311 / 75 = 44.1 tiles; the tire mesh’s own UVs already repeat 11 times, so the texture repeat is 44.1 / 11 = 4.01. Rubber grain is therefore the same physical size on a motorcycle tire as on an aircraft tire, as it is in life.
Recording these matters as much as recording what shipped: the next person to ask “why isn’t there a metal texture?” deserves the answer.
https://ambientcg.com/view?id=Metal012, also CC0.
Two independent reasons:
The underlying point is physical: machined metal is characterized by what
it reflects, and the studio environment map (src/scene/environment.js)
already supplies that. Rubber gains from measured micro-detail because
rubber genuinely is micro-detailed.
https://polyhaven.com/license confirms CC0 with redistribution explicitly
permitted, so licensing was not the obstacle. Dimensions were checked
against the 1.6× distortion cap in ASSETS.md §4:
| Mesh | Actual size | Scaled to 11R22.5 | Verdict |
|---|---|---|---|
old_tyre |
600 × 165 mm | 1.757× | exceeds the cap |
rusted_wheel_rim_01 |
403 × 154 mm | 2.615× | exceeds the cap |
Both are car parts, not truck parts, and both are tagged by their
authors as trash / scrapyard / junkyard / rusted. They do fit the light
FHWA classes within the cap (old_tyre → P225/60R16 is 1.364×), but a
rusted scrapyard car tire is an appearance downgrade for a pavement
engineering figure, on precisely the vehicle classes that matter least for
pavement loading.
The procedural tire is dimensionally exact for any designation in the library, including sizes nobody has modeled. It remains the reference implementation.
No CC0 truck wheel, truck tire or aircraft landing gear mesh was found. Poly Haven’s 521-model library is props, tools and furniture; the search covered every asset whose name, tags or categories matched wheel, tire, truck, vehicle, aircraft, axle or industrial.
Follow ASSETS.md. Record the source URL, the license identifier and the
author in the manifest entry. If those three cannot be stated, the asset
does not go in.