Logo
Section 1 / 8

异构批处理

了解 PyTorch3D 中不同类型的异构批处理。

导入

异构批处理

了解 PyTorch3D 中不同类型的异构批处理。

from pytorch3d.io import load_objs_as_meshes

从文件加载网格

meshes = load_objs_as_meshes([ './data/prims/cube.obj', './data/prims/sphere.obj', './data/prims/cone.obj' ])

获取顶点列表

verts = meshes.verts_list() print(f'顶点: {type(verts)} {[p.shape for p in verts]}') print(f'总顶点数: {sum([p.shape[0] for p in verts])}') print(verts[0])

from pytorch3d.io import load_objs_as_meshes

从文件加载网格

meshes = load_objs_as_meshes([ './data/prims/cube.obj', './data/prims/sphere.obj', './data/prims/cone.obj' ])

获取面片列表

faces = meshes.faces_list() print(f'面片: {[p.shape for p in faces]}') print(f'总面片数: {sum([p.shape[0] for p in faces])}')

获取顶点法向量列表

vnorms = meshes.verts_normals_list() print(f'顶点法向量: {[p.shape for p in vnorms]}') print(f'总顶点法向量数: {sum([p.shape[0] for p in vnorms])}')

获取面片法向量列表

fnorms = meshes.faces_normals_list() print(f'面片法向量: {[p.shape for p in fnorms]}') print(f'总面片法向量数: {sum([p.shape[0] for p in fnorms])}')

from pytorch3d.io import load_objs_as_meshes

从文件加载网格

meshes = load_objs_as_meshes([ './data/prims/cube.obj', './data/prims/sphere.obj', './data/prims/cone.obj' ])

获取打包后的顶点

verts = meshes.verts_packed() print(f'顶点: {verts.shape}')

获取打包后的面片

faces = meshes.faces_packed() print(f'面片: {faces.shape}')

获取打包后的顶点法向量

vnorms = meshes.verts_normals_packed() print(f'顶点法向量: {vnorms.shape}')

获取打包后的面片法向量

fnorms = meshes.faces_normals_packed() print(f'面片法向量: {fnorms.shape}')

长度等于所有模型的总长度

assert len(verts) == sum([len(v) for v in meshes.verts_list()])

from pytorch3d.io import load_objs_as_meshes

从文件加载网格

meshes = load_objs_as_meshes([ './data/prims/cube.obj', './data/prims/sphere.obj', './data/prims/cone.obj' ])

获取填充后的顶点

verts = meshes.verts_padded() print(f'顶点: {verts.shape}') print(verts[:, -1, :], end='\n\n')

获取填充后的面片

faces = meshes.faces_padded() print(f'面片: {faces.shape}') print(faces[:, -1, :], end='\n\n')

获取填充后的顶点法向量

vnorms = meshes.verts_normals_padded() print(f'顶点法向量: {vnorms.shape}') print(vnorms[:, -1, :], end='\n\n')

获取填充后的面片法向量

fnorms = meshes.faces_normals_padded() print(f'面片法向量: {fnorms.shape}') print(fnorms[:, -1, :], end='\n\n')

数据表示

网格变形