課題:お客様は自分の車での仕上がりを見たい
ラッピング、フィルム施工、ペイントプロテクションの専門店が販売しているのは、施工が終わるまでお客様が目にできないものです。施工事例に写っているのは他人の車です。メーカーの見本は、平らなカードの上の素材を見せるだけです。成約の決め手となるのは、お客様ご自身の2021年式 M4 が、迷っているまさにそのサテングレーになった姿です。しかし、そんな写真はどこにもありません。施工はまだ行われていないのですから。
同じ課題は工程の後半にも現れます。フィルムカッターは、パターンライブラリがまだ対応していない年式のフロントバンパーのきれいな輪郭を必要とします。コンフィギュレーターは、デザイナーが上から色を塗れるベースカラーの車のターンテーブル表示を必要とします。いずれも必要なものは同じです。特定のメーカー、モデル、年式のスタジオ画像を、選んだペイントで、背景なしで用意することです。
施工店がレンダリングを活用する3つの方法
現在APIを利用しているラッピング、ウィンドウフィルム、プロテクションフィルムの連携では、次の3つを行っています(3つすべてを同時に行う場合もあります):
- 白をベースに、その上に素材を重ねる。お客様の年式の車を
color=whiteで透過PNGとしてレンダリングし、ラッピング、ウィンドウフィルム、プリントデザインをブラウザ上で重ねて合成します。PNGのアルファチャンネルが車の輪郭になります。 - 16進数で塗装色を指定。単色のラッピングや再塗装なら、合成は不要です。
color=686c70を指定すると、ガラスとホイールはそのままで、その塗装色の車両が返されます。料金はプリセットと同じ1クレジットです。 - ターンテーブル用の3Dモデル。
POST /api/v1/3dは、選択した色の車両のテクスチャ付き GLB、USDZ、FBX を、車両と色の組み合わせごとに1回生成します。公開したモデルには、見積もりページ用の2行の埋め込みコードと、お客様が iPhone の AR で開ける USDZ が付属します。
あるショップはコードではなく ChatGPT コネクター経由でバッチを実行しています。これは4つ目のパターンで、以下で独立したセクションとして取り上げます。
ホワイトベースのレンダーと、その上に重ねる素材
ラッピングはペイントを置き換えるものなので、できるだけペイントの影響が少ない状態から始めます。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コードで塗装色やラッピングの色を合わせる
塗装が1枚のニュートラルなレンダーを再着色する仕組みになったため、colorには15種類のプリセット名に加えて、任意の6桁の16進カラーコードを指定できます。URLではcolor=686c70のようにそのまま、JSONでは"color": "#686c70"と指定します。メーカーの色見本やお客様の純正塗装コードを調べて、そのまま渡してください。再着色は塗装部分にのみ適用されるため、ガラス、ライト、トリム、ホイールはそのまま残ります。これこそが、ラッピングのプレビューと色味を変えただけの写真との違いです。16進カラーごとにキャッシュされるバリエーションが1つ増え、1クレジットかかります。つまり1台の車に20色の候補パレットを用意すると、かかるのは20クレジットを一度だけです。
ターンテーブル表示と AR 用の 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には最初のショット用に8つのカメラアングルのいずれかを、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で最も利用の多い連携の1つは、スタッフがアシスタントにレンダーを依頼するというものです。https://carimage.dev/api/mcpをコネクタとして追加すると(ChatGPTとClaudeはOAuthでサインインし、利用者が画面上でスコープを承認します)、アシスタントはプログラムと同じツールを使えるようになります。「2014年式 Audi S3 カブリオレ、グレー、サイド」を正確なパラメーターに変換するresolve_vehicle、1枚のレンダーを取得するget_car_image、1回の呼び出しで最大50件の署名付きURLを発行するcreate_car_image_urls、そしてターンテーブル用のcreate_3d_modelです。
アシスタントからのバッチ処理をうまく進めるポイントは2つです:
- バッチごとに
idempotency_keyを渡してください。アシスタントは再試行を行います。キーがあれば、再試行されたcreate_car_image_urlsは最初の結果をそのまま返し(idempotent_replayed: true)、課金は発生しません。 - レート制限だけでなく、レンダー予算も見込んでおいてください。これまで誰もリクエストしていないバリアントのレンダーは、アカウントに割り当てられた1日あたりの生成キャパシティ(Pro では 10%)を消費します。新しい車数百台を3ビューでまとめて処理すると上限に達することがあります。その場合、ツールは再試行時刻と
reset_atを返し、料金は発生せず、キャッシュ済みの画像は引き続き配信されます。処理を1〜2晩に分散させるか、より大きな割り当てがある 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つのニュートラルなレンダーを再着色したものなので、プリセット、調べたメーカー純正カラーコード、ラッピングメーカーの色見本のいずれも1クレジットです。プリセットの色見本と同じhexは、そのプリセットとして扱われます。
- このレンダーは、フィルムのカットに使えるほど正確ですか?
- いいえ。レンダリングはメーカー、モデル、年式のスタジオビジュアルであり、CAD データや OEM の写真ではありません。カタログはトリムを区別しておらず、同じ車でもビューによってパネルラインが異なる場合があります。お客様に車を見せたり見積もりを出したりする用途にお使いください。カットパターンはテンプレートまたは実車から作成してください。
- 塗装なしの車や、窓だけの画像を取得できますか?
- ブランクに最も近いのは、透過 PNG で color=white を指定したもので、PNG のアルファがそのまま車のシルエットになります。API はパネル単位やガラスのマスクを提供していません。単色のラッピングなら color=<hex> にお任せください。ペイントだけを再着色し、ガラス、トリム、ホイールはそのまま残します。
- ウィンドウフィルムやPPFの見積もりには、どのビューを使うべきですか?
- 正面・側面・背面のビュー:ドアガラスと車体側面には side(または side-right)、フロントガラス上部のストリップ、ボンネット、バンパーには front、リアガラスには rear を使います。お客様の反応がよいのは斜めから見たスリークォータービューなので、メインビジュアルには front-3-4 を、明細の横には正面・側面・背面のビューを使ってください。
- 3Dモデルは自社のものになりますか?
- レンダリング画像と同様、ライセンス形式です。アカウントごとに車両・カラー単位で1回お支払いいただければ再注文は無料で、プラン終了後も含め、自社製品内での使用や自社サーバーへの保存が可能です。すでに保有している車両の別カラーは同じメッシュのテクスチャを差し替えるだけで、公開すればキー不要のURLと埋め込みを無料でご利用いただけます。