3D Gaussian Splatting (3DGS) Measurement Issues in Omniverse

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Operating System

Ubuntu 24.04

GPU Information

  • Model: RTX 3060

Topic Description

Subject: Distance Measurement Issue with 3DGS-derived Assets (3DGUT/USDZ) in NVIDIA Omniverse

I am currently working on displaying 3D Gaussian Splatting (3DGS) results within NVIDIA Omniverse.

I successfully confirmed that assets processed using the

3DGUT approach (specifically, converting the 3DGS data to a USDZ file) can be imported into Omniverse.

However, when I attempt to perform a distance measurement directly on the imported 3DGS asset, the measurement fails or is not possible.

Conversely, when I create a mesh from the scene reconstruction and import that mesh, I am able to perform the distance measurement correctly.

My core question is this: Is it mandatory to convert the 3DGS representation into a traditional geometric mesh in order to enable distance measurement tools within Omniverse?

Any insights into the required data structure (e.g., volumetric particle vs. explicit surface) for enabling measurement capabilities in Omniverse would be greatly appreciated.

@leo94 just out of curiosity, what’s the measurement of the stage in the USDZ? more specifically the MPU of the stage, is it set to 1.0 or 0.01?

@Simplychenable

I’ve used the code straight from the 3DGUT/3DGRUT repo, so I suspect the MPU is 1.0 (Meters Per Unit = 1.0 meter).

How could this MPU value affect the measurement issue?

i presume it would affect the scale of your stage, along with the objects residing in the stage. the same cube will be off by 100 times if the MPU is incorrectly set up (especially so if you plan on referencing the stage without Metrics Assembler extension enabled). if you were to open up the USDZ and go to the Layer tab > LMB on the Root layer > and look at the MPU setting for the stage, what do you see?

I currently don’t have a Layer tab.
I cloned Omniverse from the official GitHub repository and built it myself.
I created and built the application using the following steps:

Select what you want to create with arrow keys ↑↓: Application
Select desired template with arrow keys ↑↓: Kit Base Editor
Enter name of application .kit file [name-spaced, lowercase, alphanumeric]: [set application name]
Enter application_display_name: [set application display name]
Enter version: [set application version]

Application [application name] created successfully in [path to project]/source/apps/[application name]

Do you want to add application layers? No

So, I chose Kit Base Editor as the template and answered No to “Do you want to add application layers?”.
That seems to have created an application without the Layer UI by default.

What I want to know is:
Do I need to build it in a different way to have the Layer tab available by default,
or can I add the Layer functionality later via an extension?

Sorry if this is a silly question.

here’s another comparison. i created a cube prim in a stage where MPU = 1.0 (m). the resulting cube should have diagonal measurement of 1.4m on any given face.

however, if i were to switch the MPU to 0.01 (cm) and remeasure, the diagonal becomes 0.01m:

i see. i installed as USD Composer instead of Kit Base Editor. if you are able to find Layer related extensions, i would probably go ahead and enable them. attached are some of the resulting extensions when searching for Layer (and you may need to wait for the registery to resync if you don’t see them which may take between 5 -10 minutes):

once you’ve enabled those core extensions, go ahead and turn them on to see if you can find the Layer window under Window.

@Simplychenable

Thank you for your response. I agree with your point regarding the scaling issue.

  1. Scale Information (MPU): We already use CCTAG (Circular Color Tag) markers to perform real-world scale calibration during the SfM (Structure from Motion) stage. Furthermore, the MPU (Meters Per Unit) is set to 1.0 (1.0m) when converting to USDZ. Therefore, I believe the issue is not with the scale itself.

  2. Core Question Reconfirmation (Representation): My core question is this: Is it true that Omniverse’s default measurement tools cannot measure distance on the Gaussian Splatting (USDZ/3DGUT) representation because its fundamental data structure is not an Explicit Surface like a Mesh, but rather a point cloud (Gaussian particle)?

  3. Alternative Question: Is converting the 3DGS data to a Mesh mandatory for measurement, or is there an alternative setting or extension within Omniverse that can enable measurement capabilities directly on the 3DGS data?

i see. all good questions to ask! i don’t work with GS at all let alone in OV, so i’ll defer to the mods/devs on this.