What Vectary did well: browser-based PBR materials with credible refraction, transmission, and volumetric absorption out of the box. For modelling the relationship between liquid IOR, glass thickness, and absorbed amber light, the visual editor was faster than any code-first route. The pitch deck and the case study captures both came out of Vectary’s renderer.
Where Vectary would not have shipped this to production: the embed renderer is a different beast from the editor preview. Materials read flatter, environment lighting is reduced, and there’s no control over loading strategy, accessibility, or analytics. For a portfolio piece this is acceptable; for a live commerce surface on a $1,500 bottle, it isn’t.
What I considered: Spline was rejected on material fidelity for refractive surfaces. PlayCanvas was the strongest visual-builder alternative, with a proper scene editor and better runtime control, but its strategic shift toward AR following Snap’s acquisition makes it a less safe long-term bet for non-AR commerce work. Babylon.js is technically excellent and I’ve used it before, but the visual-builder advantage that justified moving off Vectary doesn’t exist there.
Where I’d take this for production: Three.js with React Three Fiber, hosted directly on the brand site. MeshTransmissionMaterial for the glass and liquid, custom HDRI for the environment, lazy-loading per variant, and a still fallback for low-end devices. The bottle embedded live above is a step in that direction, served via the model-viewer web component as an honest middle ground between Vectary’s embed and a full Three.js rebuild.