Hub documentation

Conjunto de dados 3D

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Conjunto de dados 3D

O Hub exibe pré-visualizações de arquivos 3D no navegador, permitindo inspecionar malhas, cenas, nuvens de pontos e Gaussian splats sem baixá-los. Este guia aborda:

Visualizando arquivos 3D

Clique em um arquivo 3D na aba Files and versions de um dataset ou Storage Bucket para abri-lo em um visualizador 3D interativo. Você pode girar, dar zoom e abrir o visualizador em tela cheia.

FormatoExtensõesExemplo
glTF.glb, .gltfDamagedHelmet.glb
Mesh.obj, .stl, .plycone.stl
Nuvem de pontos.plybirmingham_block_13.ply
Splat gaussiano.ply, .splata_monarch_butterfly.ply
OpenUSD.usd, .usda, .usdc, .usdzsm_box_corrugated_brown_b08_01.usd

Arquivos glTF, mesh, nuvem de pontos e Gaussian splat com mais de 100 MB são carregados quando você clica em Load 3D preview. Arquivos com mais de 1 GB não são pré-visualizados.

Malhas e glTF

Arquivos glTF são renderizados com seus materiais e texturas. Use os botões no canto superior direito para alternar entre Solid, Wireframe e Solid + wireframe.

Nuvens de pontos

Um arquivo .ply contendo apenas vértices, como um scan LiDAR ou de fotogrametria, é exibido como uma nuvem de pontos com as cores dos vértices:

Gaussian splats

Os Gaussian splats podem ser armazenados como arquivos .splat ou .ply:

OpenUSD

Um ativo USD é frequentemente dividido em vários arquivos: um arquivo raiz que referencia sublayers, payloads, materiais e texturas. O viewer carrega esses arquivos referenciados do mesmo repositório, portanto, mantenha a estrutura de pastas com a qual você criou o ativo e use caminhos relativos para as referências. Referências a caminhos absolutos ou a arquivos fora do repositório não podem ser carregadas.

Arquivos 3D no Dataset Viewer

Colunas de malha

O Dataset Viewer exibe uma miniatura para cada célula de uma coluna Mesh. Miniaturas podem ser renderizadas para arquivos .glb, .ply, .stl e .obj.

Clique em uma miniatura para abrir o arquivo em 3D, ao lado dos outros valores de sua linha:

Cartão de ativos 3D

A página do conjunto de dados também exibe um cartão 3D Assets com até 15 miniaturas das primeiras linhas do subconjunto e da divisão selecionados, como o que está no topo desta página. Certifique-se de que as primeiras linhas tenham uma malha, caso contrário o cartão não aparecerá.

Por exemplo, veja cfahlgren1/smithsonian-3d-glb.

Estruturando seu conjunto de dados

Apenas arquivos 3D

Se o seu conjunto de dados contém apenas arquivos .glb, .ply ou .stl, você não precisa fazer nada: eles recebem automaticamente uma coluna mesh.

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

Colunas adicionais

Para adicionar legendas, rótulos ou outras colunas, adicione um arquivo metadata.jsonl (ou metadata.csv) com uma coluna file_name ao lado dos seus arquivos 3D:

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

Veja Criar um conjunto de dados de malha para mais detalhes e cfahlgren1/mesh-doc-test-metadata para um exemplo.

Parquet

Se o seu conjunto de dados estiver armazenado como Parquet, o Dataset Viewer lê os arquivos Parquet e não adiciona os arquivos 3D do repositório como uma coluna. Para exibir os arquivos 3D ao lado das suas outras colunas, mantenha os arquivos no repositório e adicione uma coluna Mesh que os 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")
  • Os caminhos devem ser relativos ao diretório que contém o arquivo Parquet.
  • Use None para linhas sem um arquivo 3D.
  • Uma pasta pode conter até 10.000 arquivos, portanto, agrupe conjuntos maiores de arquivos em subpastas.

Veja cfahlgren1/mesh-doc-test-formats para um exemplo.

Conjuntos de dados SimReady

SimReady é uma especificação para ativos OpenUSD prontos para uso em simulação, com física, materiais e rótulos semânticos. Conjuntos de dados que contêm pacotes SimReady exibem um cartão 3D Assets em sua página, com o número de pacotes e até 15 miniaturas amostradas em todo o conjunto de dados. Clicar em uma miniatura abre seu arquivo USD no visualizador.

Por exemplo, veja nvidia/simready-assets ou nvidia/PhysicalAI-SimReady-Warehouse-01.

Esses conjuntos de dados também recebem a tag simready, portanto, aparecem ao filtrar conjuntos de dados.

Estrutura do pacote

Um pacote é uma pasta que contém um arquivo com.nvidia.simready.packaging.json. Os pacotes podem estar em qualquer profundidade no repositório, e as pastas dentro de um pacote fazem parte desse pacote.

Cada pacote precisa de uma miniatura do arquivo USD raiz para aparecer no cartão. Seguindo o requisito de miniaturas do SimReady, a miniatura de <folder>/<file>.usd é <folder>/.thumbs/256x256/<file>.usd.png (ou .usda.png, .usdc.png, .usdz.png), na pasta do pacote ou em uma pasta abaixo dela:

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
    └── ...
  • Um arquivo opcional <file>.usd_light.png é exibido no modo claro, e <file>.usd.png no modo escuro.
  • Miniaturas maiores que 4 MB são ignoradas.

O cartão é atualizado após cada push no dataset.

Etiqueta de modalidade

Datasets com arquivos 3D recebem a modalidade 3d, portanto aparecem ao filtrar datasets por modalidade. Você também pode configurá-la no cartão do dataset, veja Forçar a definição de uma modalidade de dataset.

Update on GitHub