Cet article montre comment convertir un modèle créé avec Blender, etc. en données de nuage de points utilisées pour l'analyse des données de topologie, etc. Bien que python gère rarement les nuages de points, il peut être utilisé pour l'analyse car il existe une bonne bibliothèque dans le domaine de l'analyse telle que l'analyse des données de topologie. Lorsque vous utilisez des données obj pour l'analyse, il est nécessaire de les lire avec open3D et de les convertir en nuage de points, décrivez-le donc.
Il est sorti après un peu de recherche, donc c'est pour mémoire.
open3d
Une bibliothèque qui analyse les données de nuages de points. Fondamentalement, vous pouvez faire correspondre les nuages de points et analyser les valeurs aberrantes. Il est également possible de créer un groupe de nuages de points à partir de données RGBD, y compris des informations de profondeur.
Les données sont rarement distribuées au format nuage de points (ply) et les modèles 3D sont lus dans des formats tels que obj et fbx. Par conséquent, il peut être converti en nuage de points en extrayant uniquement les sommets (sommets) des données obj et en supprimant les informations de maillage comme indiqué dans le programme ci-dessous.
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)