NVIDIA Omniverse offers a powerful, extensible platform for building interactive 3D applications, where dynamic data integration can play a vital role—especially for simulation, digital twins, and live visualizations. In this post, we’ll explore how to modify object materials in real time using data from a CSV file, with a focus on interacting with MDL (Material Definition Language) graphs.
By connecting external data (like CSV) to Omniverse’s USD and MDL structures, we can achieve real-time, data-driven visualization, where object appearance can adapt dynamically based on incoming values. This is ideal for applications like dashboards, simulations, sensor visualizations, and more.
MDL, or Material Definition Language, is NVIDIA’s physically based material description format. It allows sharing realistic materials and lighting across different applications and renderers—while maintaining physical accuracy and consistency.
In Omniverse, MDL is used to construct visual material graphs (via the Material Graph Editor), where each node controls parameters such as base color, roughness, emissive intensity, etc. These parameters can be accessed and updated programmatically via USD.
To begin, open Omniverse Code and ensure that the MDL-related extensions are enabled.
This gives you access to the Material Graph Editor and scripting APIs required to modify MDL parameters.
Note: You can open the Material Graph window to visually check the structure and node connections of the actual MDL.
Once active, you can inspect the material of a target object (e.g., Sphere_03) and visualize its node-based structure in the graph editor.
This will help identify which MDL inputs you want to modify (e.g., base_color).
MDL properties are stored inside USD files as graph inputs, such as:
inputs:base_color
inputs:roughness
inputs:specular
inputs:emission
Using Python and the Omniverse Kit API, you can programmatically update these values in real time. This forms the basis for linking them to CSV-based external data.
Omniverse provides a built-in CSV Reader Extension, which allows you to read CSV data and map it to scene parameters.
This extension is especially useful for data-driven simulations or dashboards, where object properties (like color or position) change according to real-world or pre-recorded data.
Here’s a practical use case: changing the color of a material in real time based on RGB values from a CSV file.
Sample CSV:
Python script to update the material color:
This script reads the CSV in real time and updates the base_color of the target material accordingly—enabling smooth color transitions or data-driven alerts.
Using the CSV Reader Extension, you're not limited to modifying materials.
You can dynamically create objects and assign them materials whose MDL parameters are customized in real time.
For example, your CSV file might include:
These parameters can be mapped to generated objects, creating real-time simulations or dashboards where objects reflect the latest data state.
This opens the door for digital twin systems, IoT data visualization, and live operational overviews—fully rendered in 3D using Omniverse’s RTX rendering capabilities.
This workflow illustrates the power of combining Omniverse’s USD + MDL framework with external, real-time data sources like CSV. With minimal scripting, it’s possible to:
By leveraging the CSV Reader Extension, MDL Graphs, and Python scripting, you can build flexible, automated 3D visualizations that adapt to any dataset—without manually editing USD scenes.
Share this post: