PyTorch3D

PyTorch3D

  • ドキュメント
  • チュートリアル
  • API
  • GitHub

›データ

はじめに

  • PyTorch3Dを選ぶ理由

データ

  • ファイルIO
  • ファイルからのロード
  • データローダー
  • バッチ処理

操作

  • Cubify
  • IoU3D

可視化

  • Plotlyによる可視化

レンダラー

  • 概要
  • はじめに
  • カメラ

メッシュとIO

Meshesオブジェクトは、三角形分割されたメッシュのバッチを表し、PyTorch3Dの多くの機能の中核です。バッチ内の各メッシュが同じ数の頂点または面を持つ必要はありません。利用可能な場合は、面法線、面領域、テクスチャなど、メッシュに関連する他のデータを格納できます。

単一のメッシュを格納するための一般的なファイル形式には、".obj"ファイルと".ply"ファイルがあり、PyTorch3Dにはこれらのファイルを読み込むための関数があります。

OBJ

Objファイルには、メッシュに関する追加情報を格納するための標準的な方法があります。objファイルが与えられた場合、次のようにして読み込むことができます。

  verts, faces, aux = load_obj(filename)

これにより、vertsは頂点の(V,3)テンソルになり、faces.verts_idxは各面の角の頂点インデックスの(F,3)テンソルになります。三角形でない面は三角形に分割されます。auxは、法線、uv座標、マテリアルカラー、テクスチャが存在する場合にそれらを格納できるオブジェクトであり、facesはさらに、そのNamedTuple構造内で、これらの法線、テクスチャ、マテリアルへのインデックスを含めることができます。単一のメッシュを含むMeshesオブジェクトは、頂点と面だけを使用して作成できます。

    meshes = Meshes(verts=[verts], faces=[faces.verts_idx])

.objにテクスチャ情報がある場合は、Texturesクラスを初期化するために使用でき、これはMeshesコンストラクターに渡されます。現在、メッシュ全体に1つのテクスチャマップを持つメッシュのテクスチャマップのロードをサポートしています。例:

verts_uvs = aux.verts_uvs[None, ...]  # (1, V, 2)
faces_uvs = faces.textures_idx[None, ...]  # (1, F, 3)
tex_maps = aux.texture_images

# tex_maps is a dictionary of {material name: texture image}.
# Take the first image:
texture_image = list(tex_maps.values())[0]
texture_image = texture_image[None, ...]  # (1, H, W, 3)

# Create a textures object
tex = Textures(verts_uvs=verts_uvs, faces_uvs=faces_uvs, maps=texture_image)

# Initialise the mesh with textures
meshes = Meshes(verts=[verts], faces=[faces.verts_idx], textures=tex)

load_objs_as_meshes関数がこの手順を提供します。

PLY

Plyファイルは、追加情報を格納する方法において柔軟性があります。PyTorch3Dは、plyファイルから頂点と面を読み取るだけの関数を提供しています。呼び出し

    verts, faces = load_ply(filename)

により、vertsは頂点の(V,3)テンソルになり、facesは各面の角の頂点インデックスの(F,3)テンソルになります。三角形でない面は三角形に分割されます。このデータから単一のメッシュを含むMeshesオブジェクトを作成できます。

    meshes = Meshes(verts=[verts], faces=[faces])
← ファイルIOデータローダー →
  • OBJ
  • PLY
pytorch3d
Facebook Open Source
Copyright © 2024 Meta Platforms, Inc
法律:プライバシー規約