Vấn đề: khách hàng muốn xem trước trên chính chiếc xe của mình
Một xưởng dán đổi màu xe, xưởng dán phim cách nhiệt hay đơn vị lắp phim bảo vệ sơn bán một thứ mà khách hàng không thể nhìn thấy cho đến khi hoàn tất. Bộ sưu tập tác phẩm chỉ cho thấy xe của người khác. Mẫu màu của nhà sản xuất chỉ cho thấy vật liệu trên một tấm thẻ phẳng. Điều chốt được đơn hàng là chính chiếc M4 2021 của khách hàng trong đúng màu xám satin mà họ đang phân vân, và không có bức ảnh nào như vậy tồn tại, vì công việc vẫn chưa được thực hiện.
Khoảng trống tương tự cũng xuất hiện ở các khâu sau. Thợ cắt phim muốn có đường viền rõ nét của cản trước cho một đời xe mà thư viện khuôn cắt chưa có. Một trình cấu hình xe muốn có ảnh xoay của chiếc xe ở màu nền để nhà thiết kế tô màu lên. Cả ba đều cần cùng một thứ: ảnh studio của một hãng, mẫu xe và năm cụ thể, với màu sơn họ chọn, và không có gì phía sau.
Ba cách các xưởng sử dụng ảnh render
Các tích hợp dán decal, phim cách nhiệt và phim bảo vệ sơn đang dùng API hiện nay làm ba việc, đôi khi cả ba cùng lúc:
- Nền trắng trước, chất liệu phủ lên trên. Render mẫu xe theo đúng năm đời của khách hàng với
color=whitetrên ảnh PNG trong suốt, rồi ghép lớp decal dán xe, phim cách nhiệt hoặc thiết kế in lên trên ngay trong trình duyệt. Kênh alpha của PNG chính là đường viền của xe. - Màu sơn theo mã hex. Với lớp dán màu trơn hoặc sơn lại, hãy bỏ qua bước ghép ảnh:
color=686c70trả về chiếc xe đã mang sẵn màu sơn đó, kính và bánh xe giữ nguyên, tính là một ảnh xe, giống như một màu có sẵn. - Mô hình 3D cho bàn xoay.
POST /api/v1/3dtạo các tệp GLB, USDZ và FBX có texture của xe theo màu đã chọn, một lần cho mỗi xe và màu. Mô hình đã xuất bản đi kèm đoạn mã nhúng hai dòng cho trang báo giá và một tệp USDZ mà khách hàng có thể mở bằng AR trên iPhone.
Một xưởng chạy các lô xử lý qua ChatGPT connector thay vì bằng code, đây là mô hình thứ tư đáng có một phần riêng bên dưới.
Bản render nền trắng và vật liệu phủ lên trên
Lớp dán thay thế màu sơn, vì vậy hãy bắt đầu với càng ít màu sơn càng tốt. color=white cho thân xe trung tính sáng nhất mà vẫn giữ nguyên đổ bóng studio; góc side nhìn ngang thẳng cho thấy phần hông xe nhiều nhất và ít biến dạng phối cảnh nhất, đúng thứ mà bản xem trước vật liệu cần. Hãy yêu cầu png (hoặc webp) để giữ lại kênh alpha, và kích thước lớn nhất, 1024, để có thể phóng to bản xem trước.
# 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.pngVới vật liệu có họa tiết, việc ghép ảnh chỉ cần vài dòng canvas: ảnh render được vẽ một lần làm mặt nạ, vật liệu chỉ được tô ở nơi có xe, rồi ảnh render được vẽ lại ở chế độ multiply để đổ bóng và phản chiếu hiện lại xuyên qua vật liệu.
// 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.Khớp màu sơn hoặc màu decal dán xe theo mã hex
Kể từ khi màu sơn trở thành bản đổi màu từ một bản render trung tính, color chấp nhận mọi mã hex sáu chữ số bên cạnh các tên màu cài sẵn 15: color=686c70 để trần trong URL, "color": "#686c70" trong JSON. Hãy tra mẫu màu của nhà sản xuất, hoặc mã sơn nguyên bản của khách hàng, rồi truyền vào. Việc đổi màu chỉ áp dụng cho lớp sơn, nên kính, đèn, chi tiết viền và bánh xe vẫn giữ nguyên, và đó chính là khác biệt giữa bản xem trước dán decal và một bức ảnh bị phủ màu. Mỗi mã hex là thêm một biến thể được lưu đệm và một ảnh xe của tháng, nên một bảng hai mươi màu ứng viên cho một xe ở một góc nhìn là hai mươi ảnh xe.
Mô hình 3D cho bàn xoay và AR
Khi trang báo giá cần chiếc xe xoay được, hãy đặt một mô hình. POST /api/v1/3d nhận id xe và một màu, tính 100 credit, rồi tạo một tệp GLB có texture, một bản dựng của tệp đó cho trình duyệt, một USDZ và một FBX, kèm ảnh thu nhỏ. Mô hình đầu tiên của một xe mất 10–20 minutes; mỗi màu tiếp theo của xe đó chỉ áp lại texture lên cùng lưới trong 1–2 minutes. Đặt lại tổ hợp xe và màu đã sở hữu thì miễn phí (billing.already_owned: true), nên một xưởng có thể dựng bộ cấu hình của mình trên cùng một nền trắng cho mọi công việc.
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 cung cấp cho mô hình các URL không cần khóa trên CDN của chúng tôi cùng một mã nhúng ngay cả trước khi mô hình sẵn sàng; phần tử sẽ hiển thị tiến trình cho đến khi các tệp được tải về. Đặt view thành bất kỳ góc nào trong chín góc máy cho khung hình mở đầu, spin để xoay như trên bàn xoay, backdrop để hiển thị sàn studio, và ar để cung cấp tệp USDZ cho iPhone và GLB cho Android qua trình xem AR tích hợp của trình duyệt. Tệp FBX dành cho nhà thiết kế: mở trong Blender hoặc công cụ thiết kế decal dán xe, vẽ hình lên UV, và khách hàng sẽ thấy chính thiết kế của họ trên chính chiếc xe của mình.
<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>Chạy một lô từ ChatGPT hoặc Claude
Không phải cửa hàng nào cũng có lập trình viên, và một trong những tích hợp bận rộn nhất trên API là người vận hành yêu cầu trợ lý AI tạo ảnh render. Thêm https://carimage.dev/api/mcp làm connector (ChatGPT và Claude đăng nhập qua OAuth; người dùng phê duyệt các phạm vi quyền ngay trên màn hình) và trợ lý sẽ có cùng các công cụ như một chương trình: resolve_vehicle để biến "2014 Audi S3 cabriolet, grey, side" thành các tham số chính xác, get_car_image cho một ảnh render, create_car_image_urls cho tối đa năm mươi signed URL trong một lần gọi, create_3d_model cho mô hình xoay 360°.
Hai điều giúp việc xử lý theo lô từ trợ lý AI diễn ra suôn sẻ:
- Truyền một
idempotency_keycho mỗi lô. Trợ lý AI sẽ thử lại. Khi có khóa, lệnhcreate_car_image_urlsđược thử lại sẽ phát lại kết quả đầu tiên (idempotent_replayed: true) và không tính phí. - Hãy tính đến ngân sách render, không chỉ giới hạn tốc độ. Các góc nhìn xe chưa ai yêu cầu trước đây phải được chuẩn bị trước, và việc chuẩn bị sử dụng phần năng lực chuẩn bị hằng ngày của tài khoản (10% với gói Pro). Một đợt vài trăm xe mới ở ba góc nhìn có thể chạm mức đó; khi đó công cụ trả về thời gian thử lại cùng
reset_at, không tính phí gì, và ảnh đã lưu đệm vẫn tiếp tục được phục vụ. Hãy chia đợt chạy ra một hoặc hai buổi tối, hoặc chuyển lên gói Business để có phần lớn hơn.
Hướng dẫn thiết lập cho từng client và danh sách công cụ đầy đủ có trên trang MCP.
CLI, SDK và 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:
get_car_imagevàcreate_car_image_urlstrong bộ công cụ cốt lõi,create_3d_model,get_3d_modelvàpublish_3d_modelkhi dùng?toolset=all; mọi công cụ hình ảnh đều nhậnvehiclevà mộtcolordạng hex. - Tài liệu 3D đề cập webhook (một yêu cầu POST có chữ ký khi mô hình hoàn tất), kích thước tệp và mọi thuộc tính nhúng; mục Màu sắc trên trang Hình ảnh đề cập các quy tắc về màu sơn.
Câu hỏi thường gặp
- Màu hex tùy chỉnh có đắt hơn màu cài sẵn không?
- Không. Mỗi màu là một lần đổi màu từ một góc nhìn đã được chuẩn bị sẵn của xe đó, nên một màu có sẵn, một mã màu xuất xưởng bạn tra được hay một mẫu màu của nhà sản xuất decal dán xe đều được tính là một hình ảnh xe. Mã hex trùng với mẫu màu của một màu có sẵn chính là màu có sẵn đó.
- Ảnh render có đủ chính xác để cắt phim theo không?
- Không. Ảnh render là hình ảnh studio theo hãng, mẫu xe và năm, không phải dữ liệu CAD hay ảnh chụp của nhà sản xuất: danh mục không phân biệt phiên bản, và đường ghép thân xe có thể khác nhau giữa hai góc nhìn của cùng một chiếc xe. Hãy dùng chúng để cho khách hàng xem xe của họ và báo giá công việc; còn khuôn cắt thì hãy lấy từ bản mẫu hoặc từ chính chiếc xe.
- Có thể nhận ảnh xe không có sơn, hoặc chỉ phần cửa kính không?
- Gần nhất với một bản trống là color=white trên PNG trong suốt, và kênh alpha của PNG chính là hình bóng của xe. API không cung cấp mặt nạ cho từng tấm thân xe hay cho kính. Với lớp dán một màu, hãy để color=<hex> đảm nhiệm: nó đổi màu sơn và giữ nguyên kính, chi tiết trang trí và bánh xe.
- Báo giá dán phim cách nhiệt hoặc PPF nên dùng những góc nhìn nào?
- Các góc nhìn thẳng: side (hoặc side-right) cho kính cửa và hai bên hông, front cho dải kính chắn gió, nắp capô và cản trước, rear cho kính sau. Các góc ba phần tư là góc khách hàng phản hồi tốt nhất, vì vậy hãy dùng front-3-4 cho ảnh chính và các góc nhìn thẳng bên cạnh từng hạng mục báo giá.
- Chúng tôi có sở hữu mô hình 3D không?
- Mô hình được cấp phép giống như ảnh render: thanh toán một lần cho mỗi xe và màu trên mỗi tài khoản, đặt lại miễn phí, quý vị được dùng trong sản phẩm của mình và lưu trên máy chủ của mình, kể cả sau khi gói dịch vụ kết thúc. Mỗi màu bổ sung của một xe quý vị đã có sẽ được phủ lại texture trên cùng một mesh, và khi xuất bản, mô hình sẽ có URL không cần khóa cùng mã nhúng miễn phí.