Dieser Artikel zeigt, wie ein mit Blender usw. erstelltes Modell in Punktwolkendaten konvertiert wird, die für die Topologiedatenanalyse usw. verwendet werden. Obwohl Python selten Punktwolken verarbeitet, kann es für die Analyse verwendet werden, da das Analysefeld eine gute Bibliothek enthält, z. B. die Analyse von Topologiedaten. Wenn Sie obj-Daten für die Analyse verwenden, müssen Sie diese mit open3D lesen und in eine Punktwolke konvertieren. Beschreiben Sie sie daher.
Es kam nach ein wenig Recherche heraus, also ist es ein Memorandum.
open3d
Eine Bibliothek, die Punktwolkendaten analysiert. Grundsätzlich können Sie Punktwolken abgleichen und Ausreißer analysieren. Es ist auch möglich, eine Punktwolkengruppe aus RGBD-Daten einschließlich Tiefeninformationen zu erstellen.
Daten werden selten im Punktwolkenformat (Ply) verteilt, und 3D-Modelle werden in Formaten wie obj und fbx gelesen. Daher kann es in eine Punktwolke konvertiert werden, indem nur die Scheitelpunkte (Scheitelpunkte) der obj-Daten extrahiert und die Netzinformationen entfernt werden, wie im folgenden Programm gezeigt.
import open3d as o3d
import numpy as np
def obj_mesh(path):
return o3d.io.read_triangle_mesh(path)
def draw_mesh(mesh):
mesh.paint_uniform_color([1., 0., 0.])
mesh.compute_vertex_normals()
o3d.visualization.draw_geometries([mesh])
def mesh2ply(mesh):
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(np.asarray(mesh.vertices))
return pcd
if __name__ == "__main__":
path = "/Users/washizakikai/data/obj3d/IronMan.obj"
mesh = obj_mesh(path)
pcd = mesh2ply(mesh)
Recommended Posts