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- Source new 8K panoramas
- Swap the product model in Unreal Engine
- Re-render the entire scene
- Process the output through Krpano
- Update the XML by hand
After · automated
Minutes- Upload the new product image
- Pipeline finds, replaces and composites the product
- Krpano refreshes the live space
Unreal Engine is out of the update loop.
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
Six automated steps, image in to live store out
- 01New product imageThe replacement product.
- 02Coordinate detectionLocates the old product from coordinates Krpano captured at space creation.
- 038K → 4K resizePrepares the panorama for synthesis.
- 04AI synthesisSynthesizes the new product directly into the scene.
- 05Panorama compositeBuilds the updated panorama.
- 06Krpano XML updateRefreshes the live 3D space.
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.
