Categories: open3d

Open3Dでメッシュ(ポリゴン)データを読み込んで表示を行うプログラム(Python+Open3D)

3Dデータ処理ができる手軽なライブラリとして、Open3Dがあります。

本日はこのOpen3Dを用いて、3Dメッシュ(ポリゴン)の汎用フォーマットであるPLYファイルを読み込み、表示を行う方法について確認します。

Open3Dの環境構築に関しては、以下の環境構築に関する記事をご覧ください。

今回は3Dデータ処理のためにOpen3Dの環境構築をしてみたいと思います。 このOpen3DはIntel Labsから2018年に論...

また、メッシュデータではなく3D点群データの読み込みに関しては、以下の記事にて紹介を行っています。

3D点群処理ができる手軽なPythonのライブラリとして「Open3D」があります。 今回はOpen3Dを用いて、以下を実現できるプ...

PLYファイルの入手

PLYファイルは3D点群データや3Dメッシュを保存するための汎用フォーマットで、広く用いられています。

PLYファイルで保存された3Dメッシュはさまざまなサイトで公開されていますが、今回は以下のサイトで公開されているスタンフォードバニーのPLYファイルを読み込み、実験を行いました。

外部サイト:3D Models

メッシュデータを読み込み表示するプログラム(Open3D)

実行環境

  • OS:Windows 10
  • Python 3.9
  • Open3D ver. 0.15.1

ソースコード

コードの解説

メッシュデータの読込

メッシュの読み込みに必要なのは以下の箇所で、「io.read_triangle_mesh」を用いて読み込みたいメッシュデータのパスを指定することで読み込みが可能です。

また、「.vertices」や「.triangles」にアクセスすることで、メッシュの頂点の位置座標や、どの頂点を繋ぎ合わせることでメッシュを構築するかを示すメッシュのインデックス情報を参照することが可能です。

メッシュの法線の計算

メッシュの表示を行う際に、法線ベクトルがないと陰影が付かず、表示結果が綺麗になりません。そこで、以下の箇所でメッシュの法線を計算しています。

メッシュの表示

以下の箇所でメッシュデータをウィンドウに表示します。

メッシュの保存

最後に以下の箇所でメッシュデータを保存することが可能です。

実行結果

17-19行目の法線ベクトルの計算部分をコメントアウトした場合、以下のようにメッシュに陰影が付かず、綺麗な表示ができませんでした。

一方、17-19行目で法線ベクトルを計算した場合には、以下のように陰影のついたバニーのメッシュモデルが綺麗に表示できました。

まとめ

Open3Dでメッシュデータを読み込む方法を紹介しました。

Open3Dを使うことで、簡単にメッシュデータを読み込み、処理を行うことが可能となります。

Haruoka