※当サイトはPRを含みます

【Python】Open3Dでメッシュデータを読み込んで表示

はじめに

Pythonの点群処理ライブラリ「Open3D」を用いて、メッシュファイルを読み込みと可視化をしたいと思います。

公式のドキュメントはこちら
http://www.open3d.org/docs/release/tutorial/geometry/file_io.html

点群ファイルの読み込みと可視化はこちら
https://tech-deliberate-jiro.com/open3d-vis-pcl/

Open3Dで扱う点群ファイルのフォーマット

フォーマット説明
plyPolygon File Formatを参照。 plyファイルは点群だけでなくメッシュも格納できる。
stlStereoLithographyを参照
objObject Filesを参照
offObject File Formatを参照
gltf/glbGL Transmission Formatを参照

プログラム

犬のobjファイルをダウンロードして試してみます。(ダウンロード先)


プログラムは以下の処理をしています。

「obj」ファイル読み込み→法線ベクトルの計算→可視化

import open3d as o3d

print("Testing IO for mesh ...")
Mesh_load = o3d.io.read_triangle_mesh("dog.obj")
Mesh_load.compute_vertex_normals()

# Visualization in window
o3d.visualization.draw_geometries([Mesh_load],mesh_show_back_face=True)

可視化結果

法線ベクトルによる陰影をオフにした可視化結果です。
シルエットだけで犬種がわかったあなたは犬好きです。

陰影をオンにしてみます。(キーボードのLを押すとon/offの切り替えできます)

フレンチブルドッグでした。

おすすめ参考書