Render bij gouden uur: de lak kleurt champagne-goudRender bij bewolkt weer: de lak is warm zilvergrijsBewolktGouden uur

3D & AI-pipeline · De BMW-tweeling

Een kleur die je niet kunt fotograferen.

Sleep door het licht →

← Back to projects

Mijn BMW 340i is Champagne Quartz — een Individual-lak zonder vaste kleur. Op geen enkele foto klopte hij. Dus heb ik de auto digitaal nagebouwd.

In de schaduw ingetogen grijsbruin, bij bewolking warm zilvergrijs, bij lage zon champagne-goud. Een camera kiest één witbalans en maakt er grijs van.

De oplossing: niet ‘een’ F31 renderen, maar déze — en dan zelf bepalen in welk licht hij staat.

Gaussian-splat scan: een wolk van vlekken in plaats van een carrosserie
00

Eerst geprobeerd: scannen.

Een Gaussian splat van de echte auto. Maar glanzende lak spiegelt alles om zich heen — het resultaat was een wolk, geen auto.

Les: voor lak werkt scannen niet.

Exploded view van de voorbumper: grille en mistlampunits los van het model
01

Dan: een model, en dat kloppend maken.

Een gedownload 3D-model als basis, onderdeel voor onderdeel getoetst aan de optielijst van het chassisnummer: panoramadak, zwarte shadow line, 403M-velgen, blauwe M-remklauwen, LED-mistlampen.

De bumper ging uit elkaar en weer in elkaar.

02

De lak — drie keer mis, dan raak.

Een basecoat met pigment en metallic flakes, een blanke laag erover. Elke versie naast foto's van de echte auto gelegd, in zon, bewolkt en lage winterzon.

Lakpoging 1: groen-paarse kameleonLakpoging 2: te koel en grijsLakpoging 3: de basis
03

De pipeline: Blender, aangestuurd met code.

Niets hiervan is met de hand geklikt. Claude stuurt Blender aan via een MCP-koppeling; scènes, camera's, licht en materialen staan in Python-scripts die we samen schreven.

  • Reproduceerbaar — elk beeld opnieuw te maken met één commando
  • Snel itereren — een nieuwe lichtstand is een regel code, geen middag klikken
  • Controleerbaar — elke lakversie is een vastgelegde set parameters
bouw_showroom_v3.py — uit de echte pipeline
# studiolicht: drie area lights, allemaal op de auto gericht
for naam, loc, energie, maat in (
        ("SHOW_Fill", (9.0, -4.0, 3.6), 450, (5.0, 3.0)),
        ("SHOW_Rim",  (0.0, 9.0, 4.5), 800, (8.0, 2.0)),
        ("SHOW_Top",  (0.0, -0.2, 8.5), 800, (11.0, 6.0))):
    ld = bpy.data.lights.new(naam, 'AREA')
    ld.energy = energie
    ld.size, ld.size_y = maat
    lo = bpy.data.objects.new(naam, ld)
    lo.location = loc
    c = lo.constraints.new('TRACK_TO')
    c.target = doel

Foto naast render

Links de echte auto, rechts de tweeling.

Foto van de zijkant
Foto
Render van de zijkant
Render
Foto driekwart achter
Foto
Render driekwart achter
Render
Render — Gouden uur
Gouden uur
Render — Nacht, natrium en LED
Nacht, natrium en LED
Render — Schemering op het dak
Schemering op het dak
Render — Donkere studio
Donkere studio
Render — Flakes op de schouderlijn
Flakes op de schouderlijn
Render — 403M-velg, blauwe remklauw
403M-velg, blauwe remklauw

Waarom dit hier staat

Dezelfde keten als in mijn werk: het probleem scherp krijgen, iets bouwen, het toetsen aan de werkelijkheid en het herhaalbaar maken. De scan die niet werkte hoort daar net zo goed bij als de render die wel werkt. Dezelfde aanpak zit achter de ZF Tribute Shifter.

→

Volgende stap: een front lip splitter

Er bestaat geen goede aftermarket-lip voor de F31 M Sport-bumper. De tweeling is nu de basis om er zelf een te maken: parametrisch ontwerp in OpenSCAD, eerst de pasvorm in de render, daarna prints op de Bambu Lab X1C voor test-fits op de echte bumper.

Status: in ontwikkeling.

De auto · F31 340i xDrive Touring · BMW Individual Champagne Quartz · Individual-leer Amaro-bruin · M Sport · B58 3.0 turbo · MHD Stage 1 + xHP Stage 2 (~390 pk, geschat)

Interested in this kind of work?

Get in touch