The Stanford 3D Scanning Repository(3次元データ,PLY ファイル)
- 情報源の URL: https://graphics.stanford.edu/data/3Dscanrep/
- 利用条件: 出典(スキャンの提供元)の明示が求められる.商用利用等の条件は上記ページの「Are these models in the public domain?」の節を確認すること.
AI を用いて元記事全体を大幅に推敲の上公開
1. はじめに(収録データ)
主な収録データは次の通りである.頂点数が少ないものから試すとよい.
- Stanford Bunny(bunny): 約 3.6 万頂点.最初の体験に向く.
- Drill(drill): ドリルビット.
- Happy Buddha(happy_recon): 約 54 万頂点.
- Dragon(dragon_recon): 約 44 万頂点.
- Armadillo(Armadillo): 約 17 万頂点.
- Lucy(lucy): 約 1400 万頂点.ファイルサイズが大きい(約 500 MB)ので注意.
- XYZ RGB データ(xyzrgb_dragon,xyzrgb_manuscript,xyzrgb_statuette): 高精細スキャン.
2. 前準備
◆ インストール手順例(Windows の場合はコマンドプロンプト,Ubuntu の場合は端末で実行)
python -m pip install -U open3d numpy
表示ソフトウェア MeshLab を使う場合は,https://www.meshlab.net/ からダウンロードし,インストールしておく.
【ヒント】エラーが出た場合は,エラーメッセージをよく読み,コマンドやプログラムの綴りを確認すること.
3. ダウンロード手順
◆ Web ページ
上のページの各データの「Download」リンクからダウンロードできる.コマンドで一括ダウンロードする場合は次のように行う.
◆ 実行手順例(wget を使用)
wget https://graphics.stanford.edu/pub/3Dscanrep/bunny.tar.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/drill.tar.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/happy/happy_recon.tar.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/dragon/dragon_recon.tar.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/armadillo/Armadillo.ply.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/lucy.tar.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/xyzrgb/xyzrgb_dragon.ply.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/xyzrgb/xyzrgb_manuscript.ply.gz
wget https://graphics.stanford.edu/pub/3Dscanrep/xyzrgb/xyzrgb_statuette.ply.gz
【ヒント】URL は変更されることがある.うまくいかない場合は,上記の Web ページのリンクを確認すること.まずは bunny.tar.gz だけで体験を進めてもよい.
4. 解凍手順
◆ 解凍を行う bash プログラム
tar -xvzof bunny.tar.gz
tar -xvzof dragon_recon.tar.gz
tar -xvzof drill.tar.gz
tar -xvzof happy_recon.tar.gz
tar -xvzof lucy.tar.gz
gzip -d Armadillo.ply.gz
gzip -d xyzrgb_dragon.ply.gz
gzip -d xyzrgb_manuscript.ply.gz
gzip -d xyzrgb_statuette.ply.gz
解凍後,全体を1つのアーカイブにまとめて保管したい場合は次のように行う.
rm *.gz
tar -cvf graphics.stanford.edu.tar ./*
gzip graphics.stanford.edu.tar
【実行結果の確認】bunny.tar.gz の解凍で bunny/reconstruction/bun_zipper.ply などの PLY ファイルができる.ls -R bunny で確認すること.
5. PLY ファイルの表示
◆ MeshLab を使う場合
- MeshLab を起動する.
- メニューの「File」→「Import Mesh...」で bunny/reconstruction/bun_zipper.ply を選ぶ.
- マウスのドラッグで回転,ホイールで拡大縮小ができることを確認する.
◆ Open3D(Python)を使う場合
【プログラム説明】 以下の Python プログラムでは,Open3D(3次元データ処理のための Python ライブラリ)を用いて PLY ファイルを読み込み,頂点数と面数を表示したうえで,法線を計算して3次元表示を行っている.頂点数と面数はテキストファイル info.txt にも書き出す.実行結果はファイルに保存されるので,あとで確認できる.
ソースコード(ファイル名: show_ply.py)
import sys
import open3d as o3d
filename = sys.argv[1] if len(sys.argv) == 2 else "bunny/reconstruction/bun_zipper.ply"
mesh = o3d.io.read_triangle_mesh(filename)
mesh.compute_vertex_normals()
info = "頂点数: %d, 面数: %d" % (len(mesh.vertices), len(mesh.triangles))
print(info)
with open("info.txt", "w") as f:
f.write(filename + "\n" + info + "\n")
o3d.visualization.draw_geometries([mesh])
◆ 実行手順例
python show_ply.py bunny/reconstruction/bun_zipper.ply
6. 考察のポイント
- bunny には解像度違いの PLY ファイル(bun_zipper.ply,bun_zipper_res2.ply,bun_zipper_res3.ply,bun_zipper_res4.ply)が含まれる.それぞれの頂点数を調べ,表示の滑らかさと処理時間の違いを比較すること.
- PLY ファイルの先頭はテキストのヘッダである.
head -20 bun_zipper.plyで確認し,element vertex,element face の行から頂点数と面数が読み取れることを確かめること. - bunny の底面には,スキャン時に取得できなかった穴(欠損)がある.どこに穴があるかを表示で確かめ,スキャンによる3次元計測の限界を考えること.