문제: 고객은 자기 차에 적용된 모습을 보고 싶어 합니다
랩핑 시공점, 틴팅 시공점, 도장 보호 필름(PPF) 시공점은 작업이 끝나기 전까지 고객이 볼 수 없는 것을 판매합니다. 포트폴리오에는 다른 사람의 차량이 나옵니다. 제조사 샘플은 평평한 카드 위의 소재만 보여 줍니다. 판매를 성사시키는 것은 고객이 망설이고 있는 바로 그 새틴 그레이를 입힌 고객 자신의 2021년식 M4인데, 작업이 아직 이루어지지 않았으니 그런 사진은 존재하지 않습니다.
같은 공백은 이후 단계에서도 나타납니다. 필름 재단 업체는 패턴 라이브러리가 아직 다루지 않는 연식의 프런트 범퍼 윤곽선을 깔끔하게 얻고 싶어 합니다. 컨피규레이터는 디자이너가 그 위에 색을 입힐 수 있도록 기본 색상의 차량 턴테이블을 원합니다. 세 경우 모두 필요한 것은 같습니다. 특정 제조사, 모델, 연식의 차량을 원하는 도장 색상으로, 배경 없이 담은 스튜디오 이미지입니다.
시공 업체가 렌더를 활용하는 세 가지 방법
현재 API를 사용하는 랩핑, 틴팅, 필름 연동은 다음 세 가지 작업을 하며, 때로는 세 가지를 동시에 수행합니다:
- 흰색 베이스 위에 소재를 입힙니다. 고객 차량의 연식 모델을 투명 PNG에
color=white로 렌더링하고, 랩, 틴트 또는 인쇄 디자인을 브라우저에서 그 위에 합성하세요. PNG의 알파 채널이 곧 차량의 윤곽선입니다. - HEX 코드로 지정하는 도색. 단색 랩핑이나 재도색이라면 합성할 필요가 없습니다.
color=686c70은 유리와 휠은 그대로 둔 채 해당 색상으로 도색된 차량을 프리셋과 마찬가지로 차량 이미지 하나로 반환합니다. - 턴테이블용 3D 모델.
POST /api/v1/3d는 선택한 색상의 차량을 텍스처가 입혀진 GLB, USDZ, FBX로 생성하며, 차량과 색상별로 한 번만 생성합니다. 게시된 모델에는 견적 페이지용 두 줄짜리 임베드 코드와 고객이 iPhone에서 AR로 열 수 있는 USDZ가 함께 제공됩니다.
한 시공점은 코드 대신 ChatGPT 커넥터로 일괄 작업을 실행하는데, 이는 아래에서 별도로 다룰 만한 네 번째 패턴입니다.
흰색 베이스 렌더링과 그 위에 입히는 소재
랩핑은 도장을 대체하므로 도장 색이 최대한 드러나지 않는 상태에서 시작하세요. color=white는 스튜디오 음영을 그대로 유지하면서 가장 밝은 중립 톤의 차체를 제공합니다. 정측면 side 뷰는 측면을 가장 넓게 보여 주고 원근 왜곡이 가장 적어 소재 미리보기에 적합합니다. 알파 채널이 유지되도록 png(또는 webp)를 요청하고, 미리보기를 확대할 수 있도록 가장 큰 크기인 1024로 요청하세요.
# 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.png질감이 있는 소재라면 합성은 canvas 코드 몇 줄이면 됩니다. 렌더를 마스크로 한 번 그리고, 차량이 있는 부분에만 소재를 칠한 다음, 렌더를 multiply 모드로 다시 그려 음영과 반사가 소재 위로 다시 드러나게 합니다.
// 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.hex 값으로 도장 색상이나 랩 색상 맞추기
도색이 하나의 중립 렌더를 다시 칠하는 방식으로 바뀐 이후, color는 15 프리셋 이름 외에 여섯 자리 hex 값도 받습니다. URL에서는 color=686c70처럼 그대로, JSON에서는 "color": "#686c70"로 지정합니다. 제조사 색상 견본이나 고객 차량의 순정 도색 코드를 찾아 전달하세요. 리컬러는 도장면에만 적용되어 유리, 조명, 트림, 휠은 그대로 유지되며, 바로 이것이 랩 미리보기와 색만 입힌 사진의 차이입니다. hex 값 하나마다 캐시 변형이 하나씩 늘고 그 달의 차량 이미지 하나로 집계되므로, 차량 한 대의 한 뷰에 후보 색상 20개를 적용하면 차량 이미지 20개가 됩니다.
턴테이블과 AR을 위한 3D 모델
견적 페이지에서 차량을 회전시켜 보여 줘야 한다면 3D 모델을 주문하십시오. POST /api/v1/3d는 차량 ID와 색상을 받아 100 크레딧을 차감하고, 텍스처가 입혀진 GLB와 그 브라우저용 빌드, USDZ, FBX, 그리고 썸네일을 생성합니다. 차량의 첫 모델은 10–20 minutes 걸리며, 같은 차량의 추가 색상은 동일한 메시에 텍스처만 다시 입혀 1–2 minutes 만에 완성됩니다. 이미 보유한 차량과 색상을 다시 주문하면 무료이므로(billing.already_owned: true), 시공점은 모든 작업에서 같은 흰색 베이스를 기준으로 컨피규레이터를 구성할 수 있습니다.
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를 사용하면 모델이 준비되기 전부터 CDN에서 키 없이 사용할 수 있는 URL과 임베드가 제공되며, 파일이 도착할 때까지 요소에 진행 상황이 표시됩니다. view를 9가지 카메라 각도 중 하나로 설정해 첫 화면을 지정하고, spin으로 턴테이블 회전을, backdrop으로 스튜디오 바닥을, ar로 브라우저 자체 AR 뷰어를 통해 iPhone에는 USDZ를, Android에는 GLB를 제공할 수 있습니다. FBX는 디자이너용입니다. Blender나 랩 디자인 도구에서 열어 UV에 아트워크를 입히면, 고객은 자신의 차량에 적용된 자신만의 디자인을 확인할 수 있습니다.
<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 또는 Claude에서 일괄 작업 실행하기
모든 시공점에 개발자가 있는 것은 아니며, API에서 가장 활발한 연동 중 하나는 운영자가 어시스턴트에게 렌더를 요청하는 방식입니다. https://carimage.dev/api/mcp을 커넥터로 추가하면(ChatGPT와 Claude는 OAuth로 로그인하며, 사용자가 화면에서 권한 범위를 승인합니다) 어시스턴트도 프로그램과 동일한 도구를 사용할 수 있습니다. "2014 Audi S3 cabriolet, grey, side"를 정확한 파라미터로 변환하는 resolve_vehicle, 렌더 한 장을 만드는 get_car_image, 한 번의 호출로 최대 50개의 서명된 URL을 만드는 create_car_image_urls, 턴테이블용 create_3d_model입니다.
어시스턴트로 배치 작업을 원활하게 진행하려면 두 가지가 중요합니다.
- 배치마다
idempotency_key를 전달하세요. 어시스턴트는 요청을 재시도합니다. 키가 있으면 재시도된create_car_image_urls는 첫 번째 결과를 그대로 반환하며(idempotent_replayed: true) 비용이 청구되지 않습니다. - 속도 제한뿐 아니라 렌더링 예산도 고려하세요. 이전에 아무도 요청하지 않은 차량 뷰는 먼저 준비해야 하며, 이 작업은 계정의 일일 준비 용량 할당분(Pro는 10%)을 사용합니다. 새 차량 수백 대를 세 가지 뷰로 한꺼번에 처리하면 이 한도에 도달할 수 있습니다. 이 경우 도구가 재시도 시간과
reset_at을 응답하며, 요금은 청구되지 않고 캐시된 이미지는 계속 제공됩니다. 작업을 하루나 이틀 저녁에 걸쳐 나누어 실행하거나, 더 큰 할당분이 필요하면 Business로 전환하세요.
클라이언트별 설정 방법과 전체 도구 목록은 MCP 페이지에서 확인할 수 있습니다.
CLI, SDK 및 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;자주 묻는 질문
- 사용자 지정 HEX 색상은 프리셋보다 비용이 더 드나요?
- 아니요. 모든 색상은 해당 차량의 준비된 뷰 하나를 다시 칠한 것이므로, 프리셋, 직접 찾은 공장 색상 코드, 랩핑 제조사의 견본 색상은 각각 차량 이미지 1개로 계산됩니다. 프리셋 견본과 같은 hex 값은 해당 프리셋으로 처리됩니다.
- 렌더가 필름을 재단할 수 있을 만큼 정확한가요?
- 아니요. 렌더는 해당 제조사, 모델, 연식의 스튜디오 비주얼이며 CAD 데이터나 OEM 사진이 아닙니다. 카탈로그는 트림을 구분하지 않으며, 같은 차량이라도 두 뷰 사이에 패널 라인이 다를 수 있습니다. 렌더는 고객에게 차량을 보여 주고 작업 견적을 내는 데 사용하시고, 재단 패턴은 템플릿이나 실제 차량을 기준으로 만드세요.
- 도색되지 않은 차량이나 창문만 따로 받을 수 있나요?
- 빈 템플릿에 가장 가까운 것은 투명 PNG에 color=white를 적용한 것이며, PNG의 알파 채널이 곧 차량의 실루엣입니다. API는 패널별 마스크나 유리 마스크를 제공하지 않습니다. 단색 랩핑이라면 color=<hex>를 사용하세요. 도장 색만 바꾸고 유리, 트림, 휠은 그대로 둡니다.
- 틴팅 또는 PPF 견적에는 어떤 뷰를 사용해야 하나요?
- 직각 뷰를 사용합니다. 도어 유리와 측면 패널에는 side(또는 side-right), 앞유리 스트립, 후드, 범퍼에는 front, 뒷유리에는 rear를 사용하세요. 고객이 가장 잘 반응하는 것은 3/4 뷰이므로, 메인 이미지에는 front-3-4를, 항목별 내역 옆에는 직각 뷰를 사용하세요.
- 3D 모델은 저희 소유가 되나요?
- 렌더와 마찬가지로 라이선스 방식입니다. 계정당 차량과 색상별로 한 번만 결제하면 다시 주문해도 무료이며, 플랜이 끝난 후에도 자사 제품 안에서 사용하고 자사 서버에 보관할 수 있습니다. 이미 보유한 차량의 추가 색상은 같은 메시에 텍스처만 다시 입히며, 게시하면 모델에 키 없이 쓸 수 있는 URL과 임베드가 무료로 제공됩니다.