2026-05-31

Day 1 — Scaniverse to Blender from a Royal Caribbean cruise ship

openusdscaniverseblenderphysical-ailearning-log

Why this exists: I’m a 14-year network engineer (Cisco DevRel) pivoting toward AI DevRel, currently going deep on NVIDIA’s OpenUSD and Physical AI stack. I’m learning in public so future-me, and anyone else trying to do the same thing, has the friction log. This is day 1.

First published 2026-05-31 from a Royal Caribbean cruise ship on satellite WiFi. Updating this entry throughout the week as the prep continues — friction notes below are the load-bearing content for now; narrative sections will fill in.

The setup

(Narrative coming — context on the NVIDIA pivot, the upcoming intro call with a Physical AI DevRel, and what made me try to do the whole pipeline end-to-end in one cruise-WiFi session.)

The pipeline at the highest level

iPhone LiDAR scan (Scaniverse, Classic + Mesh mode)
  → USDZ export (~19 MB)
  → Blender 5.1.2 (USD import, Material Preview shading, viewport render)
  → PNG screenshot

That’s the loop. Every step is a single tool, mostly local, mostly free. No cloud GPU rental. This matters because the next iteration adds composed USD references on top of the scan, and the iteration after that opens the same scene in NVIDIA Omniverse Kit on a Brev launchable.

What I scanned

First-frame Blender render of the iPhone LiDAR scan: pink lounge chairs and a wood pillar in the Royal Caribbean Regalia promenade, captured with Scaniverse Classic mode, ~2-minute single sweep.

(Narrative coming — the Royal Caribbean Regalia promenade, the patchy edges of a first-attempt LiDAR sweep, why the imperfection ends up being the right artifact for an honest real-to-sim story.)

Friction notes (the actual DevRel content)

This is the part nobody else’s tutorial includes. Every place I got stuck, what surprised me, what a doc-fix would be.

Scaniverse defaults push you toward the NEW (cloud + Gaussian splat) experience even when mesh + on-device is the right pick. The “Classic” option is the right answer for a USDZ → Blender → Omniverse workflow, but it’s de-emphasized visually. A less-experienced user would pick NEW and get stuck with splat outputs that don’t import cleanly into NVIDIA Omniverse Kit. Doc-fix: add a “which experience for which workflow” table to the getting-started guide.

Inside Classic, the Splat-vs-Mesh decision repeats the same trap. Splat is visually defaulted (orange gradient); Mesh is labeled only “more export options” — no hint that it’s the USDZ-compatible path. Doc-fix: annotate the modes with their downstream-tool compatibility.

First-time LiDAR scans are patchy because users walk at normal indoor pace. Scaniverse offers no in-app coaching during the sweep — no slow-down prompts, no coverage heat-map, no “you missed this corner” indicator. Doc-fix: a 30-second “how to capture well” overlay on first launch would meaningfully improve first-scan quality.

Scaniverse USDZ exports with a deeply implementation-specific root prim name (e.g. Scaniverse_2026_05_31_101502). For downstream USD reference workflows you usually want stable, semantic prim names. Doc-fix: add a “root prim name” field to the export dialog, defaulting to scan title.

Blender’s default viewport shading is Solid — imported textured meshes show as flat grey. Surprising for a USD import flow where the texture is baked in. Need to manually switch to Material Preview. Doc-fix: USD importer could detect baked-texture USDZ and suggest the shading mode.

Blender renders from the scene CAMERA, not from your viewport view. Default camera position is fixed regardless of imported asset location, so first render of an imported scan typically shows a random crop. WYSIWYG users get confused. Doc-fix: USD importer should optionally add a camera positioned to frame the imported bounds.

Blender has two distinct “View” UI elements: the View menu in the 3D viewport header (contains “Render Viewport Preview” — what you want for WYSIWYG rendering), and the View tab in the N-panel sidebar (focal length, viewport lock, 3D cursor). New users intuitively reach for the sidebar tab. Doc-fix: rename the sidebar tab to “Viewport” to disambiguate.

Blender 5.x renamed “Viewport Render Image” to “Render Viewport Preview”. Most online tutorials, blog posts, and Blender 4.x docs still use the old name; search results lead you to the wrong menu item. Doc-fix: changelog should prominently flag UI label changes, not just functional changes.

Doing all of this from a cruise ship on satellite WiFi is a real-world DevRel constraint nobody’s blog post mentions. Cloud-GPU rentals (Brev, AWS) become impractical; offline-capable tooling (Scaniverse on-device, Blender local, usd-core CPU) is the only viable path. Validates the “Mac CPU is enough for the OpenUSD literacy track” hypothesis.

The cross-domain connection (this is the load-bearing part)

(Deep version coming — the YANG/NSO/NetBox analogy stack, where it holds, where it breaks. The short version below.)

The cleanest cross-domain analogies I’m working with so far:

The analogy lands at the architectural altitude. It weakens in the specifics (USD’s LIVRPS composition strength ordering is closer to a layered patch system than YANG’s schema-extension model). But for anyone learning OpenUSD from a network-automation background, leaning on the NSO mental model accelerates the first few hours considerably.

What’s next

Plan for the rest of the week:


Find the code, raw friction log, and follow-up entries at this site. Reach me on LinkedIn or via Sierra Code Co.