Hub documentation

Conjunto de datos 3D

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Conjunto de datos 3D

El Hub muestra una vista previa de los archivos 3D en el navegador, por lo que puedes inspeccionar mallas, escenas, nubes de puntos y Gaussian splats sin necesidad de descargarlos. Esta guía cubre:

Vista previa de archivos 3D

Haz clic en un archivo 3D en la pestaña Files and versions de un dataset o Storage Bucket para abrirlo en un visor 3D interactivo. Puedes rotar, hacer zoom y abrir el visor a pantalla completa.

FormatoExtensionesEjemplo
glTF.glb, .gltfDamagedHelmet.glb
Mesh.obj, .stl, .plycone.stl
Nube de puntos.plybirmingham_block_13.ply
Gaussian splat.ply, .splata_monarch_butterfly.ply
OpenUSD.usd, .usda, .usdc, .usdzsm_box_corrugated_brown_b08_01.usd

Los archivos glTF, mesh, point cloud y Gaussian splat de más de 100 MB se cargan cuando haces clic en Load 3D preview. Los archivos de más de 1 GB no se previsualizan.

Mallas y glTF

Los archivos glTF se renderizan con sus materiales y texturas. Use los botones de la esquina superior derecha para alternar entre Solid, Wireframe y Solid + wireframe.

Nubes de puntos

Un archivo .ply con solo vértices, como un escaneo LiDAR o de fotogrametría, se muestra como una nube de puntos con sus colores de vértice:

Gaussian splats

Los Gaussian splats se pueden almacenar como archivos .splat o .ply:

OpenUSD

Un activo USD suele dividirse en varios archivos: un archivo raíz que hace referencia a subcapas, cargas, materiales y texturas. El visor carga estos archivos referenciados desde el mismo repositorio, por lo que debe mantener la estructura de carpetas con la que creó el activo y usar rutas relativas para las referencias. No se pueden cargar referencias a rutas absolutas ni a archivos fuera del repositorio.

Archivos 3D en el Dataset Viewer

Columnas de malla

El Dataset Viewer muestra una miniatura para cada celda de una columna Mesh. Las miniaturas se pueden renderizar para archivos .glb, .ply, .stl y .obj.

Haz clic en una miniatura para abrir el archivo en 3D, junto a los otros valores de su fila:

Tarjeta de activos 3D

La página del conjunto de datos también muestra una tarjeta de 3D Assets con hasta 15 miniaturas de las primeras filas del subconjunto y la división seleccionados, como la que aparece en la parte superior de esta página. Asegúrate de que las primeras filas tengan una malla, de lo contrario la tarjeta no aparecerá.

Por ejemplo, consulte cfahlgren1/smithsonian-3d-glb.

Estructurar tu conjunto de datos

Solo archivos 3D

Si tu conjunto de datos solo contiene archivos .glb, .ply o .stl, no necesitas hacer nada: se les asigna automáticamente una columna mesh.

my_dataset_repository/
└── meshes
    ├── chair.glb
    ├── lamp.glb
    └── table.glb

Columnas adicionales

Para agregar subtítulos, etiquetas u otras columnas, añade un archivo metadata.jsonl (o metadata.csv) con una columna file_name junto a tus archivos 3D:

my_dataset_repository/
└── train
    ├── box.glb
    ├── sphere.glb
    └── metadata.jsonl

Consulte Crear un conjunto de datos de malla para más detalles y cfahlgren1/mesh-doc-test-metadata para un ejemplo.

Parquet

Si tu conjunto de datos se almacena como Parquet, el Dataset Viewer lee los archivos Parquet y no añade los archivos 3D del repositorio como una columna. Para mostrar los archivos 3D junto a tus otras columnas, mantén los archivos en el repositorio y añade una columna Mesh que los referencie:

my_dataset_repository/
├── meshes
│   ├── box.glb
│   ├── cone.stl
│   └── ...
└── train.parquet
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")
  • Las rutas deben ser relativas al directorio que contiene el archivo Parquet.
  • Use None para las filas sin un archivo 3D.
  • Una carpeta puede contener hasta 10.000 archivos, por lo que agrupe los conjuntos de archivos más grandes en subcarpetas.

Vea cfahlgren1/mesh-doc-test-formats como ejemplo.

Conjuntos de datos SimReady

SimReady es una especificación para activos de OpenUSD listos para usar en simulación, con física, materiales y etiquetas semánticas. Los conjuntos de datos que contienen paquetes SimReady muestran una tarjeta 3D Assets en su página, con el número de paquetes y hasta 15 miniaturas muestreadas en todo el conjunto de datos. Al hacer clic en una miniatura, se abre su archivo USD en el visor.

Por ejemplo, consulte nvidia/simready-assets o nvidia/PhysicalAI-SimReady-Warehouse-01.

Estos conjuntos de datos también reciben la etiqueta simready, por lo que aparecen al filtrar conjuntos de datos.

Estructura del paquete

Un paquete es una carpeta que contiene un archivo com.nvidia.simready.packaging.json. Los paquetes pueden estar a cualquier profundidad en el repositorio, y las carpetas dentro de un paquete forman parte de ese paquete.

Cada paquete necesita una miniatura de su archivo USD raíz para aparecer en la tarjeta. Siguiendo el requisito de SimReady para las miniaturas, la miniatura de <folder>/<file>.usd es <folder>/.thumbs/256x256/<file>.usd.png (o .usda.png, .usdc.png, .usdz.png), en la carpeta del paquete o en una carpeta inferior:

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
    └── ...
  • Un archivo opcional <file>.usd_light.png se muestra en modo claro, y <file>.usd.png en modo oscuro.
  • Las miniaturas de más de 4 MB se omiten.

La tarjeta se actualiza después de cada push al conjunto de datos.

Etiqueta de modalidad

Los conjuntos de datos con archivos 3D reciben la modalidad 3d, por lo que aparecen al filtrar conjuntos de datos por modalidad. También puedes configurarla en la tarjeta del conjunto de datos, consulta Forzar la configuración de una modalidad de conjunto de datos.

Update on GitHub