Case study · AI in production

Cut product updates in live 3D stores from days to minutes

AI Product Placement Pipeline · Emperia · 2025
A new handbag composited onto a display plinth in a virtual 3D boutique, the old product ghosted inside a detection box
Shorter production timelines
90%
Unreal Engine re-renders per product update
0
Time per product update
48h → min
Context

Every product change meant a full 3D re-render

Emperia's virtual stores are 8K panoramas rendered from Unreal Engine and served through Krpano. Swapping a single product meant sourcing new panoramas, replacing the model in Unreal, re-rendering the whole scene, reprocessing it in Krpano and updating the XML. Each update took about 48 hours.

Before · manual

~48 hours
  1. Source new 8K panoramas
  2. Swap the product model in Unreal Engine
  3. Re-render the entire scene
  4. Process the output through Krpano
  5. Update the XML by hand

After · automated

Minutes
  1. Upload the new product image
  2. Pipeline finds, replaces and composites the product
  3. Krpano refreshes the live space

Unreal Engine is out of the update loop.

My role and scope

Led a team of two to build the pipeline end to end

Role
Front End Lead, Emperia. Led a team of 2
Owned
Pipeline design, detection and synthesis services (Python, FastAPI, OpenCV), Krpano integration
Worked with
1 senior full-stack engineer, 1 junior full-stack engineer
Timeline
6 weeks
Pipeline

Six automated steps, image in to live store out

  1. 01
    New product image
    The replacement product.
  2. 02
    Coordinate detection
    Locates the old product from coordinates Krpano captured at space creation.
  3. 03
    8K → 4K resize
    Prepares the panorama for synthesis.
  4. 04
    AI synthesis
    Synthesizes the new product directly into the scene.
  5. 05
    Panorama composite
    Builds the updated panorama.
  6. 06
    Krpano XML update
    Refreshes the live 3D space.
Key decisions and trade-offs

Edit the render, not the scene

Took Unreal Engine out of the update loop

The pipeline edits the rendered panorama instead of the 3D scene, so no update waits on a re-render. Trade-off: we gave up the physically accurate lighting, shadows and reflections of a true re-render in exchange for a turnaround of minutes, not days.

Reused coordinates captured at space creation

Krpano already records where each product sits when a space is built. The pipeline reads those coordinates, so nobody has to mark the old product by hand.

Detect at 8K, synthesize at 4K

Detection runs on the full 8K panorama; synthesis runs on a 4K resize. The synthesis model's input resolution caps well below 8K. Downscaling to 4K also kept inference fast and costs low.

Wrote back through Krpano's XML

The updated panorama and XML feed straight into Krpano, which refreshes the live 3D space in place.

Stack
PythonFastAPIOpenCVAI image synthesisImage processingKrpano
Next case study · Emperia Creator Tools
Cut 3D space deployment from days to hours
95% →

Hiring a Lead or Staff Frontend Engineer?

Open to Lead, Staff and Senior frontend roles in eCommerce, enterprise and AI products. Remote from Lahore (UTC+5). Replies within 24 hours.

Book a call →Email me