mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-03 04:12:48 +08:00
Summary: - Add support for loading textures from ShapeNet Obj files as a texture atlas. - Support textured rendering of shapenet models Reviewed By: gkioxari Differential Revision: D23141143 fbshipit-source-id: 26eb81758d4cdbd6d820b072b58f5c6c08cb90bc
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
|
from typing import Dict, List
|
|
|
|
from pytorch3d.renderer.mesh import TexturesAtlas
|
|
from pytorch3d.structures import Meshes
|
|
|
|
|
|
def collate_batched_meshes(batch: List[Dict]):
|
|
"""
|
|
Take a list of objects in the form of dictionaries and merge them
|
|
into a single dictionary. This function can be used with a Dataset
|
|
object to create a torch.utils.data.Dataloader which directly
|
|
returns Meshes objects.
|
|
TODO: Add support for textures.
|
|
|
|
Args:
|
|
batch: List of dictionaries containing information about objects
|
|
in the dataset.
|
|
|
|
Returns:
|
|
collated_dict: Dictionary of collated lists. If batch contains both
|
|
verts and faces, a collated mesh batch is also returned.
|
|
"""
|
|
if batch is None or len(batch) == 0:
|
|
return None
|
|
collated_dict = {}
|
|
for k in batch[0].keys():
|
|
collated_dict[k] = [d[k] for d in batch]
|
|
|
|
collated_dict["mesh"] = None
|
|
if {"verts", "faces"}.issubset(collated_dict.keys()):
|
|
|
|
textures = None
|
|
if "textures" in collated_dict:
|
|
textures = TexturesAtlas(atlas=collated_dict["textures"])
|
|
|
|
collated_dict["mesh"] = Meshes(
|
|
verts=collated_dict["verts"],
|
|
faces=collated_dict["faces"],
|
|
textures=textures,
|
|
)
|
|
|
|
return collated_dict
|