分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
PLY
スキャナーの形式。点ごとに色を持てるので、3D スキャンは PLY で届きます。
PLY
PLY はバイナリ形式です。これを知っているプログラムにしか意味を持ちません。 ピクセルではなく図形と座標を保存するので、どんな大きさでも鮮明なままです。看板の大きさまで引き伸ばしたロゴでも、失うものはありません。 スキャンとプログラム間のデータ受け渡しのために使われます。
拡張子は .ply、正式名称は Polygon File Format です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。
Stanford University が 1994 年に公開しました。
これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。
仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。
PLY ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。
MeshLab、Blender、CloudCompareが読めますし、同じ種類のプログラムならたいてい読めます。
ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。
これを読めるブラウザーはありません。
これを変換するいちばんよくある理由がこれです。形式が悪いのではありません。ファイルを見せたい場所が、それを読めないというだけのことです。
PLY は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。
PLY は 1990 年代半ばに Stanford で、レンジスキャナーのデータのために書かれた形式で、今も主にそれを保持しています。フォトグラメトリーのソフト、ハンディや構造化光のスキャナー、lidar のツール、そして Stanford のモデル自体もこの形式を話します。スキャナーが生み出す扱いにくいもの — 何百万もの計測点、それぞれがスキャナーが記録した属性を持つ — のためにまさに設計されたものだからです。
この形式が長く使われている理由は、属性が固定ではなく宣言される仕組みにあります。ヘッダーには各頂点が何を持つか — 位置、色、法線、信頼度、強度、特定の機器が計測するどんなものでも — が列挙され、読み込む側は理解できるものだけを取ります。そのため 1994 年生まれの形式が、去年作られた機器のデータも運べます。
OBJ は面にテクスチャー画像を貼り付けて彩色します。PLY はたいてい、もっと単純なことをします。各頂点が、その点で計測された自分自身の色を持ちます。
スキャンにとってはこれがまさに正しい方法です。スキャナーはサンプルごとに色を計測していて、そもそも画像を貼り付けるための展開された面がないからです。これは色の解像度が形状の解像度と同じであることも意味します。粗いメッシュは粗い色になり、詳細を加えるには点を増やすしかありません。低ポリゴンのモデルが非常に細かい画像を持てるテクスチャーとは逆の取り引きです。
これが実際の混乱の原因になります。PLY は、つながりを一切持たない点のリスト — 点群 — のこともあれば、それらを結ぶ面を持つ正式なメッシュのこともあります。どちらも有効で、どちらも同じ拡張子で、片方を期待するプログラムはもう片方に対して役に立たない振る舞いをします。
メッシュを求めるプログラムで点群を開くと、うっすらとした点のもやか、何も見えないかのどちらかになります。壊れているのではなく、単に描画する面がないだけです。点群を面に変換するのは再構成という工程で、MeshLab や CloudCompare の Poisson やボールピボッティングなどが必要です。これは形式変換ではなく、設定を選ぶ処理工程です。
STL と同様、ヘッダーがどちらの符号化が続くかを宣言します。ASCII は読めますが、およそ四倍大きくなります。バイナリは実際のスキャナーが書き出す形式です。
バイナリであっても、これらのファイルは大きくなります。点の数がそもそも多いからです。スマートフォンによるフォトグラメトリーは普通に二百万から五百万点を生み出し、部屋を lidar でスキャンすれば数千万点になります。色付きで一点あたりおよそ十五バイトとすると、一億点の計測は、まだ何も再構成していない段階で一・五ギガバイトに達します。これはこの形式にとって普通のことであり、書き出しに問題があるという意味ではありません。
生の出力は決して完成品ではありません。テーブルや床、部屋といった背景があり、切り取る必要があります。反射や輪郭をスキャナーが誤認したことで生じる浮遊した外れ値の点もあります。機器が見えなかった部分、対象物の下やあらゆる出っ張りの裏側には穴があります。
その後、デシメーションが必要です。五百万点のメッシュはその先のどんな用途にも使えないからです。穴埋めも必要で、そこでようやくテクスチャーを貼るか印刷するかに値するメッシュになります。MeshLab と CloudCompare がこれらすべてに使える無料のツールです。スキャナーは計測値を生み出すだけで、それをモデルに変えるのは別の、しかもより大きな仕事です。
PLY を STL に変換するのがよくある最後の工程で、これは色を捨てながら形状を保ちます。STL には色という概念がないためです。単色のプリンターはどのみち色を使えないので、たいていはこれで問題ありません。
想定しておくべき失敗は水密性です。スキャンはその性質上、穴だらけです。対象物の下は何も計測されておらず、機器から見えなかったところには詳細が欠けています。スライサーは曖昧さのない立体を必要とするため、STL を書き出す前に穴を埋め、メッシュを確認しておく必要があります。それを怠ると、スライサーが拒否するか、もっと悪いことに、勝手な解釈で受け入れてしまうファイルができます。
モデルの行き先がゲームエンジンやウェブビューアーなら glTF に変換してください。テクスチャー、マテリアル、シーンを運べ、キャプチャーではなく配信のために作られています。モデリングソフトで編集する予定なら、OBJ のほうがより広く受け入れられます。プリンターが行き先なら STL です。
PLY はパイプラインの取得段階でこそ本領を発揮します。頂点ごとの属性と拡張可能なヘッダーが、まさに必要とされる場所だからです。実際に計測されたものの記録としてこれを残し、そこから配信用の形式を生成してください。逆に、間引かれたメッシュから計測値を再構成することはできません。
| 拡張子 | .ply |
|---|---|
| メディアタイプ | model/ply |
| 公開元 | Stanford University |
| 初版 | 1994 |
MeshLab と CloudCompare が無料の定番で、点群もメッシュもどちらも扱えます。Blender も取り込め、Windows の 3D ビューアーも単純なものなら開けます。非常に大きなスキャンには、汎用の 3D ソフトではなく点群専用のツールを使ってください。
おそらくメッシュではなく点群、つまり面をつながず点だけを持つデータで、プログラムが存在しない面を描画しようとしているためです。点の描画表示を有効にするか、点群から面を構築する面の再構成を実行してください。
点の数が原因です。スマートフォンによるフォトグラメトリーは普通に数百万点を生み出し、lidar のスキャンは数千万点になります。色付きで一点あたりおよそ十五バイトです。整理後にデシメーションを行うのが、扱いやすいサイズにする通常の方法です。
たいてい保持しますが、テクスチャー画像としてではなく各頂点の色の値として保持します。色が点ごとに計測されたスキャンデータに適していて、色の解像度がメッシュの密度に結びつくことを意味します。
STL に変換し、修復してからであれば可能です。色は失われますが、単色のプリンターはどのみち色を使えません。本当に必要な作業は、すべてのスキャンが持つ穴を埋めることです。対象物の下は何も計測されていないため、スライサーが曖昧さのない立体として扱えるようにする必要があります。
PLY は頂点ごとの属性と拡張可能なヘッダーを持つ取得用の形式で、点群もメッシュも扱えます。OBJ はテクスチャー座標と別のマテリアルファイルを持つ受け渡し用の形式です。スキャンは PLY として届き、モデルはプログラム間で OBJ として受け渡されます。