Oeave is the first Shopify app that turns 2 to 8 product photos into a Gaussian splat embedded on the PDP. No artist, no rebuild, photoreal in under two seconds on LTE.

If you sell on Shopify and you have read about Gaussian splats but cannot find a single Shopify app that actually ships them, you are not missing something. Until now, every 3D app in the Shopify ecosystem shipped hand-tuned GLB models that take a 3D artist days per product. The splat tools that exist are research demos, desktop scripts, and standalone viewers. None of them embed on a real Shopify PDP without a developer. That is the gap Oeave closes.
Yes. Oeave is the first Shopify app that turns 2 to 8 product photos into a Gaussian splat embedded on the product page, with no 3D artist and no theme rebuild. The buyer sees a photoreal capture of the real product that loads in under two seconds on LTE. The founder ships in an afternoon. Smartphones already drive about 45% of US web traffic per Shopify's own commerce data, and a 12 MB GLB does not survive a coffee-shop connection. A 1 to 4 MB splat does.
The technique behind the capture was published as 3D Gaussian Splatting for Real-Time Radiance Field Rendering at SIGGRAPH 2023 by Kerbl, Kopanas, Leimkühler, and Drettakis at INRIA. The practical part for ecommerce is the size and the speed.
Every existing 3D app on Shopify is built around GLB. Shopify's Hydrogen ModelViewer component wraps Google's model-viewer, which expects GLB and USDZ. Shopify's product media docs target a 4 MB GLB and cap uploads at 15 MB. The whole platform is set up for a sculpted mesh, not a splat.
Splats render with a different pipeline. They use a cloud of small, colored, semi-transparent shapes drawn in WebGL, not a triangle mesh with PBR materials. To put one on a product page, you need a renderer that can load .ply or .splat files, decode them in the browser, and draw them in real time without breaking the rest of the page. The library for this is @mkkellogg/gaussian-splats-3d, a three.js renderer at version 0.4.7. It is the building block, not the app.
Until Oeave, no one wrapped that renderer into a Shopify-installable app with a capture pipeline behind it. The Shopify 3D apps in the store still want you to upload a GLB you already have. Most premium founders do not have one.
Two to eight product photos. One from above. Even lighting from two sides. A clean background. That is the whole shoot list.
A merchandiser can do it in 10 minutes per product with a phone. Shopify's own blog calls image-to-3D the most practical method for most merchants and points at the same workflow: photos in, 3D out.
The capture rules that decide whether the splat is buyer-ready:
For symmetrical products like a watch or a ceramic mug, 5 to 6 photos work. For a leather bag with stitched panels and an asymmetric shape, use the full 8. The photo-count guide covers the per-category rules.
Oeave installs as a Shopify app. Once installed, the renderer loads as a small script on top of the existing theme. There is no theme fork. There is no custom Liquid section to wire up. The product page renders normally; the splat fades in over the hero image when the buyer scrolls near it.
This matters because Shopify themes are tightly scoped. Adding a heavy WebGL bundle to a Dawn-based theme by hand is the kind of project that ends in a slow PDP and a developer ticket. A small overlay script that lazy-loads the splat from a CDN does not break the theme.
The same install path works for Hydrogen storefronts. The renderer loads from the same CDN, the embed snippet is the same, and the React-based storefront treats it as a regular client-side component. A Liquid Dawn store and a Hydrogen store see the same setup.
Checkout is the part that breaks most 3D experiments. A splat that unmounts when the buyer clicks "add to cart" loses the trust the rotation just built. Oeave preserves the renderer state across the cart drawer so the splat is still rotating when the buyer comes back to the page. The embed tradeoffs guide covers this in more detail.
A compressed Gaussian splat for a single product runs 1 to 4 MB. A photoreal GLB with PBR textures runs 8 to 15 MB. Shopify's own help docs aim for 4 MB GLB and cap uploads at 15 MB.
Google's Largest Contentful Paint target is 2.5 seconds for a "good" rating at the 75th percentile. The buyer gets less than 3 seconds before they decide to scroll or leave. A 12 MB GLB on LTE eats that whole budget. A 2 MB splat does not.
The size win disappears if the page does not lazy-load. A 3 MB splat that fires on first paint is just as bad as the GLB. Oeave fades the splat in only when the buyer scrolls within range of the rotation block, so the LCP element is still the hero image. The mobile load tradeoffs are covered in the mobile splat sizing guide.
The capture is free if the merchandiser already has a phone. The processing runs on Oeave's pipeline at a per-product price set in the Shopify app billing.
Compare that to the alternative. A 3D artist takes a half day to a full day per product for a premium SKU. At a typical $75 to $150 hourly rate, that is $300 to $1,200 per product. For a 100 SKU catalog, the artist route is $30k to $120k of one-time spend, plus retouching every time the product changes. The splat route is the same merchandiser who shoots the product photos.
The CDN cost is small. A 2 MB splat served from Cloudflare runs the same as any other static asset on a premium DTC store. The LCP impact is what saves money on the back end: a faster mobile page lifts the conversion the brand is already paying ad spend to drive.
A rotating product is a toy. A rotating product that answers a real question is a sale. The splat does the second one when the page knows what the buyer just looked at.
The flow that works on premium DTC:
Most splat experiments stop at step 3. The conversion lift comes from steps 4 and 5. The premium PDP checklist walks the rest of the items that decide whether the splat lifts revenue or just looks nice.
The splat is the wrong tool in three cases.
Geometry-driven categories. Furniture, lighting, bicycles, sport equipment. The buyer cares about the line of the frame, the silhouette of the lamp, the camber of a ski. A splat reads soft at sharp edges. A clean GLB still wins for these. The splat vs 3D model breakdown covers the category-by-category call.
High-gloss reflective surfaces. Chrome, mirrored finishes, fresh enamel. Photogrammetry struggles when the surface reflects more than it shows. You can capture these with controlled studio lighting and a polarizing setup, but the merchandiser-with-a-phone workflow stops working. For these products, ship a 3D model the artist tunes.
Configurable products. Sofas with swappable fabric. Watches with dial-color options. The buyer needs separable parts. A splat is one frozen capture; it has no concept of "swap the leather." Configurators stay on GLB with separable meshes.
If the product is none of these and your premium buyers are leaving on mobile, the splat is the right ship.
Pick the product on your store where buyers ask the most pre-purchase questions. The one with the highest return rate or the most "what does the back look like" emails. That product is the splat candidate.
The test:
If the time-on-page lifts and the rotation completion rate clears 40%, you have a splat-shaped product. Roll the same workflow to the next 3 products. The 3D viewer comparison covers what to do if you already have a 3D app installed and the lift has not shown up.
The Shopify catalog has dozens of 3D apps. Until now, every one of them required a 3D artist or a developer. Oeave is the first that does not.