Hub documentation
3D Dataset
3D Dataset
This guide shows how 3D files are previewed on the Hub, and how to structure a dataset of OpenUSD assets, such as SimReady packages for robotics simulation. You can preview each 3D file on its page. In the Dataset Viewer, Mesh columns show a thumbnail that opens in 3D, and the dataset page shows a gallery of the assets. Repositories of .glb, .ply or .stl files get a Mesh column automatically. SimReady datasets also get a gallery of their assets.
Previewing 3D files
Click a 3D file in the Files and versions tab of a dataset or Storage Bucket to open it in an interactive 3D viewer. You can rotate, zoom and open the viewer in full screen.
| Format | Extensions |
|---|---|
| OpenUSD | .usd, .usda, .usdc, .usdz |
| glTF | .glb, .gltf |
| Mesh | .obj, .stl, .ply |
| Point cloud | .ply |
| Gaussian splat | .ply, .splat |
glTF, mesh, point cloud and Gaussian splat files over 100 MB load when you click Load 3D preview, and files over 1 GB arenβt previewed.

OpenUSD layers and textures
A USD asset is often split across several files: a root file that references sublayers, payloads, materials and textures. The viewer loads these referenced files from the same repository, so keep the folder structure you authored the asset with, and use relative paths for references. References to absolute paths, or to files outside the repository, canβt be loaded.
3D files in the Dataset Viewer
The Dataset Viewer shows a thumbnail for each cell of a Mesh column. Clicking a thumbnail opens the file in 3D. Thumbnails can be rendered for .glb, .ply, .stl and .obj files.
The dataset page also shows a 3D Assets card with up to 15 thumbnails from the first rows of the selected subset and split. Make sure the first rows have a mesh, otherwise the card doesnβt appear.
Repository of 3D files
If your dataset only contains .glb, .ply or .stl files, you donβt need to do anything: they get a mesh column automatically. See Create a mesh dataset to add metadata.
Parquet dataset with 3D files
If your dataset is stored as Parquet, the Dataset Viewer reads the Parquet files and doesnβt add the 3D files in the repository as a column. To show 3D files next to your other columns, keep the files in the repository and add a Mesh column that references them:
import json
import pyarrow as pa
import pyarrow.parquet as pq
from datasets import Features, Mesh, Value
table = pq.read_table("train.parquet")
cells = [
{"bytes": None, "path": f"meshes/{row_id}.glb"} # relative path from parquet directory to meshes
for row_id in table["id"].to_pylist()
]
table = table.append_column("mesh", pa.array(cells, type=Mesh().pa_type))
# List all the columns of your dataset
features = Features({"id": Value("string"), "prompt": Value("string"), "mesh": Mesh()})
table = table.replace_schema_metadata(
{"huggingface": json.dumps({"info": {"features": features.to_dict()}})}
)
pq.write_table(table, "train.parquet")- Paths must be relative to the directory containing the Parquet file.
- Use
Nonefor rows without a 3D file. - A folder can contain up to 10,000 files, so group larger sets of files into subfolders.
SimReady datasets
SimReady is a specification for OpenUSD assets that are ready to use in simulation, with physics, materials and semantic labels. Datasets that contain SimReady packages show a 3D Assets card on their page, with the number of packages and up to 15 thumbnails sampled across the dataset. Clicking a thumbnail opens its USD file in the viewer.

For example, see nvidia/simready-assets or nvidia/PhysicalAI-SimReady-Warehouse-01.
These datasets also get the simready tag, so they show up when filtering datasets.
Package structure
A package is a folder that contains a com.nvidia.simready.packaging.json file. Packages can be at any depth in the repository, and folders inside a package are part of that package.
Each package needs a thumbnail of its root USD file to appear in the card. Following the SimReady requirement for thumbnails, the thumbnail of <folder>/<file>.usd is <folder>/.thumbs/256x256/<file>.usd.png (or .usda.png, .usdc.png, .usdz.png), in the package folder or one folder below it:
my_dataset_repository/
βββ IV_pole_a01
β βββ com.nvidia.simready.packaging.json
β βββ simready_usd
β βββ .thumbs
β β βββ 256x256
β β βββ sm_IV_pole_a01_01.usd.png
β β βββ sm_IV_pole_a01_01.usd_light.png
β βββ sm_IV_pole_a01_01.usd
β βββ payloads
β βββ ...
βββ IV_pole_a02
βββ com.nvidia.simready.packaging.json
βββ ...- An optional
<file>.usd_light.pngis shown in light mode, and<file>.usd.pngin dark mode. - Thumbnails larger than 4 MB are skipped.
The card is updated after each push to the dataset.
Modality tag
Datasets with 3D files get the 3d modality, so they show up when filtering datasets by modality. You can also set it in the dataset card, see Force set a dataset modality.