in dataset/co3d_dataset.py [0:0]
def _load_pointcloud(pcl_path, max_points=0):
with open(pcl_path, "rb") as f:
plydata = PlyData.read(f)
pcl_data = torch.stack(
[
torch.FloatTensor(np.array(plydata["vertex"][c]).astype(float))
for c in ("x", "y", "z", "red", "green", "blue", "nx", "ny", "nz")
],
dim=1,
)
if pcl_data.shape[0] > max_points > 0:
prm = torch.randperm(pcl_data.shape[0])[:max_points]
pcl_data = pcl_data[prm]
points, points_rgb, normals = pcl_data.split([3, 3, 3], dim=1)
return Pointclouds(points[None], normals[None], features=points_rgb[None] / 255.0)