はじめに
とある流れがあって、いくつかの種類の点群データを探していました。その検索に生成AI を用いていた時に、「Kaggle のサイトで探す」という方法が出てきたのがあって、これを試してみました。
点群のデータの種類
タイトルの複数種類の点群・形状データというのは、「一般的な 3D形状を示す点群データ・それがメッシュになっているもの、3D Gaussian Splatting用のデータ、そして LiDAR由来のもの」といった内容を想定しています。
それについて、「一般的な 3D形状を示す点群データ・メッシュのデータ」は以下のような内容を想定しています。
- x y z の座標情報で構成され、そこに RGB、法線といった情報がいくつかついているもの
- x y z の座標情報で構成され、さらに面の情報を持っていて、そこに RGB など情報がいくつかついているもの
また、3D Gaussian Splatting用のデータは点のデータではなく、描画用のガウシアン情報を持ったものを想定しています。
そして LiDAR由来のものは、一般的な 3D形状を示す点群データと似たようなものですが、データの中に LiDAR で計測した情報が含まれるようなものを想定しています。
それぞれで想定するデータ形式について
上記について、例えば「一般的な 3D形状を示す点群データ」は以下のようなデータ形式を想定しています。以下の例は、点の 3次元座標とその点の色情報のセットです。
ply
format binary_little_endian 1.0
element vertex 100000
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
end_header
...
また、「面の情報を持ったメッシュ」は以下のようなデータ形式を想定しています。
ply
format binary_little_endian 1.0
element vertex 96161
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property uchar alpha
element face 191928
property list uchar int vertex_indices
end_header
...
「3D Gaussian Splatting用のもの」は、各点を「点」ではなく、空間内の小さな 3Dガウス楕円体として扱うための情報を持っています。今回は例えば以下のようなデータ形式を想定しています。
property float x
property float y
property float z
property float nx
property float ny
property float nz
property float f_dc_0
property float f_dc_1
property float f_dc_2
property float f_rest_0
...
property float opacity
property float scale_0
property float scale_1
property float scale_2
property float rot_0
property float rot_1
property float rot_2
property float rot_3
...
出てくる値が、これまでの点群データとはかなり異なるのが分かります。
最後に「LiDAR由来のデータ」ですが、例えば「intensity、gps_time などの LiDAR で取得されたがデータ」を含んでいることを想定しています。
property float x
property float y
property float z
property float intensity
property uchar classification
property double gps_time
...
実際のデータを扱ってみる
それでは実際のデータを扱っていきます。
Kaggle のサイトで検索した結果
Kaggle のサイトで、上で書いていたデータをそれぞれ検索してみます。具体的には、以下のキーワードを用いて検索しました。
- Kaggle のサイトで用いる検索用キーワード
- point cloud ply
- gaussian splatting ply
- LiDAR ply
検索してみた際の画面
検索してみた結果は、以下の通りです。
●Search | Kaggle
https://www.kaggle.com/search?q=point+cloud+ply
●Search | Kaggle
https://www.kaggle.com/search?q=gaussian+splatting+ply
●Search | Kaggle
https://www.kaggle.com/search?q=LiDAR+ply
ダウンロードしたデータの情報確認や可視化
上記の検索をして出てきた結果から、plyファイルをダウンロードしてみて、その情報を見てみたりブラウザ上で表示してみたりします。
ダウンロードするデータ1
とりあえず、以下にあるファイルを使ってみることにしました。
●Face ply to Gaussian Splat
https://www.kaggle.com/code/stpeteishii/face-ply-to-gaussian-splat/input
●Face ply to Gaussian Splat
https://www.kaggle.com/code/stpeteishii/face-ply-to-gaussian-splat/input
ここでダウンロードできるファイルは、以下に出てきている、人の顔のメッシュのデータなどになるようです。
「Input」のタブを選んだ後のページでは、上記の写真のファイル名に対応した plyファイルがあるようです。
この中の 1.ply を使ってみます。
ダウンロードしたデータの情報を見てみる1
ダウンロードしたデータの情報を少し見てみます。具体的には、以下のコマンドで plyファイルの冒頭の部分を見てみました。
head -n 15 1.ply
以下が、出力内容をテキストで書いたものです。ファイルの冒頭のヘッダ部分がテキストで書かれており、その後に続く部分がバイナリになっているので、途中からは文字化けしたような表示になっています。
点とメッシュの情報が書かれているということが分かります。
ply
format binary_little_endian 1.0
comment https://github.com/mikedh/trimesh
element vertex 96161
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property uchar alpha
element face 191928
property list uchar int vertex_indices
end_header
pD=���\�������03
=�'��\�������03
=���겦������.=���z������03
=�}��z������03
=����ힾ������<����������`��<����������`��<����ˬ�����`� =���>
ブラウザ上で表示してみる1
次に先ほどのデータをブラウザ上で表示してみます。具体的には、以下の MeshLabJS のサイトを使ってみます。
●MeshLabJS
https://www.meshlabjs.net/
●cnr-isti-vclab/meshlabjs: A javascript client based mesh processing tool. Built using vcg library, emscripten and webgl
https://github.com/cnr-isti-vclab/meshlabjs
先ほどの plyファイルを、ページにドラッグ&ドロップしたところ、以下のようにデータを可視化することができました。
ダウンロードするデータ2
先ほどのページの「Output」のところでは、3D Gaussian Splatting用のデータがダウンロードできるようでした。そのデータも少し見てみます。
以下を見ると、10番の人物のメッシュのデータと 3D Gaussian Splatting用のデータがありそうでした。
●Face ply to Gaussian Splat
https://www.kaggle.com/code/stpeteishii/face-ply-to-gaussian-splat/output?select=face10_splat.ply
ダウンロードしたデータの情報を見てみる2
ダウンロードしたデータのヘッダの情報を見てみます。以下は head -n 21 face10_splat.ply でヘッダの最終行までを表示させた時の出力です。
以下に出力をテキストにしたものを掲載しておきます。
ply
format binary_little_endian 1.0
element vertex 98767
property float x
property float y
property float z
property float nx
property float ny
property float nz
property float f_dc_0
property float f_dc_1
property float f_dc_2
property float opacity
property float scale_0
property float scale_1
property float scale_2
property float rot_0
property float rot_1
property float rot_2
property float rot_3
end_header
メッシュデータのほうでも試してみます。以下は head -n 14 10.ply でヘッダの最終行までを表示させた時の出力です。
ply
format binary_little_endian 1.0
comment https://github.com/mikedh/trimesh
element vertex 98767
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property uchar alpha
element face 197089
property list uchar int vertex_indices
end_header
ブラウザ上で表示してみる2
次に先ほどのデータをブラウザ上で表示してみます。
3D Gaussian Splatting用のデータのほうは、以下の SuperSplat Editor を使ってみます。
●SuperSplat Editor
https://superspl.at/editor
試してみると、以下のように 3D Gaussian Splatting用のデータを表示できました。
このデータについて、先ほど使っていた MeshLabJS で表示しようとしてみると、以下のように点のデータだけが表示されたような見た目になりました。
メッシュのデータのほうを MeshLabJS で表示してみます。こちらのほうは、最初に試したものと同様に、色付きのメッシュのデータを表示できました。
その他のデータも少しだけ見てみる
その他のデータも少しだけ見てみます。
LiDAR由来のもの
以下は LiDAR由来のデータになるようです。
●Point cloud LIDAR (Toronto 3D)
https://www.kaggle.com/datasets/priteshraj10/point-cloud-lidar-toronto-3d
●Point cloud LIDAR (Toronto 3D)
https://www.kaggle.com/code/reidnersantos/point-cloud-lidar-toronto-3d/notebook
以下にある plyファイルを 1つダウンロードしてみました。
https://www.kaggle.com/code/reidnersantos/point-cloud-lidar-toronto-3d/input

また headコマンドで、plyファイルのヘッダ部分の情報を見てみます。
head -n 17 L001.ply
ply
format binary_little_endian 1.0
comment Created by CloudCompare v2.10.2 (Zephyrus)
comment Created 2020-04-22 11:57 AM
obj_info Generated by CloudCompare!
element vertex 21567172
property double x
property double y
property double z
property uchar red
property uchar green
property uchar blue
property float scalar_Intensity
property float scalar_GPSTime
property float scalar_ScanAngleRank
property float scalar_Label
end_header
これを見てみると、以下のように「レーザー反射強度・GPS時刻・スキャン角度など」の LiDAR由来のデータが混じっているのが分かります。
property float scalar_Intensity
property float scalar_GPSTime
property float scalar_ScanAngleRank
property float scalar_Label
おわりに
今回、Kaggle のサイトで複数種類の点群・形状データを探してみて、その plyファイルをブラウザ上で閲覧してみたりしました。
まだまだ点群などに関する内容は試せていないことが多いので、これからもお試しを続けていければと思います。
その他
以下は、今回の内容を進める中などで見かけた記事のメモです。
SuperSplat関連
●オープンソースの3DGSエディタ「SuperSplat」アップデート! バーチャルツアーなど演出を適用できる新アプリ「SuperSplat Studio」も発表!
https://cgworld.jp/flashnews/01-202602-SuperSplat.html
●オープンソースの3DGSエディタ「SuperSplat Editor 2.14.0」リリース! 指定のタイムライン範囲内をMP4・MOV・MKV・WebM形式で動画レンダリング、コーデックの選択にも対応
https://cgworld.jp/flashnews/01-202511-SuperSplat214.html
●オープンソースの3D Gaussian Splattingプラットフォーム「SuperSplat 2.0」リリース! Webへのパブリッシュ、カメラのフライスルー作成など
https://cgworld.jp/flashnews/202502-SuperSplat20.html
- Viewing Splats | PlayCanvas Developer Site
- SuperSplat Viewer | PlayCanvas Developer Site
- playcanvas/supersplat-viewer: User-friendly, high-performance viewer for 3D Gaussian splats
情報まとめ的なもの
●szenergy/awesome-lidar: 😎 Awesome LIDAR list. The list includes LIDAR manufacturers, datasets, point cloud-processing algorithms, point cloud frameworks and simulators.
https://github.com/szenergy/awesome-lidar
●minwoo0611/Awesome-3D-LiDAR-Datasets: This reposiotry is the collection for public 3D LiDAR datasets
https://github.com/minwoo0611/Awesome-3D-LiDAR-Datasets
●tomiwaAdey/awesome-gaussian-splatting: A curated list of resources on Gaussian Splatting techniques, featuring seminal papers, cutting-edge research, practical implementations, and community discussions. Ideal for both beginners and experts.
https://github.com/tomiwaAdey/awesome-gaussian-splatting
●MrNeRF/awesome-3D-gaussian-splatting: Curated list of papers and resources focused on 3D Gaussian Splatting, intended to keep pace with the anticipated surge of research in the coming months.
https://github.com/MrNeRF/awesome-3D-gaussian-splatting
















