# Car models — credits, licences and preparation

## What is actually included

Four licensed imports are bundled. **The Audi A4 is included strictly for non-commercial use, retaining its archive's CC BY 3.0 licence and separate non-commercial fan-art restriction. This bundled edition must not be used commercially with that asset; the other assets retain their own licences.** **They are artist-authored models, not manufacturer CAD or a promise of ultra-realism.** Variants are identified honestly rather than applying modern trim names to older geometry.

| Garage selection           | Imported body / creator                           | Approximate browser asset                      |
| -------------------------- | ------------------------------------------------- | ---------------------------------------------- |
| Volkswagen Golf            | Classic **Golf II**, by **ARDmation**             | 3.3 MB, 15k triangles; textured low-poly model |
| BMW 3 Series               | **M3 sedan**, by **stefrolland**                  | 7 MB, 167k triangles; not the previous 320i    |
| Tesla Model 3              | **2018 pre-refresh Model 3**, by **Ameer Studio** | 7.4 MB, 302k triangles                         |
| Audi A4 (City Red default) | **2008 source-labelled body**, by **amogh**       | 5.7 MB, 284k triangles; non-commercial only    |

**Toyota RAV4 and Mercedes-Benz E-Class still use original simplified placeholders.** Surrounding traffic always uses the lightweight original models. Each selected import is loaded locally, cached within the game and reused for the player; it is not multiplied across all traffic vehicles. Failed loads disclose their fallback and offer retry. No account, remote API, CDN or decoder is required to play.

The UI exposes **Model credits**, artist attribution in the garage and driving view, and distinguishes a licensed import from a simplified placeholder. The A4's non-commercial restriction is visible next to the model credit; the driving credit opens the full notices while pausing the simulation. Physics/performance numbers are representative simulation settings, not identification of a particular engine trim or manufacturer-validated dynamics.

## Attribution — retain with redistribution

The Tesla, Golf II and BMW imports are used under **[Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)**. [Local complete licence text](../licenses/CC-BY-4.0.txt).

### Tesla

**“Tesla 2018 Model 3” by [Ameer Studio](https://sketchfab.com/uchiha.321abc)**.

- [Original model](https://sketchfab.com/3d-models/tesla-2018-model-3-5ef9b845aaf44203b6d04e2c677e444f)
- [Captured original-platform metadata](provenance/model3-sketchfab.json)
- Acquisition: pinned `jamesalmeida/tesla-infotainment` mirror recorded in the catalogue. Embedded original title, source, author and licence match the creator's listing; the mirror's code licence is **not** the permission for the car.
- **Berlin Drive modifications:** normalized approximate dimensions/orientation/ground origin; retained exterior/glazing topology; simplified dense interior and wheel detail; rebuilt consolidated PBR materials; removed texture maps and plate layers; split paired wheels into steering/spin hierarchies; exposed paint, brake and left/right turn channels; merged static geometry within animation subtrees.
- **Indicator repair:** the source's rear turn strips were only about 9 mm high and hidden behind the exterior. Their apertures are enlarged and moved onto the lens. The signal shader preserves a readable amber colour under the renderer's exposure. This is a visibility adaptation, not a surveyed lamp assembly.

### Volkswagen

**“Volkswagen Golf II” by [ARDmation](https://sketchfab.com/ardmation)**.

- [Original model](https://sketchfab.com/3d-models/volkswagen-golf-ii-740500f10bc94e7a91c2290e445fcb39)
- [Captured original-platform metadata](provenance/golf-sketchfab.json)
- The creator describes a scratch-built Blender model with Substance Painter textures and CC BY 4.0. The [download mirror](https://downloadfree3d.com/3d-models/vehicles/car/volkswagen-golf-ii-low-poly/) credits the same creator and supplies the original OBJ/MTL plus texture archive. The cached glTF mirror also carries matching embedded author/source/licence metadata; it was inspected for provenance, but the bundled derivative is prepared from the fuller OBJ/texture archive instead.
- **Berlin Drive modifications:** normalized approximately to 3.985 × 1.90 × 1.415 m; retained authored body, cabin, wheels and UVs; resized used textures to 512 px; retained paint normal detail while making body colour selectable; split wheels; assigned independent brake channels; added front/rear turn apertures at illustrative positions.
- This is a **classic, low-poly Golf II**, not the modern 1.5 eTSI previously represented. Its more angular shape is genuine to the source generation, not an ultra-realistic modern Golf replacement.

### BMW

**“BMW M3 Sedan topaz blue car” by [stefrolland](https://sketchfab.com/stefrolland)**.

- [Original model](https://sketchfab.com/3d-models/bmw-m3-sedan-topaz-blue-car-981462d1149b48628fc3d8d993a3f959)
- [Captured original-platform metadata](provenance/bmw-m3-sketchfab.json)
- Acquisition: pinned [`kuzmenkoY/will-it-fit`](https://github.com/kuzmenkoY/will-it-fit/tree/1b74ae9694ea1503a1f62db81b2af6378e33f122) mirror. Embedded metadata matches the original creator's CC BY 4.0 listing. **Upstream optimization credit:** kuzmenkoY/will-it-fit, using glTF-Transform to simplify/compress geometry and reduce textures. That repository's MIT label is not used to license the original model.
- **Berlin Drive modifications:** decoded Draco in background Blender; normalized approximately to 4.58 × 2.005 × 1.447 m; rebuilt PBR finishes and removed thumbnail-resolution maps; simplified dense non-paint detail; separated wheel-area geometry into four pivots; added surface-following signal apertures fitted by raycasts; merged static materials within animation subtrees.
- This is an **M3 sedan body**, not the modern 320i formerly represented. The upstream mesh was already simplified. No exact-year/engine identification or manufacturer approval is implied.

Those three derivatives retain CC BY 4.0. When sharing, retain creator credit, source/licence links and modification notices, including upstream changes. These adaptations are not by, or endorsed by, the original artists. Do not impose additional legal or technical restrictions contrary to the licence. The licence permits sharing/adaptation, including commercial use, subject to its conditions; it is not a warranty of title or suitability. Manufacturer trademarks/design rights are separate and no manufacturer endorsement is claimed.

### Audi — non-commercial only

**“Audi A4” by [amogh](https://blendswap.com/profile/36765)**, adapted by Berlin Drive.

- [Original model](https://blendswap.com/blend/8638), asset 8638 / file 7053. Acquired from authenticated BlendSwap MCP using one free download, **0 credits**. No paid generation or subscription was used.
- **[CC BY 3.0 Unported](https://creativecommons.org/licenses/by/3.0/)** ([complete local text](../licenses/CC-BY-3.0.txt)) **plus the archive's separate non-commercial fan-art restriction**. [Unmodified original `BLENDSWAP_LICENSE.txt`](provenance/a4-amogh-BLENDSWAP_LICENSE.txt) states: **“THIS BLEND IS MARKED AS FAN ART YOU ARE NOT ALLOWED TO USE IT COMMERCIALLY.”** It also requires credit to **amogh**.
- [Acquisition/licence review and file hashes](provenance/a4-amogh-review.json). The current API declared CC BY 4.0, while the downloaded archive declares CC BY 3.0 and the extra restriction. **That discrepancy remains unresolved.** Integration follows the user-approved strictly non-commercial scope; user approval is not creator permission for broader rights. This is not labelled CC BY-NC or unrestricted CC BY 4.0.
- Retain **amogh's credit, original source, CC BY 3.0 link, the full archive notice, non-commercial restriction and modification notes** with copies and renders. The GLB embeds these notices as metadata, in addition to the visible UI and documentation. Adaptations are by Berlin Drive, not endorsed by amogh or Audi.
- **Berlin Drive modifications:** removed studio backdrop/light panel and unused geometry; evaluated mirrors and bounded subdivision while retaining the authored exterior, grille, badges and wheel detail; normalized approximately to **4.703 × 2.04 × 1.43 m**; straightened the source's posed wheels and separated steering/spin pivots with stationary calipers; rebuilt PBR surfaces, selectable paint and brake channels; retained `Plate.jpg` and `TallLight.jpg` with UVs; added surface-following front/rear indicator apertures at illustrative locations; merged static geometry within animation subtrees.
- Source references `brake.jpg` and `sidewall.jpg` outside the package. These missing maps are **not loaded or fetched**; wheel/brake surfaces use replacement PBR materials. The source cabin is limited and the derivative uses dark glazing, not a reconstructed interior.
- `adi a4 2008.blend` is the basis for the **2008 source body** label. Exact generation/drivetrain is not independently established; this is **not the modern 40 TFSI** previously represented. Dimensions and driving figures are representative simulation settings, not manufacturer-validated dynamics or photorealism.
- Commercial use of this asset is not authorized by this integration. Remove/replace it (including its bundled GLB and imagery) or obtain suitable rights before producing a commercial edition. Manufacturer design/trademark rights remain separate; non-commercial scope is not a warranty of rights.

## Provenance and reproducibility

[`catalog.json`](catalog.json) records acquisition URLs, source/evidence/output SHA-256 hashes, creator, licence, variant limitations, changes and output statistics. The original-platform licence metadata for Tesla/Golf/BMW was reviewed on 2026-09-11; the A4 archive and conflicting API declaration were reviewed on 2026-09-14. A mirror supplies bytes, not permission on behalf of the artist.

The canonical importable catalogue is **`src/cars/catalog.json`**. Scripts regenerate the identical public copy **`public/cars/catalog.json`**. Do not import JSON from `public/` into JavaScript: Vite treats it as a static URL. A regression checks both copies, every bundled checksum and licence evidence.

Normal builds/tests use the bundled assets. Blender is only required for asset changes. No user's working or recovery `.blend` is opened or saved. Use isolated background Blender with automatic script execution disabled:

```sh
/Applications/Blender.app/Contents/MacOS/Blender \
  --background --factory-startup --disable-autoexec --python-exit-code 1 \
  --python scripts/prepare-car.py
```

Use the appropriate script/cache input below. Substitute the Blender executable path on other systems. Scripts were exercised with Blender 5.2.1 LTS; other versions may produce different byte-for-byte exports. Blender supplies `bpy`/`bmesh`, with no extra Python packages.

| Import  | Script                    | Verified cached input                                                        |
| ------- | ------------------------- | ---------------------------------------------------------------------------- |
| Tesla   | `scripts/prepare-car.py`  | `.osm-cache/cars/tesla-original.glb`                                         |
| Golf II | `scripts/prepare-golf.py` | `.osm-cache/cars/golf-source-download` (ZIP containing OBJ/MTL and textures) |
| BMW M3  | `scripts/prepare-bmw.py`  | `.osm-cache/cars/bmw-m3-candidate.glb`                                       |
| Audi A4 | `scripts/prepare-a4.py`   | `.osm-cache/cars/a4-amogh-source.zip`                                        |

If a Tesla/Golf/BMW input is absent, download **only its catalogue `downloadUrl`** into the listed cache path, for example with `curl --fail --location URL --output PATH`. The Audi URL is a **listing**, not a ZIP endpoint: obtain asset 8638 / file 7053 through the authorized BlendSwap download flow, checking licence and credit cost first. Do not put API keys or temporary download URLs in public metadata. The existing A4 cache needs no re-download. Each script rejects unexpected source bytes using its catalogue SHA-256. Golf and A4 archive extraction reject unsafe paths and oversized content; A4 also checks each file and the unmodified archive notice against the review hashes. Review provenance again before changing sources/hashes. Scripts write GLBs to `public/cars/` and synchronize both catalogue copies.

Verification:

```sh
pnpm exec vitest run src/car-assets.test.ts
pnpm exec playwright test tests/car-assets.spec.ts tests/a4-asset.spec.ts tests/vehicle-indicators.spec.ts tests/camera.spec.ts
pnpm build
```

Inspect garage, chase/bonnet and desktop/mobile views. Each model stays below 8 MB, 330k triangles and 30 mesh primitives. These are asset budgets, not FPS guarantees. Pixel-level indicator tests compare off, left, right, hazard and dark phases from both front and rear; checking only numeric emission is insufficient.

Runtime contract: metres; +Z forward, +Y up, physical left +X; ground-level origin; `wheel_fl/fr/rl/rr` pivots containing `spin_fl/fr/rl/rr`; `BD_paint` clearcoat plus `BD_tail_lights`, `BD_indicator_left`, `BD_indicator_right`. Paint/lamp state is per instance. Immutable geometry/textures are shared only within a game, then disposed along with decoded image bitmaps. Axles need not be symmetric about the body centre.

## Picker and social-preview images

`thumbnails/*.png` are small, transparent renders of these same bundled models, not newly downloaded photographs or six additional 3D loads. The six preview colours are uniquely shuffled during preparation, with the **Audi always City Red**; changing a picker card does not change the user's chosen paint. RAV4 and E-Class images honestly show their simplified models. Each imported thumbnail has visible creator credit in its card; Audi also says **Non-commercial only** even when another car is selected.

[`thumbnails/catalog.json`](thumbnails/catalog.json) records image hashes, paint, underlying GLB hashes and source-specific attribution. PNG iTXt metadata retains credit/source/licence information. The Audi thumbnail and `../social-card.png` retain the same CC BY 3.0 plus separate non-commercial fan-art restriction as the model; the social image also displays this credit visibly. Preserve those notices when sharing images separately. Rendering is a Berlin Drive adaptation, not artist/manufacturer endorsement.

To regenerate locally, run Vite and then `pnpm cars:thumbnails` (or `THUMBNAIL_URL=http://localhost:5174 pnpm cars:thumbnails`). The preparation script and `scripts/thumbnail-renderer.ts` use a separate transparent renderer and its own studio environment; they are not imported into the shipped app. Random assignments occur only in this preparation command, so normal builds and page loads do not reshuffle the palette. No Blender working file or remote service is used.

## Sequential rollout — outstanding acquisitions

Completed: **Tesla repair → Golf II → BMW M3 → Audi A4 (strictly non-commercial)**. **E-Class and RAV4** still await suitable sources. These are pending, not background jobs or completed imports.

| Remaining car         | Preferred next step / blocker                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mercedes-Benz E-Class | Download [W212 by Peter_D](https://sketchfab.com/3d-models/mercedes-e-class-w212-119c5e10733142b197aa53b86f6aeb04) through the normal Sketchfab account flow. Original-platform metadata explicitly identifies Peter_D and CC BY 4.0, but the download endpoint returns **HTTP 401** without authentication. No authenticated download token is configured; a verified public source-file mirror was not found. The older W212 must not retain the current E 450 label. |
| Toyota RAV4           | Still needs an original source package permitting adaptation and distribution of the locally bundled model. No suitable complete source package has been verified. Do not substitute another Toyota or label an older/non-hybrid body as the current hybrid.                                                                                                                                                                                                            |

### Follow-up acquisition review

The following checks concern candidate files, **not bundled assets**. Private inspection copies remain in the ignored `.osm-cache/cars/` directory. They must not be copied into `public/` just because their mirrors advertise a free download.

- **Audi A4, GregX / MindFluX:** the [mirror](https://downloadfree3d.com/3d-models/vehicles/car/audi-a4-2/) credits GregX, but the native archive's `Audi A4/README.txt` requires **MindFluX Studios** attribution and explicitly says **“You may not edit this model”** (while permitting redistribution with the README). This does not authorize our Blender geometry/material/animation adaptations. Archive SHA-256: `8a9aefdbf9a9f00a34de4eaca465c0d05ce11ef8f01659aeb34c809f378e6f04`. Not integrated; do not treat it as CC BY.
- **Audi A4 B5, MMC Works:** [listing](https://sketchfab.com/3d-models/audi-a4-b5-b5861ddefcb8478b858b3150aa44cd7f) carries CC BY 4.0 alongside a **NoAI restriction**. Not acquired for this workflow; seek explicit permission or use another source.
- **E55 W211, Black Snow:** [listing](https://sketchfab.com/3d-models/mersedes-benz-e55-w211-4952cf97bbc94b07be8aa09f277c0bcb) identifies CC BY 4.0. However, the [mirror's](https://downloadfree3d.com/3d-models/vehicles/car/mercedes-benz-e55-w211/) native Blender package contains mixed vehicle/game-style component and material names, including `midsize_*`, `sunburst`, `Mat_sultan` and `amdb11_*`, without upstream component credits/licences. This is a provenance warning, **not proof of infringement**; the uploader's licence alone does not resolve it. Do not integrate without establishing those components' origins/permissions. Archive SHA-256: `b20deca7ec03499e1c37e7b40fdc5391e806beca2764ce20fb7a2bdceb3bd803`. Inspected in isolated background Blender with auto-execution disabled; no working/recovery file was touched.
- **2010 RAV4, Teddy168:** the [re-upload](https://sketchfab.com/3d-models/2010-rav4-limited-edition-450e36f0992c4ae09bd6c8d509a51a77) credits **Vahe Simonyan** and claims CC BY. The [original Vahe Simonyan listing](https://sketchfab.com/3d-models/toyota-rav4-us-2010-c6ff2b6df54945e5951d890eee6bba8b) instead identifies an **Editorial** licence. A re-uploader cannot establish broader rights in that original; no RAV4 geometry was acquired from these listings.
- **Other RAV4 leads:** Ddiaz Design's Racing Master-derived model remains excluded. The separate cockpit-only FBX-conversion mirror still has no embedded licence evidence. Neither is a verified complete replacement.

### Providing the next source files

The amogh A4 is now bundled in the explicitly non-commercial scope described above. For the E-Class, RAV4 or a differently licensed A4, provide local paths or upload original archives from an authorized download. **No password or API token needs to be pasted into chat.** Include textures, any README/licence, the creator's listing URL, and any permission covering adaptation and redistributing a bundled GLB. Keep unreviewed files outside `public/`, for example in `.osm-cache/cars/inbox/`.

On receipt: verify creator/licence and variant, inspect safely, retain source hashes, prepare and budget the Blender derivative, update both catalogue copies and vehicle dimensions/labels, then test rendered lamps, wheel pivots, cameras, fallback/disposal and desktop/mobile views. Do not add a pending source to the runtime catalogue before that review.

Other rejected/non-selected leads: Blender's BMW27 is a **1 Series M**, not a 3 Series; a mirror named `bmw_2018` is actually an **M5** with CC BY-NC metadata; Ddiaz Design's newer Golf Mk7 carries CC BY-NC-SA rather than unrestricted commercial reuse; Jay-Artist's CC0 Golf Mk4 and mikepan's CC-BY-SA BMW coupe require normal BlendSwap sign-in to download. No account/download restriction is bypassed.

“Free download” is not licence clearance. Verify the original creator, exact variant, asset-specific licence, extra terms, redistribution/adaptation rights and textures before each next import. Preserve evidence and changes, satisfy share-alike/source requirements where applicable, and reject unclear game rips. Do not call the remaining placeholders imported or promise that a licence review guarantees ownership.
