
BewolktGouden uur3D & AI-pipeline · De BMW-tweeling
Een kleur die je niet kunt fotograferen.
Sleep door het licht →
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.

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.

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



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
# 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 = doelFoto naast render
Links de echte auto, rechts de tweeling.










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)