The Stanford 3D Scanning Repository(3次元データ,PLY ファイル)

【概要】 The Stanford 3D Scanning Repository は,スタンフォード大学が公開している3次元スキャンデータ集である.Stanford Bunny(ウサギ)をはじめ,コンピュータグラフィックスや3次元処理の研究・教育で広く使われている標準的なデータを含む.データは PLY 形式(3次元の頂点と面を記述するファイル形式)で配布されている.本教材では,データのダウンロード,解凍,PLY ファイルの表示(MeshLab および Open3D を使用)までの手順を体験する.

AI を用いて元記事全体を大幅に推敲の上公開

1. はじめに(収録データ)

主な収録データは次の通りである.頂点数が少ないものから試すとよい.

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 を使う場合

  1. MeshLab を起動する.
  2. メニューの「File」→「Import Mesh...」で bunny/reconstruction/bun_zipper.ply を選ぶ.
  3. マウスのドラッグで回転,ホイールで拡大縮小ができることを確認する.

◆ 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. 考察のポイント