DEV Community

우병수
우병수

Posted on • Originally published at techdigestor.com

I Shot a 3D Tour on My iPhone and Published It in 48 Hours — Here's the Exact Stack I Used

TL;DR: A friend needed a 3D tour for a property listing last spring. She'd already gotten quotes — $350 from one local firm, $480 from another, plus a 48-hour turnaround before she'd even see a draft.

📖 Reading time: ~28 min

What's in this article

  1. The Problem: Real Estate Agents Were Paying $400/Shoot for Something My iPhone 15 Pro Can Do
  2. What You Actually Need Before You Start
  3. The Three Capture Apps Compared (From Actual Field Use)
  4. Setup to Published: The Polycam → Kuula Pipeline
  5. Setup to Published: The Matterport All-in-One Pipeline
  6. Where Each Tool Breaks (Honest Rough Edges)
  7. Tool Comparison Table: Kuula vs Matterport vs Momento360
  8. When to Pick What: Match the Tool to the Job

The Problem: Real Estate Agents Were Paying $400/Shoot for Something My iPhone 15 Pro Can Do

A friend needed a 3D tour for a property listing last spring. She'd already gotten quotes — $350 from one local firm, $480 from another, plus a 48-hour turnaround before she'd even see a draft. I looked at my iPhone 15 Pro sitting on the desk and thought: this thing has a LiDAR scanner that I've used exactly once, to measure whether a couch would fit through a doorway.

The LiDAR sensor on the 15 Pro (and Pro Max, and the 14 Pro before it) does structured-light depth mapping at up to 5 meters with sub-centimeter accuracy in good indoor lighting. Apple shipped it primarily for AR features and low-light autofocus. The photography community knows about it. The real estate community largely doesn't — or they do and they're still writing $400 checks anyway, which is a different problem.

I spent a weekend testing every SaaS tool I could find that claims to ingest iPhone-captured data — whether that's LiDAR point clouds via apps like Polycam or Canvas, photogrammetry sequences from the standard camera, or the .obj/.glb exports those apps produce — and output something embeddable you'd actually send a client. Here's the honest scorecard:

  • Polycam → Matterport Cloud: Actually works. More on this below.
  • Polycam → Kuula: Works well, different output style, cheaper.
  • Canvas App → some third-party viewers: Burned two hours. Canvas is great for floor plans but the export formats are hostile to web embedding.
  • RoomScan Pro with "tour mode": The tour output looks like it was designed in 2014. I wouldn't send it to a client.

The pipeline that actually holds up is: Polycam (LiDAR scan mode) → process in-app → export as either equirectangular panoramas or a 3D mesh → upload to a hosting SaaS that generates the nav graph and embed code. The two tools worth your time are Polycam itself for capture/processing and Kuula for hosting if you're price-sensitive, or Matterport's cloud if you need the brand recognition. Everything else either mangles the mesh, produces non-embeddable output, or charges you per-upload pricing that quickly eclipses just hiring the professional photographer.

The thing that caught me off guard: the bottleneck isn't capture quality. A careful iPhone 15 Pro scan in decent lighting produces mesh data that looks genuinely good at web resolution. The bottleneck is that most SaaS tools were built assuming you'd feed them a Matterport Pro2 or a Ricoh Theta — dedicated hardware with known output specs. iPhone LiDAR exports need a processing middleware step, and half the tools skip that or do it badly. Knowing which two tools handle that step correctly is what this is actually about.

What You Actually Need Before You Start

The thing that trips up most people first is assuming any iPhone will do. It won't. LiDAR is the hard requirement — and LiDAR only ships on the Pro and Pro Max models. That means iPhone 12 Pro minimum, but realistically you want iPhone 13 Pro or newer because the LiDAR range improved significantly between generations. An iPhone 13 standard or iPhone 14 (non-Pro) has no LiDAR sensor. The depth-capture apps will either refuse to launch the scan mode entirely or fall back to photogrammetry, which produces dramatically worse meshes for interior spaces. Check your model before you drive anywhere.

Pick one capture app and commit to it for the entire shoot. Matterport Capture is the obvious choice if you're paying for Matterport cloud — the two are designed as a closed loop and the quality shows. Polycam is the one I switched to for smaller spaces because it exports cleanly to .glb and .usdz without a subscription gate on single scans. RoomScan LiDAR is more focused on floor plans than full 3D tours, so unless that's literally what you need, skip it. The reason you don't mix formats mid-shoot: each app has its own spatial coordinate system. If you scan three rooms in Polycam and two in Matterport Capture, there is no merge step — you're doing two separate tours or throwing away half your work.

On the SaaS side, the decision tree looks like this:

  • Matterport cloud — best mesh quality, ~$70/month for Pro, gives you the embeddable my.matterport.com viewer that clients recognize. Overkill for a single room.
  • Kuula — works with equirectangular JPEGs, $16/month for the Pro plan, genuinely good for real estate and travel shoots where you're stitching 360 photos rather than processing a point cloud.
  • Momento360 — free tier exists and it's usable, upload limit is 500MB per tour on free, fine as a budget fallback for demos or personal projects.

File format awareness will save you hours of confusion. .e57 is a point cloud format — raw depth data, enormous file sizes, what tools like Recap or CloudCompare ingest. .glb is a compressed 3D mesh with embedded textures — what web viewers and AR tools actually want. Equirectangular JPEGs are flat 360-degree photos stitched into a 2:1 aspect ratio image — what Kuula and most lightweight hosting platforms consume. These are not interchangeable. Polycam exports .glb; Matterport keeps its mesh proprietary unless you pay for the .e57 export add-on ($$$); if you want to host on Kuula, you're shooting in 360-photo mode, not LiDAR scan mode. Know your destination before you pull the trigger on any scan.

The upload problem is real and underestimated. A full LiDAR scan of a 2,000 sq ft space in Matterport will push 300–500MB before processing. Polycam exports run smaller, but a detailed .glb with 4K textures sits around 150–250MB. Hotel WiFi with 20 people streaming will time out on you mid-upload, and most of these platforms don't support resumable uploads — you start over. I batch my uploads from a tethered hotspot or wait until I'm on a known fast connection. If you're doing this professionally, factor in upload time as part of your post-shoot workflow, not an afterthought.

The Three Capture Apps Compared (From Actual Field Use)

The thing that caught me off guard when I started doing these tours: all three apps use your iPhone's LiDAR sensor, but they're solving completely different problems. Picking the wrong one costs you time, not just money.

Polycam

Polycam produces the cleanest mesh output of the three, full stop. You get .glb and .obj exports that you can drop directly into Three.js, Babylon.js, or upload to Sketchfab without any conversion step. The texture baking is solid — I've exported spaces that looked usable in a browser at under 15MB after running the mesh through meshoptimizer. The free tier is where you hit a wall fast: 5 LiDAR captures per month, hard limit, no rollover. I burned through that in day one of a site visit. After that you're looking at $14.99/month (Pro) or $79.99/month (Business) from their current pricing page. Pro is fine for single-person work. Business if you're running multiple capture sessions per week with a team.

Matterport Capture

Matterport's iPhone app is genuinely impressive if you stay inside Matterport's ecosystem. The 3D Showcase embeds are polished, the dollhouse view works without configuration, and clients recognize the brand. The problem is the walls they've built around the raw data. On the free plan you get 1 active space — and you cannot export the mesh. You're renting a viewer, not owning a file. The paid plans start at $9/month (Starter, 5 active spaces) but mesh export still requires the $69/month plan or higher. If a client says "I need a Matterport link to embed on our real estate listing," use this app. If you want the raw geometry to host yourself or pipe into another tool, you'll be frustrated.

RoomScan LiDAR

RoomScan is a different animal. It's genuinely excellent at producing accurate 2D floor plans — the kind architects and property managers actually want, with measurements you can trust within a few centimeters. But its 3D output isn't built for immersive tours. You get a model, but it lacks the texture fidelity and photographic overlay that makes a tour feel real. I'd recommend it specifically for:

  • Pre-construction walkthroughs where the floor plan is the deliverable
  • Insurance documentation
  • Pairing with Polycam — RoomScan for the plan, Polycam for the immersive mesh

Don't use it as your primary capture tool if the output is a browser-based 3D tour. You'll spend hours trying to make it work and end up back in Polycam anyway.

The Actual Decision Tree

Here's how I make the call before any capture session:

  1. Client needs a Matterport embed URL → Matterport Capture, accept the ecosystem lock-in, budget for at least the $9/month plan
  2. You need a portable mesh file (.glb, .obj) for a custom viewer or third-party SaaS → Polycam Pro, worth every dollar of the $14.99/month
  3. The deliverable is a floor plan with dimensions → RoomScan LiDAR, nothing else comes close for that specific output

The mistake I see people make is trying to get Matterport Capture to behave like Polycam. They're not competing — they just overlap enough in marketing language that it looks like they should be interchangeable. They aren't.

Setup to Published: The Polycam → Kuula Pipeline

The thing that caught me off guard the first time was how many export formats Polycam offers — and how most of them are completely useless for Kuula. GLTF, OBJ, point clouds — none of that works. You need equirectangular JPEGs, and the setting to get there is buried. Once I found it, the whole pipeline clicked.

Step 1 — Capture in Polycam

Use Room mode, not Photo mode. Room mode triggers the LiDAR sensor on iPhone 12 Pro and later to build a proper depth mesh underneath your panorama. The gotcha here is time: keep each room scan under 90 seconds. Go longer and you start seeing drift artifacts — misaligned stitching where the two ends of your sweep don't meet cleanly. I usually do a slow 360° sweep, then a quick second pass tilting the phone up to capture ceiling trim, and I'm done in 60–70 seconds comfortably.

Step 2 — Export from Polycam

Once you've processed a scan: Settings → Export → 360 Panoramas. This outputs equirectangular JPEGs at around 8000×4000px per room — exactly what Kuula expects. Don't pick "3D Model" or "LIDAR" exports here; they'll give you formats Kuula has no idea what to do with. Name your files before exporting (living-room.jpg, kitchen.jpg) because Polycam's default filenames are timestamp hashes and you'll lose track fast.

# After AirDrop to Mac, verify dimensions with ImageMagick
identify living-room.jpg
# living-room.jpg JPEG 8000x4000 8000x4000+0+0 8-bit sRGB 12.4MB

# Kuula recommends under 8MB per panorama for smooth loading
# If you're over, compress with:
convert living-room.jpg -quality 82 living-room-compressed.jpg
Enter fullscreen mode Exit fullscreen mode

Step 3 — Upload to Kuula

Go to kuula.co → New Tour → Upload panoramas. Drag all your room JPEGs in at once. Kuula auto-detects the equirectangular format and renders them immediately. The drag-to-reorder interface is how you set the logical flow of the tour — put your entry point (front door / lobby / foyer) first, then sequence rooms in the order a visitor would naturally walk through. This order matters because Kuula uses it as the default navigation hint for first-time viewers.

Step 4 — Hotspot Linking

This is where the tour becomes actually interactive. In Kuula's editor, open a panorama, click the hotspot tool, then click anywhere on the floor where you'd want someone to "walk toward" to move to the next room. Set the destination to your target panorama. The floor placement matters — if you put the hotspot on a wall or ceiling, users get confused about where to click. I always place them as floating arrows just above floor level pointing toward doorways. Repeat for every room transition. A 3-bedroom apartment usually needs 8–12 hotspots total to make navigation feel natural in both directions.

Step 5 — Embed Anywhere

Kuula generates an iframe snippet from the Share menu. It works out of the box on both WordPress and Webflow — I've tested both. In WordPress, paste it into an HTML block (not a Paragraph block, or it'll strip the iframe). In Webflow, drop an Embed element and paste directly. The default iframe dimensions Kuula gives you are 680×400, which is too small for a property tour. I always override to at least 100%×600px:

<iframe
  src="https://kuula.co/share/YOUR_TOUR_ID?fs=1&vr=1&zoom=1&sd=1&thumbs=1&info=1&logo=-1"
  width="100%"
  height="600"
  frameborder="0"
  allowfullscreen
  allow="xr-spatial-tracking"
></iframe>
Enter fullscreen mode Exit fullscreen mode

The ?fs=1 flag enables fullscreen, vr=1 enables cardboard VR mode — both should be on for any property or hospitality use case. Now the real cost cliff: Kuula's free plan watermarks every embed and caps tours at 5 panoramas. A one-bedroom might squeak by, but a 3-bedroom apartment with a kitchen, living room, master bath, two secondary baths, and outdoor space hits 7–9 panoramas easily. That puts you firmly on the $16/month Pro plan. It removes watermarks, lifts the panorama cap to unlimited, and adds custom branding. For a real estate agent or Airbnb host, $16/month is trivial against a single booking — but know going in that the free tier is a demo environment, not a production tool.

Setup to Published: The Matterport All-in-One Pipeline

The thing that surprised me most about Matterport's iPhone workflow is how much hand-holding the capture app actually does. You're not guessing whether you've scanned enough — the app overlays a coverage map in real time and literally tells you when a position is good enough to move on. First-time users shipping a usable tour on their first attempt is genuinely common because of this. Download Matterport Capture from the App Store (free), create an account (also free), tap "New Space," and you're capturing inside of five minutes.

Walking pattern matters more than people expect. The standard guidance is roughly 1.5 meter intervals between scan positions — closer in tight hallways, slightly wider in open-plan areas. What the app won't tell you upfront: move slowly between positions and keep the phone level. I did a bathroom at too steep an angle once and got a warped ceiling that looked like a funhouse mirror in the final model. The app's green checkmarks tell you coverage is sufficient at each position, but they don't catch tilt errors until processing.

Tapping "Process" hands everything off to Matterport's cloud pipeline. For a 1,200 sq ft apartment on my last shoot, the full 3D model was ready in about 35 minutes. You don't sit there waiting — the upload kicks off over whatever WiFi or LTE you're on and you get an email when it's done. The processing is entirely server-side, which is why a mid-range iPhone works fine. The compute load isn't on your device.

The Dollhouse view and auto-generated Schematic Floor Plan are where Matterport genuinely earns its price premium over simpler tools like Kuula. Both generate automatically from the same scan data — no extra steps. The Dollhouse is a tilted 3D bird's-eye rendering that lets viewers rotate the entire space; the floor plan is a clean 2D schematic that Matterport derives from the spatial data. I've seen real estate agents use the floor plan export directly in listings without any manual redrawing. Kuula doesn't produce either of these from iPhone photos — you'd need separate software and a lot more time.

Publishing is straightforward. From the Matterport dashboard, open your Space, hit Share → Embed Code, and you get a standard iframe snippet:

<iframe
  src="https://my.matterport.com/show/?m=YOUR_MODEL_ID"
  width="853"
  height="480"
  frameborder="0"
  allowfullscreen
  allow="xr-spatial-tracking">
</iframe>
Enter fullscreen mode Exit fullscreen mode

The xr-spatial-tracking permission is required if you want the VR headset mode to work for viewers. Skip it and the tour still works in a browser, but you lose the immersive mode option. Drop this into any CMS, property listing page, or static HTML and it works without touching a CDN or hosting config.

The pricing situation deserves a direct warning: the free plan gives you exactly 1 active Space. If you're shooting a second property before the first client has approved and archived the first tour, you're blocked. Matterport's paid tiers unlock multiple simultaneous active Spaces, but I'd strongly recommend checking their current pricing page directly before budgeting a project — the plans have been restructured multiple times in the past year and any number I quote here risks being outdated. What I can say is the jump from free to the first paid tier is noticeable, so if you're doing this professionally for even two or three clients a month, factor that cost in before you pitch the service.

Where Each Tool Breaks (Honest Rough Edges)

The thing that'll bite you first with Polycam isn't the learning curve — it's glass. Any room with floor-to-ceiling windows, a mirror wall, or a bathroom vanity will produce a mesh that looks like someone melted the geometry in a microwave. The LiDAR sensor on your iPhone essentially gets confused by reflective surfaces because the laser bounces at unpredictable angles. I ran a bathroom shoot for a vacation rental client and the resulting mesh had floating geometry islands where the mirror was, plus the shower glass created a hole in the wall. There's no fix inside Polycam — your only real option is to mask those surfaces in post or reshoot with every mirror covered in kraft paper.

Matterport's light sensitivity surprised me more than I expected. I figured "stable lighting" meant just turning on all the room lights, but shooting a living room at dusk — where the outdoor ambient was dropping but the interior lamps were already on — produced visible horizontal banding in the processed model. The color calibration between individual scans stitched together inconsistently because the light temperature shifted between the first scan position and the last. Matterport Capture doesn't warn you about this in-app. The fix is either shoot in full daylight with blinds drawn, or shoot fully at night with all artificial lights on and nothing ambient coming through windows. Mixed light is the enemy.

Matterport's processing queue is the one that'll actually cost you professionally. Marketing materials suggest processing takes 20–30 minutes. Under load — Friday afternoons, end of month, whenever a batch of real estate photographers all upload at once — I've sat at "Processing" for four to six hours. I had a client walkthrough booked the next morning and submitted my scans the previous evening assuming I had buffer. I didn't. The model wasn't ready until 45 minutes before the meeting. If you have a hard client deadline, submit your scans the day before at the absolute latest, not the morning of. There's no priority queue option on the standard Starter or Professional plan.

# There's no API to check queue status from Matterport's standard tier.
# This is the manual polling loop I actually used while waiting:

watch -n 300 'curl -s "https://my.matterport.com/show/?m=YOUR_MODEL_ID" \
  | grep -o "status\":[^,]*"'
# Not elegant. But when you're anxious at 11pm it beats refreshing the tab.
Enter fullscreen mode Exit fullscreen mode

Kuula's hotspot editor is passable on a desktop browser and genuinely frustrating on an iPad. The click targets for the hotspot placement handles are tiny, the drag behavior misfires constantly on touch, and the z-index layering of the editor panels means some controls get obscured by the 360 preview when you're on a smaller screen. I wasted 40 minutes trying to link a 12-room tour on my iPad Pro before giving up and doing it in Chrome on a laptop in 15 minutes. Do all your Kuula linking and annotation work on a desktop. Use the iPad only for capturing and uploading.

Outdoor point clouds from both tools are, bluntly, a mess. I ran a backyard scan for a property that had a pool and pergola — the kind of outdoor living space that's a major selling point. The Polycam point cloud looked like someone scattered confetti in 3D space. Matterport's outdoor scan of the same space had scan positions that simply refused to stitch together correctly because there aren't enough fixed reference points across open sky and lawn. Neither tool was built for uncontrolled outdoor environments with variable surfaces, moving foliage, and no ceiling to anchor the spatial mapping. For outdoor spaces, you're better off supplementing with drone footage or standard photography rather than trying to force a 3D model that'll embarrass you.

Tool Comparison Table: Kuula vs Matterport vs Momento360

Kuula vs Matterport vs Momento360: What Each Platform Actually Gives You

The thing that caught me off guard when I started comparing these three was how differently they define "free." Kuula's free tier caps you at 5 panoramas per tour — workable for a quick demo, but you'll hit that wall fast on any real property. Matterport gives you 1 active Space on free, which sounds generous until you realize you can't export the raw mesh or point cloud data without paying. Momento360 surprised me the most: unlimited panorama uploads on free, just watermarked. For solo photographers building a portfolio, that's genuinely useful before you spend a dollar.

Here's how the three stack up across the dimensions that actually matter for production use:

Feature

Kuula

Matterport

Momento360

Free tier limit

5 panos/tour, 1 tour total

1 active Space

Unlimited uploads (watermarked)

Export formats

Share link, iframe

No raw export on free; OBJ/E57/point cloud on paid plans

Share link, iframe, basic embed

Embed customization

iframe params, autoplay, custom skin on Pro

iframe with highlight reel controls; SDK available

Basic iframe, limited parameter control

Floor plan generation

No

Yes — dollhouse + 2D floor plan included

No

Monthly cost (serious use)

$16/month Pro

Check current pricing page — tiers shift frequently

$9/month removes branding

Matterport's dollhouse view and auto-generated floor plans are genuinely impressive and nothing the other two can match — but you're paying for hardware alignment. The iOS app works, but the output quality drops noticeably compared to shooting with a Matterport-compatible 360 camera like the Ricoh Theta Z1. If you're doing real estate listings where the floor plan is a legal or marketing requirement, Matterport is the only one of these three that handles it automatically. The others require you to bring your own floor plan asset and hotspot it manually.

For internal facility walkthroughs — think warehouse safety tours, university campus orientation, or office space planning — Kuula at $16/month hits a sweet spot. The iframe embed customization is deep enough to white-label into an intranet portal, and the hotspot system lets you attach documents, links, and media without writing code. I've seen facility managers run entire onboarding flows inside a Kuula embed. Matterport is overkill here unless your stakeholders specifically need point cloud data for CAD integration.

Momento360 is the one I recommend to photographers and creative directors building client-facing portfolios. The $9/month barrier to remove the watermark is low enough that it's effectively a test before you commit. The embed isn't as customizable as Kuula, and there's no floor plan story at all, but the upload pipeline is fast, the player renders well on mobile, and you're not locked into a per-space pricing model. The gotcha: hotspot functionality on the free tier is basic to the point of being decorative. You won't build a navigable multi-room tour without upgrading.

The one-line verdict by use case:

  • Real estate listings: Matterport — floor plans and dollhouse view justify the cost when you're billing clients per shoot.
  • Internal facility walkthroughs: Kuula Pro at $16/month — best embed control, good hotspot depth, no per-space fees.
  • Portfolio or creative work: Momento360 — cheapest path to a clean, unbranded result; don't expect deep interactivity.

When to Pick What: Match the Tool to the Job

The tool you pick matters less than whether it matches your client's expectations at delivery. I've seen people spend three weeks learning Matterport's ecosystem for a project that needed a one-week turnaround and a $15/month budget. Here's how I actually map the job to the software.

Real Estate Listing With MLS Embed Requirements

Matterport, full stop. Don't argue with this one. Your client's broker already knows the Matterport dollhouse view, the MLS embed iframe is a one-click copy-paste, and the Matterport Capture app on iPhone 15 Pro with LiDAR produces scans that hold up at 4K. You're paying $179/month for the Pro plan if you need unlimited active spaces, or $69/month for five active spaces on the Starter tier. That cost disappears into a listing commission. The lock-in is real — your .mpt files are proprietary — but nobody in residential real estate cares about open formats.

Airbnb or Boutique Hotel, Budget Under $20/Month

Kuula Pro at $16/month paired with Polycam for panorama capture. Shoot equirectangular panoramas in Polycam's 360 mode, export as JPEG, drag into Kuula. You get hotspots, background audio, custom domain embeds, and a UI that doesn't scream "free tool." The thing that caught me off guard with Kuula is that their embed player is genuinely fast — loads in under two seconds on mobile, which matters when a guest is checking the listing on 4G. Polycam's panorama mode on iPhone 12 and later is good enough for hospitality; you don't need a Ricoh Theta.

Internal Facility Documentation

For warehouse layouts, server rooms, or manufacturing floors where you need accurate geometry rather than pretty visuals, skip the tour platforms entirely. Capture with Polycam in LiDAR mesh mode, then export a .glb file. Host it yourself with Google's model-viewer web component — it's three lines of HTML:

<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.4.0/model-viewer.min.js"></script>

<model-viewer
  src="/assets/warehouse-floor-2.glb"
  camera-controls
  shadow-intensity="1"
  style="width: 100%; height: 600px;">
</model-viewer>
Enter fullscreen mode Exit fullscreen mode

You're not paying monthly for anything. The .glb sits on your CDN, facilities managers can rotate and zoom on any device, and you can version control the files like any other asset. Polycam's mesh accuracy on LiDAR-equipped iPhones (iPhone 12 Pro and later) is within a few centimeters on room-scale captures — good enough for planning cable runs or forklift clearances, not for structural engineering.

Architecture Portfolio That Needs to Look Designed

Momento360 with custom branding enabled. The reason I reach for this over Kuula in portfolio contexts is pricing: Momento360's Pro plan runs around $9/month versus Kuula's $16/month, and the embed customization — removing their logo, setting your own colors — is available at that lower tier. Architects care about brand consistency more than most clients, and handing over a tour with someone else's logo in the corner is a bad look. Pair it with high-quality equirectangular exports from Lightroom-processed HDR panoramas and the result reads as intentional, not automated.

Quick One-Off Shoot, No Recurring Cost

Momento360's free tier handles this cleanly. You get unlimited public tours with a watermark, which is fine for internal client review or a proof-of-concept. If the watermark is a dealbreaker, the move is to export your panoramas as self-contained HTML using Pannellum — open source, runs entirely in the browser, zero hosting cost if you drop it on Netlify's free tier:

# pannellum config for a self-hosted single-scene tour
{
  "default": {
    "firstScene": "entrance",
    "sceneFadeDuration": 1000
  },
  "scenes": {
    "entrance": {
      "title": "Main Entrance",
      "hfov": 110,
      "pitch": -3,
      "yaw": 117,
      "type": "equirectangular",
      "panorama": "entrance.jpg"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Pannellum won't win any design awards but it loads fast, works offline, and you own everything. The honest trade-off: no analytics, no hotspots without custom JavaScript, and you're on your own for maintenance. For a one-time deliverable where the client just needs to click around a space, it's the right call.

Self-Hosting the .glb If You Don't Want Monthly SaaS Fees

The thing that surprised me most when I first exported from Polycam: the .glb file it hands you is completely self-contained. Geometry, textures, lighting data — all packed into one binary. That means you can drop it on any static host and render it with zero server-side code, no database, no auth layer. The whole "you need SaaS to show 3D" assumption is just wrong.

Google's model-viewer web component does the heavy lifting in the browser. It handles WebGL, touch controls, AR mode on iOS/Android, and progressive loading. Adding it to any HTML page is literally one script tag:

<!-- Pin to 3.4.0 — don't use @latest in production, the API does shift -->
<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.4.0/model-viewer.min.js"></script>
Enter fullscreen mode Exit fullscreen mode

Then your embed is four attributes and you're done:

<!-- camera-controls = mouse/touch orbit, auto-rotate = slow spin on load -->
<!-- ar = shows "View in your space" button on mobile -->
<model-viewer
  src="./scan.glb"
  camera-controls
  auto-rotate
  ar
  style="width: 100%; height: 500px">
</model-viewer>
Enter fullscreen mode Exit fullscreen mode

For hosting the actual file, Cloudflare R2 is the obvious choice over S3 right now. R2 has no egress fees — S3 charges ~$0.09/GB out, which adds up fast if your scan gets embedded on a popular page. A 400MB .glb costs roughly $0.0043/month to store on R2 (at $0.015/GB/month), and bandwidth to serve it is free. The one gotcha: you need to set a public bucket policy and configure CORS headers, otherwise model-viewer will silently fail to load the file cross-origin. Here's the minimal CORS config for R2:

[
  {
    "AllowedOrigins": ["https://yourdomain.com"],
    "AllowedMethods": ["GET", "HEAD"],
    "AllowedHeaders": ["*"],
    "MaxAgeSeconds": 86400
  }
]
Enter fullscreen mode Exit fullscreen mode

Be honest with yourself about what this actually gives you though. A model-viewer embed is a 3D object viewer — you can orbit, zoom, and drop it in AR. It is not a walkthrough tour. You don't get click-to-navigate rooms, embedded info hotspots, floor plan thumbnails, or the "standing inside the space" perspective that Matterport delivers. If someone needs to feel like they're walking through a property, this won't cut it. If you just need to show a room, a product, or a small space in 3D without a $69/month subscription, it absolutely cuts it. Know which problem you're solving before you pick the approach. For more on fitting lightweight tools like this into a broader publishing setup, the Productivity Workflows guide has some practical patterns worth looking at.

FAQ

Do I need a 360 camera or does iPhone LiDAR actually work?

iPhone LiDAR (iPhone 12 Pro and later) genuinely works for room-scale captures. I've used it with the Matterport app on a 1,200 sq ft apartment and the structural accuracy was solid — walls, doorways, and ceiling heights were within a few centimeters. Where it struggles is texture quality in low light and very large spaces (think warehouse or event hall). A dedicated 360 camera like the Ricoh Theta Z1 or Insta360 RS 1-inch edition will give you sharper equirectangular imagery, but for real estate under 3,000 sq ft, the iPhone pipeline is completely usable. The honest trade-off: LiDAR gives you the 3D mesh and dollhouse view automatically; a 360 camera gives you better photo quality but requires more manual alignment work depending on the platform.

Why does my Matterport upload look blurry even though the scan looked fine in the app?

This one burned me the first time. Matterport compresses the equirectangular panoramas during cloud processing, and the default "SD" processing tier is noticeably softer than what you captured. You need to explicitly select HD processing when uploading — it's not the default, and it costs more processing credits. Check your model settings under Capture > Model Details and look for the resolution indicator. The other culprit is scanning too fast between positions. The app needs a full 360° sweep per scan point; if you spin through it in under 8–10 seconds you're going to get motion blur baked into the panorama. Slow down, let the green circle fully fill before moving to the next position.

Can I embed a Matterport or Kuula tour in Squarespace, Webflow, or Notion?

For Squarespace and Webflow, yes — both platforms accept raw iframe embeds. Matterport gives you an embed code under Share > Embed that looks like this:

<iframe
  src="https://my.matterport.com/show/?m=YOUR_MODEL_ID"
  width="100%"
  height="480"
  frameborder="0"
  allowfullscreen
  allow="xr-spatial-tracking">
</iframe>
Enter fullscreen mode Exit fullscreen mode

Drop that into a Squarespace Embed block or a Webflow HTML embed component and it works. Kuula is the same pattern — grab the iframe from the share menu. Notion is the problem child. Notion's embed blocks sandbox iframes aggressively, and Matterport specifically doesn't appear on their allowlist of "preview" embeds, so you'll get either a broken preview or just a link. The workaround is to host a minimal HTML file somewhere (GitHub Pages, Cloudflare Pages — both free) that contains just the iframe, then embed that URL in Notion. It's annoying but it works.

Is there a way to do this without a monthly subscription at all?

Yes, with real caveats. Kuula has a free tier that lets you publish up to 5 public tours — no credit card required. The tours get a Kuula watermark and you can't use a custom domain, but the embed works fine. That's genuinely usable for small projects or client demos. Panoraven is another option that stays free for basic panorama tours with no processing limits, though the 3D dollhouse view you get from Matterport isn't there. If you want the full Matterport experience, the cheapest path right now is their $9.99/month Starter plan (as of 2024), which covers up to 5 active spaces — cancel after you deliver the project, since the tour stays accessible to viewers for 60 days after your subscription lapses. That's the move if you're doing one-off client work rather than running an ongoing portfolio.


Disclaimer: This article is for informational purposes only. The views and opinions expressed are those of the author(s) and do not necessarily reflect the official policy or position of Sonic Rocket or its affiliates. Always consult with a certified professional before making any financial or technical decisions based on this content.


Originally published on techdigestor.com. Follow for more developer-focused tooling reviews and productivity guides.

Top comments (0)