Mo Tawfik Khalifa · Product leader and builder

3D web experiences: virtual stores, configurators, browser games and digital twins

Work with me · 3D on the web
My Hermès virtual store, opening on a tablet · How I built it

Set your project below and see what I would use, and what it costs your visitors in waiting time.

Try it

What can run in a browser? Set your project and see the approach I would pick.

Products in 3D
Detail (polygon budget)
Main screen
People together

What I would use

three.js

It opens from a link with the smallest download, in about 97% of browsers. I spend the polygons on the product and bake the room, so a mid-range phone keeps up.

Honest limits for this setup

  • A few products can all load up front.
  • No game server needed: the whole thing is static files on a CDN.

Closest thing I have built: NetNet Runner, about 1 MB, and GVNR Survivors, about 4 MB.

Download sizes are my estimates from my own builds (NetNet Runner about 1 MB, GVNR Survivors about 4 MB, SEVEN Al Hamra 74 MB). Your assets set the real number. Wait times assume a 20 Mbit/s connection.

I build 3D experiences that open from a link: virtual stores and showrooms, 3D product configurators, multiplayer browser games and digital twins of real buildings. I pick three.js, Unity or a streamed engine by the screen your audience already holds, and build to that budget.

I’m Mo Tawfik Khalifa. For 20+ years I have built live systems and real-time worlds: for the BBC, Formula 1, the Winter Olympics and Expo 2020 Dubai, and in games including PUBG.

The browser is now a safe bet for 3D. WebGL 2.0, the graphics layer three.js draws with, works in about 97% of browsers in use worldwide, and the newer WebGPU in about 86% (Can I use, WebGL 2.0 and WebGPU, data as of 13 October 2026). What decides whether people stay is the download and the frame rate on their own device.

Worried 3D is a slow gimmick that does not sell?

What you get: a fixed price in writing after the first call, before any work starts. The build on a live link you can click every week. You talk to me, the person who builds it, not a salesperson.

What can you build in 3D for the web?

Virtual stores and showrooms

My Hermès virtual store let a customer step inside as an avatar, turn a bag in 3D and move in close on the leather. At Napster I built a TAG Heuer virtual showroom, with a racing garage, a golf course by the sea and a virtual try-on that puts the sunglasses on your own face, with the product page beside them. With Napster, DMCC launched its Crypto Centre metaverse in Dubai, which runs on WebGL in a desktop browser with nothing to install. The full story is in virtual stores, live shows and 3D worlds people actually use.

3D product configurators

A configurator earns its place only when a choice changes the product: strap, dial, colour. I spend the polygons on the product, bake the room, and keep the basket on your ecommerce site, one tap away. I judge it by one number: taps through to a product page per visitor.

Browser games

Two you can play now. NetNet Runner is a tiny-planet multiplayer game in three.js: grab coins and bank them before someone bumps you. The whole game is about 1 MB to load. GVNR Survivors puts you against a swarm of rogue AI agents coming for production, for five minutes. It is three.js too, about 4 MB with its 3D models.

Digital twins

I turned SEVEN’s construction models for Al Hamra, its entertainment destination in Riyadh, into a building you can walk through in your browser: a 74 MB download that draws about 700,000 triangles at once at 60 fps on a laptop graphics chip. It took just under 12 weeks from first access to sign-off, by hand. Read the SEVEN Al Hamra case study. At Expo 2020 Dubai my team of 12 worked on Virtual Expo Dubai, the whole site in real-time 3D, still live after the Expo closed.

Live shows

I ran the technical production and workflow of PRISM, the virtual club world High Scream designed inside Sensorium Galaxy, where Carl Cox’s show premiered. How a virtual concert is built is in the same note.

three.js, Unity or streamed: which should you use?

How long does a 3D website take to load?

As long as its first download. My NetNet Runner game is about 1 MB, GVNR Survivors about 4 MB, and the SEVEN Al Hamra building 74 MB. A 74 MB building is fine on a laptop and too much for a first visit on a phone, so on phones it plays a short video first and loads the 3D when you ask. Three rules keep the wait down:

  1. Spend the polygons on the product. CAD or photogrammetry, rebuilt to a polygon budget, with fine detail baked into normal maps.
  2. Bake the light. Lighting worked out once ahead of time, so the device does not have to.
  3. Load the first room first. Compressed meshes and textures stream from a CDN while people look around.

Branded browser games: what does an advergame do for a campaign?

A branded browser game, or advergame, is a short HTML5 game people play from a link, where your product is the world or the rules. It does three jobs: reach, when players share their score; a leaderboard, which gives them a reason to come back; and data capture, an opt-in sign-up at the moment people care most, right after a good run.

Build it for the phone first. In September 2026, about 59% of web page views worldwide came from mobile devices (Statcounter Global Stats).

Proof you can play: GVNR Survivors

GVNR Survivors is the game I built for GVNR, a guard that decides, before an AI agent acts, whether to allow it, block it or ask a person. You hold production against a swarm of rogue AI agents for five minutes. Every enemy is something real AI does, like deleting a chapter or opening the salary sheet, and every power-up is a real GVNR rule, so players learn the product by playing it. The run ends on a score card made to share.

What makes a browser game work on a phone?

Set your campaign below and see what I would build.

Try it

Pick what the game is for, where players come from and how long a run lasts.

What I would build

A 60 second game built to be shared

The build

  • A score card made for sharing: the score, one line about your brand and the link back.
  • Sharing through the phone’s own share sheet, with a post on X as the fallback.
  • Most taps from a social post open inside the app’s own browser, so I test it there, not only in Safari and Chrome.
  • A 60 second run fits a queue or a bus stop, and playing again is one tap.

Phone checks

  • A first download of a few MB, so it starts on mobile data.
  • One thumb: drag anywhere to move.
  • Resolution capped, so sharp screens stay smooth.
  • No account or install before the first run.

The one number: shares per player.

Closest thing I have built: GVNR Survivors, about 4 MB, a five minute run that ends on a share card.

The game is for
Players arrive from
One run lasts

What does a 3D web project cost?

Four things set the cost and the timeline: how many products are rebuilt in 3D, how real they must look, how many people join at once, and whether it runs live once or stays open. Running cost is the other half. A three.js or Unity build costs one download per visitor. A streamed build rents a GPU per viewer for as long as they stay. I write the brief back to you on one page before any price: the one number, the devices, the budget for the weakest device, what we build, what we buy and what we cut.

What should you bring to the first call?

If the bigger question is what to build at all, or you need product leadership alongside the build, see fractional CPO and forward deployed engineer.

How these builds work, in detail

Questions people ask

How much does a 3D website cost?

It depends on four things: how many products are rebuilt in 3D, how real they must look, how many people join at once, and whether it runs live once or stays open. The same four set how long it takes.

Should I use three.js or Unity for a 3D website?

three.js when it has to open fast from a link, especially on phones. Unity when the model is heavy, or when the same project also has to ship to Android or Windows. Streamed Unreal Engine when the visuals matter more than the cost per viewer.

Can a 3D product configurator connect to my online store?

Yes. The 3D world sits in front of your store and the basket stays on your ecommerce site, one tap away.

Do visitors need to install anything?

No. A three.js or Unity web build opens in the browser from a link. A streamed build plays as video in the browser.

Can you turn CAD or BIM models into a 3D website?

Yes. I turned SEVEN’s Revit, IFC and Navisworks construction models into a building you can walk through in a browser.

Can you build multiplayer browser games?

Yes. NetNet Runner is a tiny-planet multiplayer game in three.js: players grab coins and bank them before someone bumps them.

What is an advergame?

A short game built for a brand campaign that people play from a link, where the product is the world or the rules. It ends on something worth sharing: a score card, a leaderboard place or a sign-up. In GVNR Survivors every enemy is something real AI does and every power-up is a real GVNR rule.

Do HTML5 branded games work on phones?

Yes, when they are built for the phone first: a small download, one-thumb controls, a capped render resolution and sharing through the phone’s own share sheet. GVNR Survivors loads about 4 MB with its 3D models and plays with one thumb.

  1. 30-minute call. Your goal, your users, what is stuck.
  2. A written plan in 48 hours. What to build first, how long it takes, the risks.
  3. Start, or not. Use the plan with your team or with me. I reply to every email within one working day.

If you want a virtual store, a configurator, a game or a digital twin built, write to m@tawfik.tv with what you have and who it is for.