Sorun: Müşteri bunu kendi aracında görmek istiyor
Kaplama, cam filmi ya da boya koruma filmi uygulayan bir atölye, müşterinin iş bitene kadar göremeyeceği bir şey satar. Portföy başkalarının araçlarını gösterir. Üreticinin numunesi malzemeyi düz bir kart üzerinde gösterir. Satışı kapatan şey ise müşterinin kendi 2021 M4'ünün, tereddüt ettiği o saten grinin birebir tonundaki hâlidir; bunun bir fotoğrafı da yoktur, çünkü iş henüz yapılmamıştır.
Aynı boşluk sürecin ilerleyen aşamalarında da karşımıza çıkar. Film kesimi yapan bir uygulayıcı, desen kütüphanesinin henüz kapsamadığı bir model yılı için ön tamponun temiz bir dış hattını ister. Bir konfigüratör, tasarımcının üzerine boya uygulayabileceği temel bir renkte aracın döner tabla görünümünü ister. Üçünün de ihtiyacı aynıdır: belirli bir marka, model ve yıla ait, seçtikleri boyada, arkasında hiçbir şey olmayan bir stüdyo görseli.
Atölyeler render'ları üç şekilde kullanıyor
API üzerindeki kaplama, cam filmi ve boya koruma filmi entegrasyonları bugün üç şey yapıyor; bazen üçünü birden:
- Önce beyaz bir taban, ardından üstüne malzeme. Müşterinin model yılını şeffaf bir PNG üzerinde
color=whiteile render edin ve kaplamayı, cam filmini veya baskılı tasarımı tarayıcıda bunun üzerine bindirin. PNG'nin alfa kanalı, aracın dış hatlarını verir. - Hex ile boya. Düz renkli bir kaplama veya yeniden boya için kompozitlemeyi atlayın:
color=686c70, aracı camlar ve jantlar olduğu gibi kalarak doğrudan o boyada, tek bir araç görseli olarak döndürür; tıpkı hazır bir renk gibi. - Döner tabla için bir 3D model.
POST /api/v1/3d, aracın seçilen renkte dokulu GLB, USDZ ve FBX dosyalarını oluşturur; her araç ve renk için bir kez. Yayınlanan bir model, teklif sayfası için iki satırlık bir gömme koduyla ve müşterinin iPhone’da AR ile açabileceği bir USDZ dosyasıyla birlikte gelir.
Atölyelerden biri toplu işlerini kod yerine ChatGPT bağlayıcısı üzerinden çalıştırıyor; bu, aşağıda ayrı bir bölümü hak eden dördüncü bir kalıp.
Beyaz bir temel render ve üzerine malzeme
Kaplama boyanın yerini alır; bu yüzden mümkün olduğunca az boyayla başlayın. color=white, stüdyo gölgelendirmesi korunmuş en parlak nötr gövdeyi verir; düz side görünümü yan yüzeyi en geniş, perspektif kısalmasını ise en az gösterir ve malzeme önizlemesinin ihtiyacı da tam olarak budur. Alfa kanalının korunması için png (veya webp) isteyin ve önizlemenin yakınlaştırılabilmesi için en büyük boyutu, yani 1024 boyutunu seçin.
# the customer's exact model year, in white: the base every material goes on top of
curl --fail-with-body -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
"https://carimage.dev/api/v1/images/car?vehicle=veh_0ta0ejj0qad2w&view=side&color=white&w=1024&format=png" \
-o m4-side-white.png
# a solid-color wrap or a factory paint, by hex: the API recolors the paint and leaves glass, trim and wheels alone
curl --fail-with-body -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
"https://carimage.dev/api/v1/images/car?vehicle=veh_0ta0ejj0qad2w&view=side&color=686c70&w=1024&format=png" \
-o m4-side-nardo.pngDokulu bir malzeme için birleştirme işlemi birkaç satırlık canvas kodundan ibarettir: render önce maske olarak bir kez çizilir, malzeme yalnızca aracın bulunduğu alana boyanır ve render, gölgelendirmesi ile yansımaları malzemenin içinden yeniden görünsün diye multiply modunda tekrar çizilir.
// A textured material (carbon, chrome, a printed design) goes on in the browser.
// The white render is the mask: paint the material only where the car is, then let
// the render's own shading through.
const car = await loadImage(whiteBaseUrl); // transparent PNG from the API
const ctx = canvas.getContext("2d");
canvas.width = car.width;
canvas.height = car.height;
ctx.drawImage(car, 0, 0);
ctx.globalCompositeOperation = "source-atop"; // keep the car's alpha
ctx.fillStyle = ctx.createPattern(materialSwatch, "repeat");
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.globalCompositeOperation = "multiply"; // shading, reflections and panel lines come back
ctx.drawImage(car, 0, 0);
// The whole silhouette is covered, glass and wheels included: the API ships the car's
// alpha, not per-panel masks. Good enough for a quote; a solid color should use color=<hex> instead.Boya veya kaplama rengini hex koduyla eşleştirme
Boyalar tek bir nötr renderın yeniden renklendirilmesine dönüştüğünden beri color, 15 hazır ayar adının yanı sıra altı haneli herhangi bir hex değerini de kabul eder: URL'de yalın olarak color=686c70, JSON'da "color": "#686c70". Üreticinin renk örneğini ya da müşterinin fabrika boya kodunu bulun ve iletin. Yeniden renklendirme yalnızca boyaya uygulanır; camlar, farlar, dış süslemeler ve jantlar olduğu gibi kalır. Kaplama önizlemesi ile renklendirilmiş bir fotoğraf arasındaki fark tam olarak budur. Her hex, önbelleğe alınmış bir varyant ve o ayın bir araç görseli daha demektir; bu nedenle tek bir görünümdeki tek bir araç için yirmi adaylı bir palet yirmi araç görselidir.
Döner tabla ve AR için bir 3D model
Teklif sayfasında aracın dönmesi gerektiğinde bir model sipariş edin. POST /api/v1/3d araç kimliğini ve bir rengi alır, 100 kredi düşer ve dokulu bir GLB, bunun tarayıcıya uygun bir sürümünü, bir USDZ ve bir FBX dosyasını, ayrıca bir küçük resmi oluşturur. Bir aracın ilk modeli 10–20 minutes sürer; aynı aracın sonraki her rengi, aynı mesh'i 1–2 minutes içinde yeniden dokular. Zaten sahip olduğunuz bir araç ve rengi sipariş etmek ücretsizdir (billing.already_owned: true); bu sayede bir atölye, yapılandırıcısını her iş için aynı beyaz tabana dayandırabilir.
curl -X POST https://carimage.dev/api/v1/3d \
-H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: wrap-quote-4471" \
-d '{"vehicle": "veh_0ta0ejj0qad2w", "color": "white", "publish": true}'{
"data": {
"id": "8c1d6b8e-2b4a-4f6e-9a2e-1f3c5d7e9b01",
"object": "3d_model",
"status": "queued",
"progress": 0,
"vehicle": {
"id": "veh_0ta0ejj0qad2w",
"make": "bmw",
"model": "m4",
"year": 2021
},
"color": "white",
"files": null,
"public": {
"id": "m3d_…",
"url": "https://carimage.dev/api/v1/3d/public/m3d_…",
"files": null,
"embed": {
"script": "https://carimage.dev/embed/3d.js",
"html": "<script src=\"https://carimage.dev/embed/3d.js\" async></script>\n<car-3d model=\"m3d_…\"></car-3d>"
}
}
},
"billing": {
"charged_on": "creation",
"credits_charged": 100,
"credits_remaining": 24900,
"already_owned": false
},
"request_id": "req_01j9y…"
}publish: true, modele daha hazır olmadan CDN'imizde anahtarsız URL'ler ve bir embed kodu sağlar; dosyalar gelene kadar öğe ilerlemeyi gösterir. Açılış karesi için view değerini dokuz kamera açısından birine ayarlayın; döner tabla için spin, stüdyo zemini için backdrop, USDZ'yi iPhone'lara ve GLB'yi Android'e tarayıcının kendi AR görüntüleyicisiyle sunmak için ise ar kullanın. FBX tasarımcı içindir: Blender'da veya bir kaplama tasarım aracında açın, tasarımı UV'lerin üzerine uygulayın; müşteri de kendi tasarımını kendi aracında görsün.
<script src="https://carimage.dev/embed/3d.js" async></script>
<car-3d model="m3d_…" view="front-3-4" spin backdrop="studio" ar alt="2021 BMW M4 in white"></car-3d>ChatGPT veya Claude üzerinden toplu iş çalıştırma
Her atölyenin bir geliştiricisi yoktur ve API'deki en yoğun entegrasyonlardan biri, bir asistandan render isteyen bir operatördür. https://carimage.dev/api/mcp adresini bağlayıcı olarak ekleyin (ChatGPT ve Claude OAuth üzerinden oturum açar; kullanıcı izin kapsamlarını ekranda onaylar); asistan da bir programın kullanacağı araçların aynısına sahip olur: "2014 Audi S3 cabriolet, grey, side" ifadesini kesin parametrelere dönüştürmek için resolve_vehicle, tek bir render için get_car_image, tek çağrıda en fazla elli imzalı URL için create_car_image_urls, döner tabla görünümü için create_3d_model.
Bir asistanla yapılan toplu işlemin sorunsuz geçmesini iki şey sağlar:
- Her toplu iş için bir
idempotency_keygönderin. Asistanlar yeniden dener. Anahtar verildiğinde, yeniden denenen bircreate_car_image_urlsilk sonucu tekrar döndürür (idempotent_replayed: true) ve hiçbir ücret yansıtmaz. - Yalnızca hız sınırını değil, render bütçesini de hesaba katın. Daha önce kimsenin istemediği araç görünümlerinin önce hazırlanması gerekir ve bu hazırlık, hesabın günlük hazırlama kapasitesi payından düşer (Pro'da %10). Üç görünümde birkaç yüz yeni arabalık bir çalışma bu sınıra ulaşabilir; bu durumda yanıt bir yeniden deneme zamanı ve
reset_atiçerir, hiçbir ücret alınmaz ve önbellekteki görseller sunulmaya devam eder. Çalışmayı bir iki akşama yayın ya da daha büyük bir pay için Business'a geçin.
Her istemci için kurulum ve tam araç listesi MCP sayfasında yer alıyor.
CLI, SDK ve MCP
# the white base and a hex paint, straight to files
npx @meterapp/car-image get --vehicle veh_0ta0ejj0qad2w --view side --color white --width 1024 --out m4-side-white.png
npx @meterapp/car-image get --vehicle veh_0ta0ejj0qad2w --view side --color 686c70 --width 1024 --out m4-side-nardo.png
# the 3D model: published at once, polled until ready, every file downloaded
npx @meterapp/car-image 3d create --vehicle veh_0ta0ejj0qad2w --color white --publish --wait --out ./modelsimport { CarImageClient } from "@meterapp/car-image-sdk";
const client = new CarImageClient({ apiKey: process.env.CAR_IMAGE_API_KEY });
// 100 credits the first time. Ordering the same vehicle in the same color again
// answers billing.already_owned: true and charges nothing.
const { data: model } = await client.create3dModel({ vehicle: "veh_0ta0ejj0qad2w" }, { color: "white", publish: true });
const ready = await client.wait3dModel(model.id, { onProgress: (m) => console.log(m.stage, m.progress) });
// FBX for the designer's tool of choice, USDZ for the customer's iPhone, glb_web for the page.
const fbx = await client.download3dModel(ready.id, "fbx");
const embedHtml = ready.public?.embed.html;- MCP: Temel araç setinde
get_car_imagevecreate_car_image_urls,?toolset=allilecreate_3d_model,get_3d_modelvepublish_3d_model; her görsel aracıvehicleve hex biçiminde bircoloralır. - 3D belgeleri; webhook'ları (bir model tamamlandığında gönderilen tek bir imzalı POST), dosya boyutlarını ve tüm yerleştirme özniteliklerini kapsar; Görseller sayfasındaki Renkler bölümü boya kurallarını açıklar.
Sıkça sorulan sorular
- Özel bir hex rengi, hazır bir renkten daha mı pahalıdır?
- Hayır. Her renk, o aracın hazırlanmış tek bir görünümünün yeniden renklendirilmesidir; bu yüzden hazır bir renk, bulduğunuz bir fabrika kodu ve bir kaplama üreticisinin renk örneği her biri tek bir araç görseli sayılır. Hazır bir rengin örneğiyle aynı olan bir hex kodu, o hazır rengin kendisidir.
- Render, film kesimi için yeterince doğru mu?
- Hayır. Render’lar marka, model ve yıla ait stüdyo görselleridir; CAD verisi veya OEM fotoğrafları değildir: katalog donanım paketlerini ayırt etmez ve aynı aracın iki görünümü arasında panel çizgileri farklılık gösterebilir. Bunları müşteriye aracını göstermek ve iş için fiyat teklifi vermek amacıyla kullanın; kesim desenlerini bir şablondan veya aracın kendisinden çıkarın.
- Aracı boyasız ya da yalnızca camlarıyla alabilir miyiz?
- Boş bir şablona en yakın seçenek, şeffaf PNG üzerinde color=white’tır ve PNG’nin alfa kanalı aracın siluetidir. API panel bazında veya cam için maske sunmaz. Düz renkli bir kaplama için işi color=<hex> parametresine bırakın: boyayı yeniden renklendirir; camları, süs parçalarını ve jantları olduğu gibi bırakır.
- Cam filmi veya PPF teklifinde hangi görünümler kullanılmalı?
- Düz görünümler: kapı camları ve yan paneller için side (veya side-right), ön cam şeridi, kaput ve tampon için front, arka cam için rear. Müşterilerin ilgi gösterdiği görünümler üç çeyrek görünümlerdir; bu yüzden ana görsel için front-3-4'ü, kalemlerin yanında ise düz görünümleri kullanın.
- 3D modelin sahibi biz miyiz?
- Render'lar gibi lisanslıdır: hesap başına, araç ve renk başına bir kez ödenir, yeniden sipariş vermek ücretsizdir; ürününüzün içinde kullanabilir ve sunucularınızda saklayabilirsiniz, plan sona erdikten sonra da dahil. Halihazırda sahip olduğunuz bir aracın her ek rengi aynı mesh'e yeni doku uygular; yayınlama ise modele ücretsiz olarak anahtarsız URL'ler ve bir gömme kodu sağlar.