---
title: Clean packshots from a real product photo
display: 'Clean *packshots* from a real product photo'
nav_title: Clean packshots
summary:
  - "Store-ready packshots from one product photo: white, brand color, transparent, a 2x print version and a 3D model for the product page."
  - "Never generate the product: cut it out and place it, so every pixel of the wordmark comes from the photo."
  - "Four runs for the flat set, then one 3D run from three views; a single photo left the far side of the 3D model invented."
description: Turn one product photo into white, colored and transparent packshots with the wordmark kept pixel for pixel, a print upscale and a 3D model.
section: playbooks
order: 250
type: playbook
topic: Commerce and fashion
level: Build
roles: [marketer]
time: { read: 9, do: 25, wait: 5 }
needs: ["Any plan with credits", "One sharp photo of the real product, wordmark facing the camera", "Photos of the other sides for the 3D model"]
last_verified: 2026-10-16
models_checked: ["Pixelcut Product Photo", "Topaz Image Upscale", "GPT Image 2.5 Flare", "Meshy 7.1 - Image to 3D"]
hero: playbooks/product-packshots/vireo-apex-packshot-white.webp
related: [remove-and-replace-backgrounds, upscale-and-enhance-images, product-lifestyle-scenes, creator-style-product-video]
run_in: [model_pixelcut-product-photo, model_meshy-7-1-img23d]
# the use case made, on scenario.com/explorations, and the platform workflows that run it
made_with:
  - { slug: one-sole, title: "One Sole" }
  - { slug: maison-vespree, title: "Maison Vesprée" }
run_with:
  - { id: wflow_product-studio, name: "Product Studio" }
  - { id: wflow_oiPd6JidPTvtizdnuQMURZpF, name: "Luxury Product Ads" }
thumb: playbooks/product-packshots/thumb.webp
video: tutorials/product-packshots.mp4
chapters:
  - { at: 0, title: "The packshots to make", image: "/media/images/playbooks/product-packshots/ch-01-the-packshots-to-make.webp" }
  - { at: 45, title: "A cut-out model, not a generator", image: "/media/images/playbooks/product-packshots/ch-02-a-cut-out-model-not-a-generator.webp" }
  - { at: 53, title: "White, for the marketplace", image: "/media/images/playbooks/product-packshots/ch-03-white-for-the-marketplace.webp" }
  - { at: 62, title: "Brand color and transparent", image: "/media/images/playbooks/product-packshots/ch-04-brand-color-and-transparent.webp" }
  - { at: 74, title: "A print version with Text Refine", image: "/media/images/playbooks/product-packshots/ch-05-a-print-version-with-text-refine.webp" }
  - { at: 84, title: "Read the wordmark at 1:1", image: "/media/images/playbooks/product-packshots/ch-06-read-the-wordmark-at-1-1.webp" }
  - { at: 97, title: "Three views, not one", image: "/media/images/playbooks/product-packshots/ch-07-three-views-not-one.webp" }
  - { at: 137, title: "File the set in one collection", image: "/media/images/playbooks/product-packshots/ch-08-file-the-set-in-one-collection.webp" }
  - { at: 150, title: "Recap", image: "/media/images/playbooks/product-packshots/ch-09-recap.webp" }
steps:
  - title: "A cut-out model, not a generator"
    text: "Choose a Model › Image › Remove Background › Pixelcut Product Photo, and add the product photo. Background tools keep the product's pixels; image generators redraw them, even when told \"exactly\"."
  - title: "White, for the marketplace"
    text: "Image Size Square HD, Background Red, Green and Blue at 255, Margin 10%, Shadow Generative, Generative Shadow Opacity 0.3."
  - title: "Brand color and transparent"
    text: "Same model, same photo. Image Size landscape 4:3 with Background Red 28, Green 38, Blue 56 for the brand navy; then Background Transparent with Generative Shadow Opacity 0 for the cutout."
  - title: "A print version with Text Refine"
    text: "Open the white packshot › Enhance › Topaz Image Upscale, Model Text Refine, Scaling Factor 2x. It sharpens small type without inventing letter shapes."
  - title: "Read the wordmark at 1:1"
    text: "Check every file at 100 percent: read the wordmark letter by letter against the photo, and look between the laces and around the sole for halos. At thumbnail size a regenerated packshot looks the same."
  - title: "Three views, not one"
    text: "Create › 3D › Meshy 7.1 - Image to 3D, and under Image: the cutout, the inner side, then the back; geometry 2k, texture on with PBR, texture 2k, remesh on at 100,000. From the cutout alone it invented a garbled wordmark on the side it never saw."
  - title: "File the set in one collection"
    text: "Put the packshots, cutout and 3D model in one collection. Turn every 3D model in the viewer before you publish it."
agent_steps:
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "The sharp product photo with the wordmark facing the camera, then the photo of the inner side, then the back. The agent uploads them with upload_asset, or you give it their asset IDs. Keep that order: the front is the one every packshot is cut from."
  - title: "Brief the agent: the flat set"
    text: "Background tools keep the product's pixels; an image generator would redraw them. The brief says so, so the agent does not reach for one."
    prompt: |-
      Make clean packshots from the product photo. Never generate or redraw the product: use only background and upscale tools, so every pixel of the wordmark comes from the photo. Read each model's parameters with model_schema_get first, then quote the cost with a dry run and wait for my go.

      1. Pixelcut Product Photo (model_pixelcut-product-photo), three runs on the product photo, started together with wait: false and collected with one jobs_wait:
         - White: image size Square HD, background color red, green and blue at 255, margin 10%, shadow type Generative, generative shadow opacity 0.3.
         - Brand navy: image size landscape 4:3, background color red 28, green 38, blue 56, the rest as the white one.
         - Transparent: background transparent, generative shadow opacity 0.
      2. When the white packshot is back: Topaz Image Upscale (model_topaz-image-upscale) on it, with enhanceModel "Text Refine" and upscaleFactor "2x".

      Show me the four files with asset_display.
  - title: "Check the wordmark at 1:1"
    text: "Accept when the wordmark matches the photo letter for letter at 100 percent, the knit and the sole are the photo's own, the outline is clean on white and on a dark background, and the shadow sits under the sole. Reject any changed letter, lacing, sole or color, a white halo, or an edge that eats into the laces."
    prompt: |-
      Download the four files with asset_download and compare each one with the product photo at 100 percent. Read the wordmark letter by letter, and look between the laces and around the sole for halos or a shadow on the wrong side of the light. Tell me which pass and which fail, and why. Redo only a file that fails, with the same settings.
  - title: "The 3D model, from three views"
    text: "From the cutout alone, the 3D run invented a garbled wordmark on the side it never saw. Give it the three views."
    prompt: |-
      Now run Meshy 7.1 - Image to 3D (model_meshy-7-1-img23d) with image set to an array of three asset IDs, in this order: the transparent cutout, the inner side photo, the back photo. Settings: geometryResolution "2k", shouldTexture true, textureResolution "2k", enablePbr true, shouldRemesh true, targetPolycount 100000. Quote it with a dry run first and wait for my go. When it is back, show it to me and tell me if any letters, mirrored or not, appear on a side the photos did not show.
  - title: "File the set and report"
    text: "Turn the 3D model in the viewer yourself before you publish it."
    prompt: |-
      Create a collection for this product and add the white, brand navy and transparent packshots, the 2x print version and the 3D model. Report the model used for each file, every asset ID and the total cost spent.
updated: 2026-10-16
canonical: https://learn.scenario.com/playbooks/product-packshots
---

Last updated: 2026-10-16

# Clean packshots from a real product photo

> Turn one product photo into white, colored and transparent packshots with the wordmark kept pixel for pixel, a print upscale and a 3D model.

In short:

- Store-ready packshots from one product photo: white, brand color, transparent, a 2x print version and a 3D model for the product page.
- Never generate the product: cut it out and place it, so every pixel of the wordmark comes from the photo.
- Four runs for the flat set, then one 3D run from three views; a single photo left the far side of the 3D model invented.


Store-ready packshots of one product from a single photo: white background, brand-color background, transparent cutout, a 2x print version, and a 3D model for a product page viewer. For e-commerce and marketing teams who cannot accept a wordmark with one wrong letter.

:::note As of October 2026
The models, settings and screens in this article are the ones Scenario offered in October 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

![The Vireo Apex, a molten orange knit racing shoe with white laces, a small VIREO wordmark on the heel and a thick translucent ribbed sole with a dark carbon stripe, on white with a soft shadow](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/06eb8ef3909ff0e6a72efd9777104851aef42c1b31ead1ec891eb8edd20b44be.webp "The kept white packshot: the shoe's pixels come straight from the photo.")

## The brief

| Field | Brief |
|---|---|
| Goal | Packshots for a product page, a marketplace listing and print, plus a 3D model for the product page |
| Input | One phone photo of the real shoe on a gym bench, outer side and wordmark facing the camera |
| Format | 1:1 white (marketplace); 4:3 brand navy RGB 28,38,56 (site); transparent PNG (designers); 2x white for print; GLB under 15 MB (viewer) |
| Fixed | The shoe's pixels: shape, knit pattern, laces, the translucent ribbed sole with its carbon stripe, the VIREO wordmark on the outer heel |
| May vary | Background, margin, shadow |
| Accept when | The wordmark reads letter for letter at 100 percent zoom; the outline has no halo or bitten edge; the shadow sits under the sole; the 3D model carries one wordmark, on the outer heel only |

The product used across the Commerce and Brand playbooks is invented: the **Vireo Apex**, a carbon racing shoe from the running brand Vireo Athletics.

The packshots made here feed [Product lifestyle scenes](https://learn.scenario.com/playbooks/product-lifestyle-scenes.md), then [Ad variations](https://learn.scenario.com/playbooks/ad-variations-family.md), [Formats from one master](https://learn.scenario.com/playbooks/key-art-and-store-assets.md) and [Edit one thing per campaign](https://learn.scenario.com/playbooks/edit-one-thing-campaign.md).

## Approach

:::flow
Source photo | Sharp, wordmark square to the camera | image
White packshot | Pixelcut Product Photo, generative shadow | image
Brand color | Pixelcut, navy background, 4:3 | image
Transparent cutout | Pixelcut, no shadow | image
Print version | Topaz Image Upscale, Text Refine, 2x | image
3D model | Meshy 7.1, cutout plus two more views | 3d
Wordmark check | 1:1 against the photo |
:::

The product is never generated: every pixel of it comes from the photo. Background tools cut the product out and keep those pixels; image generators redraw them, even when the prompt says "keep it exactly". This is the core rule of [Let code own what must be exact](https://learn.scenario.com/browse): copy what must be exact, rather than imitate it.

Models, as of October 2026:

- **Packshots:** Pixelcut Product Photo. It cuts the product out, places it on a color, an image or transparency, and adds a generative or drop shadow.
- **Print file:** Topaz Image Upscale with its **Text Refine** model, at 2x.
- **3D model:** Meshy 7.1 - Image to 3D, which takes one image or up to four views of the same object.
- **Quick check:** **Create** > **Remove Background**, with **Shadow Mode** and **HD Background Removal** options. See [Remove and replace backgrounds](https://learn.scenario.com/images/remove-and-replace-backgrounds.md).

As a test, the run also asked **GPT Image 2.5 Flare** to turn the phone photo into a clean packshot. It spelled VIREO correctly and still failed: the laces came back criss-crossed, the upper redder, the sole reshaped and the wordmark larger.

:::compare
![Heel of the cutout packshot after 2x upscale, with the small VIREO wordmark and the knit as in the photo](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b9f5fbc63eb71017a390b015dbdf4d9e4508e3e8eff723ec10d93a3ee6861ff4.webp "Kept: the cutout keeps the photo's pixels, so the wordmark and the knit are the real ones.")
![Heel of the regenerated packshot: the same word, larger, on a redder, smoother heel](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/76a80578e65174a94e76f11f1601d35375cc74b2732f6bd431de1eae4391b6a7.webp "Rejected: regenerated by an image model. The spelling held, the product did not.")
:::

## Steps

:::steps
1. **Shoot or pick the photo.** Sharp, product whole in frame, wordmark square to the camera, even light, nothing overlapping it. A phone photo on a bench is enough.

   ![The orange racing shoe on a black gym bench, a towel and a black bottle behind it, a weight rack blurred in the background](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/da20f648e0ab605ac3503984ba80ac4943c87273dfa796737dd85fd8fd61fff4.webp "The source photo. For this invented product it was itself generated as a stand-in; with a real product, use your own photo.")

2. **Make the white packshot** ([Cut out and key](https://learn.scenario.com/browse)). In **Choose a Model**, pick **Pixelcut Product Photo** under **Image** > **Remove Background**. Upload the photo, then set: image size `square_hd`, background mode `Color` (white is the default), margin `10%`, shadow type `Generative`, shadow opacity `0.3`. Run it.

3. **Make the brand-color packshot.** Same model, same photo. Set image size `landscape_4_3` (1024 x 768), background mode `Color` with red `28`, green `38`, blue `56` (the brand navy), margin `12%`, `Generative` shadow at `0.35`.

4. **Make the transparent cutout.** Same model, image size `landscape_4_3`, background mode `Transparent`, margin `6%`, no shadow, for designers' own layouts.

5. **Make the print version** ([Upscale and finalize last](https://learn.scenario.com/browse)). Open the white packshot, click **Enhance** in the asset toolbar, choose the **Text Refine** model and a **Scaling Factor** of 2x, then click **Enhance**. It returned 2048 x 2048 with the wordmark and the knit sharper and no letter shapes invented.

6. **Check the wordmark at 100 percent.** Zoom each output to 1:1 and read VIREO letter by letter against the photo. Check the outline for a halo or a bitten edge, especially between the laces and around the translucent sole.

7. **Build the 3D model from more than one view.** **Create** > **3D**, pick Meshy 7.1 - Image to 3D, and add the transparent cutout plus a photo of the inner side and one of the back under **Image**. Settings in this run: geometry resolution 2k, texture on with PBR, texture resolution 2k, remesh on with a target of 100,000 polygons. From the cutout alone, the model invented the side it never saw: a mirrored, garbled wordmark on the inner side and the heel. Download the GLB and turn it in the viewer before you publish it.

8. **File the set.** Add the kept files to a collection named for the product with **Collections**. Later playbooks in this series use the white packshot from it as the product reference.
:::

**With the Scenario MCP:** `model_run` on `model_pixelcut-product-photo` with `image`, `imageSize`, `backgroundMode`, `backgroundColorRed/Green/Blue`, `marginAll`, `shadowType` and `generativeShadowOpacity`; then `model_topaz-image-upscale` with `enhanceModel: "Text Refine"` and `upscaleFactor: "2x"`; then `model_meshy-7-1-img23d` with `image: [cutout_id, inner_id, back_id]`, `geometryResolution: "2k"`, `shouldTexture: true`, `textureResolution: "2k"`, `enablePbr: true`, `shouldRemesh: true`, `targetPolycount: 100000`.

The three Pixelcut calls do not depend on each other: start them together with `wait: false` and collect them with one `jobs_wait`. The Topaz upscale needs the white packshot and the 3D run needs the cutout, so start them once those are back.

:::compare
![Packshot of the shoe on a deep navy background, 4:3](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/6eac286eb7769e860a5c08a22de5035f1f27f1307713368af2814b823feb3352.webp "Brand-color packshot.")
![Transparent cutout of the shoe with no background](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/0010828800c49ac2c03ce8b5b8ba48aa3e8be573592b5ce9cd44941ea3136b6e.webp "Transparent cutout.")
:::

:::compare
![3D model of the shoe from one photo, seen from the inner side: a mirrored, garbled wordmark printed near the heel](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/20d844191bb5da4fb105b0dd85a25df14f8590e6692d02d1b407f50b59c75a62.webp "Rejected: one photo. The model mirrored the wordmark onto the inner side it never saw.")
![3D model of the shoe from three views, seen from the inner side: plain orange knit, no lettering](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/d183b48b25a92356174cfa2b0001f0a4f8b48bae4547aa40136c3581e0387ada.webp "Kept: cutout, inner side and back as inputs. The inner side is plain, as on the shoe.")
:::

A texture prompt saying "the inner side and the back of the heel are plain orange knit with no letters" did not fix the one-photo model: the second run still printed garbled letters there. Adding views did. With a real product, photograph the inner side and the back; for this invented shoe they were generated stand-ins.

:::compare
![The shoe's inner side on white: plain orange knit, white laces, translucent sole with the dark stripe](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b2542515c88f4a6749fc7c4108589ca9930c04765daf3bb9f21adff6bee90571.webp "Extra view 1: the inner side.")
![The shoe from behind on white: orange heel, translucent sole](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/7af7a4a09679eefc253d0d12173dd286e91f767d6c7624624c6d5f24eb2eeee0.webp "Extra view 2: the back.")
:::

:::model playbooks/product-packshots/vireo-apex.glb
![The Vireo Apex 3D model, three-quarter view of the outer side with the VIREO wordmark on the heel](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/afb2b56770933f8291e5263d3d9dde2218be0adb6fb5e6f6c796bc8563fba90f.webp)
Kept: Meshy 7.1 from three views, about 100,000 triangles (web copy with JPEG textures, 7.8 MB). Drag to turn it: one wordmark, on the outer heel.
:::

## Check the result

:::check
**Accept when:** the wordmark matches the photo letter for letter at 100 percent; the knit pattern and the sole are the photo's own; the outline is clean on white and on a dark test background; the shadow sits under the sole, not floating beside it; the 3D model shows one wordmark, on the outer heel, and plain knit everywhere else.
**Reject when:** any letter, the lacing, the sole shape or the upper's color differs from the photo; the edge shows a white halo or eats into the laces; a shadow appears on the wrong side of the light; the product was redrawn by a generator, even if it looks better; the 3D model shows letters, mirrored or not, on a side the photos did not show.
:::

At thumbnail size the rejected Flare packshot looks like a cleaner photo of the same shoe; at 1:1 the laces cross differently, the heel is smoother and the wordmark is larger. A customer who receives the real shoe would see it. Keep generative packshots for mood boards.

![The regenerated packshot: a similar orange shoe on white, with criss-crossed laces and a larger wordmark](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/76f069705b99f5a650b5e2d76525076ebfa67bc2186a5ef23d73d0c281510102.webp "Rejected: GPT Image 2.5 Flare. Right word, wrong product.")

The cutouts keep the photo's low camera angle: Pixelcut places the product, it does not turn it. Shoot from the angle the listing needs.

:::quiz Check yourself
? Two heel crops of the shoe for the marketplace listing, at the same scale. Which one ships?
![Close crop of a heel with the VIREO wordmark on orange knit](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/b9f5fbc63eb71017a390b015dbdf4d9e4508e3e8eff723ec10d93a3ee6861ff4.webp "Take A")
![Close crop of a heel with the VIREO wordmark on orange knit](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/76a80578e65174a94e76f11f1601d35375cc74b2732f6bd431de1eae4391b6a7.webp "Take B")
- [x] Take A: its pixels come from the photo, so the wordmark and the knit are the real ones
- [ ] Take B: the spelling is right, so it passes
- [ ] Either one: they read the same at thumbnail size
> The brief fixes the product's pixels. Take B was regenerated: the wordmark is larger and the heel smoother. A regenerated product fails even when the text is right.

? The 3D model from the cutout alone shows a mirrored wordmark on the inner side. What do you do?
- [ ] Add "no letters on the inner side" to the texture prompt and run it again
- [x] Run it again with photos of the inner side and the back added as views
- [ ] Ship it: shoppers rarely turn the model to the inner side
> In this run the texture prompt did not remove the letters; adding views did. The model only invents what it was not shown.
:::

## Make it repeatable

- **One App for the whole catalog** ([Package it as a workflow or skill](https://learn.scenario.com/browse)), so anyone can drop a photo and get the files ([Publish a workflow as an App](https://learn.scenario.com/workflows/publish-a-workflow-as-an-app.md)). In the **Node Editor**:
  - three **Image** input nodes named `Product photo`, `Inner side` and `Back`;
  - three **Image Generator** nodes set to Pixelcut Product Photo (white, brand color, transparent);
  - an **Image Generator** set to Topaz Image Upscale after the white one;
  - a **3D Generator** set to Meshy 7.1 - Image to 3D, fed by the transparent cutout and the two side photos;
  - an **Approval** node after the white packshot with the message `Approve only if the wordmark reads correctly at 100 percent and the lace edges are clean.`
- **Fix the brand color once** in the node settings, not in a note people retype.
- **Batch from code.** For 200 products, call the workflow once per photo set through the API or the Scenario MCP, then review the approval queue. See [Run workflows from code and agents](https://learn.scenario.com/workflows/run-workflows-from-code-and-agents.md).
- **Keep the photo rules with the App,** in its long description: most bad packshots start as bad photos, and most bad 3D models start from one photo.

## Runs and time

| Step | Model | Runs or takes | Kept | Wait |
|---|---|---|---|---|
| White packshot | Pixelcut Product Photo | 1 | 1 | about 3 s |
| Brand navy packshot | Pixelcut Product Photo | 1 | 1 | about 3 s |
| Transparent cutout | Pixelcut Product Photo | 1 | 1 | about 3 s |
| 2x print version | Topaz Image Upscale, Text Refine | 1 | 1 | about 9 s |
| Generative packshot (rejected example) | GPT Image 2.5 Flare | 1 | 0 | about 25 s |
| 3D from the cutout alone | Meshy 7.1 - Image to 3D | 1 | 0 (rejected) | about 135 s |
| 3D from the cutout, with a texture prompt | Meshy 7.1 - Image to 3D | 1 | 0 (rejected) | about 170 s |
| 3D from three views | Meshy 7.1 - Image to 3D | 1 | 1 | about 180 s |
| Stand-in inner side and back views (invented product only) | GPT Image 2.5 Sunburst | 2 | 2 | about 30 s each |
| Stand-in source photo (invented product only) | GPT Image 2.5 Sunburst | 1 | 1 | about 45 s |

With a real product, the set is the four flat rows plus one 3D run from your own photos; the 3D run is the largest single step by far. The app shows each price before you run; through the Scenario MCP, ask for a dry-run quote.

## Variations

- **Marketplaces with strict rules:** set the margin so the product fills the share of the frame the marketplace asks for; turn the shadow off if the rules forbid it.
- **Packaging and boxes:** shoot the box at three-quarters so two faces show, and check both faces' text at 1:1. For 3D, add a photo of each printed face.
- **Fashion flat-lays:** the same tool cleans a garment shot on a table; see [Fashion edits and try-on](https://learn.scenario.com/playbooks/fashion-edits-and-try-on.md) to put it on a model.
- **Spare parts and tools:** place the transparent cutout on a measured grid in code, so the scale bar is exact.
- **Brand backgrounds from an image:** set the background mode to `Image` and pass a plain textured backdrop (concrete, track rubber).

## If it breaks

- **A white halo around the product.** The background was close to the product color. Reshoot on a contrasting surface, or try **HD Background Removal** in the **Remove Background** tool.
- **Gaps between laces are filled.** Check every enclosed shape; if one fails, reshoot with more contrast behind the gap.
- **The shadow floats or points the wrong way.** Switch the shadow type from `Generative` to `Drop`, or remove it and add a shadow in your layout tool.
- **The upscale invents letter shapes.** Use **Text Refine**, not a creative upscaler, and keep the factor at 2x. See [Upscale and enhance images](https://learn.scenario.com/images/upscale-and-enhance-images.md).
- **The 3D model prints letters where the product has none.** Add photos of those sides as extra views (up to four); a texture prompt alone did not fix it in this run.
- **The GLB is too heavy for the web.** Re-encode its textures as JPEG; here the download was 15.3 MB, mostly PNG texture maps, and 7.8 MB after re-encoding.
- **Someone "improves" the packshot with an image generator.** Compare the wordmark at 1:1 against the photo before it ships; if the shape or knit changed, go back to the cutout.

Source: https://learn.scenario.com/playbooks/product-packshots
