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

(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:
- OpenUSD Stage ↔ Cisco NSO’s CDB — both are the composed source of truth that every other tool reads from non-destructively.
- Composition arcs (references, sublayers, variants, payloads) ↔ NSO service templates + YANG
augment+ service variants — both are mechanisms for stacking opinions from independent teams without anyone forking the source. - “Non-destructive pipeline” framing in OpenUSD ↔ everything network engineers already know about model-driven network management — declarative source of truth + deterministic merge of overrides + downstream tools never write back to the model.
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:
- Read the LearnOpenUSD composition arcs chapter, then hand-rewrite the
01_references.pyexercise from scratch without copy-paste. - Hand-write a
compose_scene.pythat references the cruise-promenade USDZ, adds a sublayer with one extra asset (so it stops being just a static scan), and saves the composed result back out. - Optionally open the composed scene in NVIDIA Omniverse Kit on a Brev launchable — but this depends on whether port WiFi cooperates, and the Mac + Blender pipeline is already enough to ship the demo without it.
- Talk to the NVIDIA Physical AI DevRel I’m prepping for. Show this page, walk the friction log.
Find the code, raw friction log, and follow-up entries at this site. Reach me on LinkedIn or via Sierra Code Co.