3次元に関する用語集

目次

3次元モデリング・レンダリング

メッシュ(Mesh)

3次元オブジェクトの形状を頂点・辺・面で表現するデータ構造である。

ポリゴン(Polygon)

3次元モデルの表面を構成する多角形の面である。

ボクセル(Voxel)

3次元空間を規則的な格子で分割した最小単位の立方体要素であり,2次元におけるピクセルの3次元版に相当する。

3次元ボリュームデータ(3D Volume Data)

3次元空間をボクセル(立方体要素)の格子で分割し,各ボクセルに値を持たせたデータである。

符号付き距離関数(Signed Distance Function,SDF)

3次元空間内の各点について,最も近い物体表面までの符号付き距離を表す関数である。物体の外側では正,内側では負の値を取り,値が 0 となる点の集合が物体表面を表す。3次元形状の陰関数表現として3次元再構成やレンダリングに用いられる。

関連項目Neural Implicit RepresentationNeRF

ブーリアン演算(Boolean Operation)

複数の立体に対して和・差・積の集合演算を行い,新たな形状を生成する手法である。

マテリアル(Material)

オブジェクト表面の色,質感,反射率などの外観属性を定義するデータである。

テクスチャ(Texture)

オブジェクト表面に貼り付ける画像データであり,表面の模様や質感を表現する。

画像テクスチャ(Image Texture)

画像ファイルを用いてオブジェクト表面の外観を定義する手法である。

テクスチャ座標系(Texture Coordinate System)

テクスチャをオブジェクト表面に対応付けるための座標系である。

テクスチャ・ペインティング(Texture Painting)

3次元モデルの表面に直接描画を行う手法である。

スムースシェード(Smooth Shade)

面の法線を補間し,滑らかな陰影を表現するシェーディング手法である。

シェーダー(Shader)

レンダリング時の色・光・影などの計算処理を定義するプログラムである。

光源(Light Source)

3次元シーン内で光を発するオブジェクトである。

ライト(Light)

3次元シーン内の光源オブジェクトであり,シーンの照明を制御する。

カメラ(Camera)

3次元シーンの視点と投影を定義するオブジェクトである。

カメラビュー(Camera View)

3次元シーンにおけるカメラの視点からの表示である。

ワイヤフレーム表示(Wireframe Display)

オブジェクトの辺のみを線で描画する表示方式である。

フラット表示(Flat Display)

各面を単一の色で塗りつぶして描画する表示方式である。

スムージング表示(Smoothing Display)

面間の境界を滑らかに補間して描画する表示方式である。

PBR(Physically Based Rendering,物理ベースレンダリング)

物理法則に基づいて光の反射・散乱を計算し,写実的な描画を実現するレンダリング手法である。

レンダリング(Rendering)

3次元シーンのデータから2次元画像を生成する処理である。

レンダラー(Renderer)

レンダリング処理を実行するソフトウェアである。

モデラー(Modeler)

3次元モデルの形状を作成・編集するソフトウェアである。

RIB ファイル(RenderMan Interface Bytestream)

RenderMan で使用されるシーン記述ファイル形式である。

NeRF(Neural Radiance Fields,ニューラル輻射場)

3次元シーンを座標と視線方向を入力とする多層パーセプトロン(MLP)で表現し,ボリュームレンダリングにより新規視点画像を合成する手法である。Mildenhall らが 2020 年に提案し,複数視点画像から連続的な3次元シーン表現を学習できる。

文献

Ben Mildenhall, Pratul P. Srinivasan, Matthew Tancik, Jonathan T. Barron, Ravi Ramamoorthi, Ren Ng, NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis, ECCV 2020.

https://arxiv.org/abs/2003.08934

関連項目3D Gaussian SplattingInstant NGPnerfstudioNeural Implicit Representation

3D Gaussian Splatting(3次元ガウシアンスプラッティング)

3次元空間に多数の3次元ガウス関数を配置し,複数視点の画像から3次元シーンを再構成・描画する手法である。

地形生成(Terrain Generation)

アルゴリズムやデータに基づいて3次元の地形モデルを自動生成する技術である。

Utah teapot

Utah teapot は、1975 年に University of Utah の Martin Newell によって制作された3次元データである。コンピュータグラフィックス分野における標準的なテスト用モデルとして広く用いられている。

Utah teapot のデータは、commons.wikimedia.org の次のページからダウンロードすることができる。

https://commons.wikimedia.org/wiki/File:Utah_teapot_(solid).stl

アニメーション・シミュレーション

キーフレームアニメーション(Keyframe Animation)

時間軸上の主要なフレームにおけるオブジェクトの状態を指定し,中間フレームを補間して動きを生成する手法である。

ボーン(Bone)

キャラクタの骨格を構成する個々の骨要素である。

アーマチャ(Armature)

複数のボーンで構成される骨格構造全体である。

ボーンアニメーション(Bone Animation)

骨格構造(ボーン)を用いてキャラクタの動きを制御するアニメーション手法である。

逆運動学(Inverse Kinematics,IK)

末端(エンドエフェクタ)の目標位置から各関節の角度を逆算してポーズを決定する手法である。

人体アニメーション(Human Body Animation)

人体モデルに骨格構造を設定し,動きを付与するアニメーション手法である。

SMPL(Skinned Multi-Person Linear Model)

Loper らが 2015 年に提案した人体3次元モデルである。頂点ベースのスキンモデルであり,体型(shape)と姿勢(pose)を低次元のパラメータで表現できる。人体姿勢推定や人体アニメーション,3次元人体再構成の分野で標準的な人体モデルとして用いられている。

文献

Matthew Loper, Naureen Mahmood, Javier Romero, Gerard Pons-Moll, Michael J. Black, SMPL: A Skinned Multi-Person Linear Model, ACM Transactions on Graphics (SIGGRAPH Asia), vol. 34, no. 6, 2015.

公式ページ: https://smpl.is.tue.mpg.de/

関連項目人体アニメーションPARE

パーティクルシステム(Particle System)

多数の粒子(パーティクル)の生成・移動・消滅を管理し,視覚効果を実現する仕組みである。

パーティクルアニメーション(Particle Animation)

パーティクルシステムを用いて,炎・煙・水などの視覚効果を表現する手法である。

液体アニメーション(Fluid Animation)

液体の流動挙動を物理計算で再現するアニメーション手法である。

クロス・シミュレーション(Cloth Simulation)

布の変形・揺れなどの挙動を物理計算で再現する手法である。

剛体シミュレーション(Rigid Body Simulation)

変形しない物体の落下・衝突などの物理挙動を計算で再現する手法である。

物理シミュレーション(Physics Simulation)

重力・衝突・摩擦・反発などの物理現象を計算によって再現する技術である。

衝突検出(Collision Detection)

オブジェクト同士の接触や重なりを判定する処理である。

バウンディング形状(Bounding Shape)

衝突検出の高速化のためにオブジェクトを囲む簡易的な形状(球,箱など)である。

3次元データ形式・データ処理

Wavefront OBJ 形式

3次元モデルの頂点・面などの形状データを記述するテキストベースのファイル形式である。

Wavefront Material 形式(MTL)

Wavefront OBJ に対応するマテリアル定義ファイル形式である。

PLY 形式(Polygon File Format,Stanford Triangle Format)

3次元モデルの頂点・面・色などのデータを記述するファイル形式である。Stanford 大学で開発された。ASCII 形式とバイナリ形式の両方をサポートし,点群データやメッシュデータの記述に広く用いられる。近年は 3D Gaussian Splatting のデータ形式としても採用されている。

STL 形式(Stereolithography)

三角形ポリゴンの集合で3次元形状の表面を表現するファイル形式であり,3Dプリンティングで広く使用される。

FBX 形式(Filmbox)

3次元モデル・アニメーション・マテリアルなどを格納する汎用的なファイル形式であり,Autodesk 社が管理している。

glTF(GL Transmission Format)

Khronos Group が策定した,3次元シーンとモデルの効率的な伝送・読み込みを目的としたロイヤリティフリーの仕様である。JSON ベースの記述形式であり,メッシュ・マテリアル・アニメーション・スキンなどを格納できる。「3Dの JPEG」とも呼ばれ,Web や実行時の3次元アセット配信で広く採用されている。

公式ページ: https://www.khronos.org/gltf/

USD(Universal Scene Description,OpenUSD)

Pixar Animation Studios が開発したオープンソースの3次元シーン記述フレームワークである。時系列を含む3次元シーンの生成・読み込み・編集・ストリーミングを効率的に行える。複数のアプリケーション間での3次元データ交換や,大規模な3次元制作パイプラインでの協調作業を目的として設計されており,映像制作やリアルタイム3D分野で採用が広がっている。

公式ページ: https://openusd.org/

BVH 形式(Biovision Hierarchy)

モーションキャプチャデータを記録するテキストベースのファイル形式であり,骨格階層と各フレームの動きデータを含む。

CityGML

CityGML は、3次元の都市、3次元の景観を扱う機能を持つデータフォーマットである。 次のようなモジュールがある。

Appearance、Bridge、Building、CityFurniture、LandUse、Relief、Transportation、Tunnel、Vegetation、 WaterBody、TexturedSurface


12-019_OGC_City_Geography_Markup_Language_CityGML_Encoding_Standard.pdf のページ 34 から転載

CityGML の公式情報は、Open Geospatial Consortium のページで公開されている。

Open Geospatial Consortium の CityGML ページ: https://www.ogc.org/standards/citygml

CityGML の仕様書も、このページで公開されている。

CityGML のビューワには FZKViewer がある。 Windows での FZKViewer のインストールは 別ページ »で説明

関連項目】 FZKViewer

3次元点群データ (3-D point cloud data)

3次元点群データ (3-D point cloud data) を扱うには、MeshLab や CloudCompare が便利である。

PointCloudLibrary の3次元点群データ

次の URL では、3次元点群データ (3-D point cloud data) が公開されている(オープンデータである)。

https://github.com/PointCloudLibrary/data

Windows では、次のような手順でダウンロードできる。

  1. Git のインストール: 別項目で説明している。

    Git の公式ページ: https://git-scm.com/

  2. ダウンロード
    mkdir c:\data
    cd c:\data
    mkdir PointCloudLibrary
    cd PointCloudLibrary
    git clone --recursive https://github.com/PointCloudLibrary/data
    echo git clone --recursive https://github.com/PointCloudLibrary/data > download.txt
    

Ubuntu では、次のようなコマンドでダウンロードできる。

cd /usr/local
sudo mkdir -p PointCloudLibrary
cd PointCloudLibrary
sudo git clone --recursive https://github.com/PointCloudLibrary/data
echo "git clone --recursive https://github.com/PointCloudLibrary/data" | sudo tee download.sh > /dev/null

3次元点群データ (3-D point cloud data) を扱うには、MeshLab や CloudCompare が便利である。

ボクセル化 (voxelize)

ボクセル化は、3次元データをボクセル形式に変換する処理である。

ボクセル化のソフトウェアとしては、binvox、cuda_voxelizer がある。

binvox の URL: https://www.patrickmin.com/binvox/

binvox の文献: Fakir S. Nooruddin and Greg Turk, Simplification and Repair of Polygonal Models Using Volumetric Techniques, IEEE Transactions on Visualization and Computer Graphics, vol. 9, no. 3, pp. 191-205, 2003.

cuda_voxelizer の GitHub のページ: https://github.com/Forceflow/cuda_voxelizer

.binvox 形式ファイルのボクセルデータを、STL 形式のデータに変換するソフトウェアとしては、 binvox2mesh が知られる。

binvox2mesh の GitLab のページ: https://gitlab.com/mandries/binvox2mesh

メッシュ簡略化 (Mesh Simplification)

メッシュ簡略化は、メッシュの頂点数とポリゴン数を削減する処理である。

MeshLab を用いて、次の手順で、 メッシュ簡略化を行うことができる。

  1. MeshLab を使用する。
  2. MeshLab で 「File」、「Import Mesh...」と操作し、ファイルを選ぶ。
  3. 「Filters」、「Remeshing, Simplification and Reconstruction」、「Simplification: Quadric Edge Collapse Decimation (with texture)」と操作する。
  4. 設定し「Apply」をクリックする。

関連項目MeshLabメッシュ平滑化 (Mesh Smoothing)

メッシュ平滑化 (Mesh Smoothing)

メッシュ平滑化は、メッシュ表面を滑らかにする処理である。

MeshLab を用いて、次の手順で、 メッシュ平滑化を行うことができる。

  1. MeshLab を使用する。
  2. MeshLab で 「File」、「Import Mesh...」と操作し、ファイルを選ぶ。
  3. 「Filters」、「Smoothing, Fairing and Deformation」、「Laplacian Smooth」と操作する。
  4. 設定し「Apply」をクリックする。

関連項目MeshLabメッシュ簡略化 (Mesh Simplification)

インポート/エクスポート(Import/Export)

異なるソフトウェア間で3次元データを読み込み・書き出しする処理である。

アドオン(Add-on)

ソフトウェアの機能を拡張するための追加プログラムである。

3次元再構成・コンピュータビジョン

コンピュータビジョンのタスク

コンピュータビジョンのタスクは種々あるが、次のようなものをあげることができる。

フォトグラメトリ

フォトグラメトリ (Photogrammetry) は写真測量を指す。複数の写真から対象物の3次元形状を復元する技術である。

関連項目Meshroom3次元再構成 (3D reconstruction)3DF Zephyr Free

Structure from Motion (SfM)

SfM (Structure from Motion) は、静止したオブジェクトを、 周囲の複数の視点から撮影した多数の画像に対して次の処理を行う。

その結果、各画像の撮影位置と方向が推定されるとともに、オブジェクトの3次元点群が構成される。

SfM (Structure from Motion) の機能を持ったソフトウェアとしては、 MeshroomOpenMVG などがある。

Ubuntu での OpenMVG のインストールは 別ページ »で説明

関連項目3次元再構成 (3D reconstruction)MeshroomMulti View StereoOpenMVGOpenMVS

Multi View Stereo (MVS)

Multi View Stereo は、オブジェクトの特徴点である低密度の3次元点群と、オブジェクトを周囲から撮影した多数の画像から、高密度の3次元点群を生成する手法である。 色付き3次元点群を生成する場合もある。「Dense Reconstruction」ともいう。

MeshroomOpenMVS などのソフトウェアがある。 Ubuntu での OpenMVS のインストールは 別ページ »で説明

関連項目3次元再構成 (3D reconstruction)MeshroomOpenMVSStructure from Motion

3次元再構成 (3D reconstruction)

3次元再構成 (3D reconstruction) の機能をもつソフトウェアとしては、 COLMAPMeshroom がある。

関連項目COLMAPMeshroomMulti View StereoOpenMVGOpenMVSStructure from Motion

3次元姿勢推定 (3D pose estimation)

画像から物体検出を行うとともに、その3次元の位置と向きを推定する技術である。

関連項目Objectron

3次元の顔の再構成 (3D face reconstruction)

3次元の顔の再構成 (3D face reconstruction) は、 顔の写った画像から、元の顔の3次元の形状を構成することである。

3次元の顔の再構成には、次の2つの種類がある。

  1. 3次元の変形可能な顔のモデル (3D Morphable Model) について、そのパラメータを、画像を使って推定すること。 FaceRig などが有名である。
  2. dense vertices regression: dense は「密な」、vertices は「頂点」、regression は「回帰」を意味する。画像から、顔の3次元データであるポリゴンメッシュを推定する。

関連項目3DDFA_V2顔に関する処理

顔に関する処理

顔に関する処理には、次のようなものがある。

顔ランドマークの3次元化

ディープラーニングを用いて 顔ランドマーク (facial landmark) を3次元化する学習済みモデルが、次のページで公開されている。

https://www.adrianbulat.com/face-alignment

関連項目】 顔ランドマーク (facial landmark)

3DDFA_V2

3DDFA_V2 は、 3次元の顔の再構成 (3D face reconstruction) のうち dense vertices regression を行う手法の1つである。論文は 2020 年に発表された。

文献

Jianzhu Guo, Xiangyu Zhu, Yang Yang, Fan Yang, Zhen Lei, Stan Z. Li, Towards Fast, Accurate and Stable 3D Dense Face Alignment, ECCV 2020.

https://arxiv.org/pdf/2009.09960v2.pdf

関連する外部ページ

Google Colaboratory での 3DDFA_V2 のオンライン実行

次のページでは、Google Colaboratory で実行できるプログラムコード、プログラム利用ガイド、プログラムコードの説明などを示している。

URL: https://www.kkaneko.jp/ai/intro/3ddfav2.html

【概要】本記事では、3DDFA_V2 フレームワークを用いた3次元顔モデル生成プログラムについて解説する。単一の顔画像から3次元形状を復元し、OBJ/PLY形式で出力する技術を Google Colab 環境で提供する。

Colab のページ(ソースコードと説明): https://colab.research.google.com/drive/1fNfAdCRxnxxcxj9mH7lFVsP-uz4DAWoV?usp=sharing

関連項目3次元の顔の再構成顔に関する処理

PARE

PARE は、3次元人体姿勢推定(3D human pose estimation)の手法である。 オクルージョン(遮蔽)の問題に対処するために、 Part Attention REgressor (PARE) が提案されている。 multi person tracker を用いて実装されており、画像中に複数の人物が存在する場合にも動作する。

PARE のデモプログラムの実行結果を次に示す。

この実行結果を得るためのもととなる動画: kaneko_sample_video.mp4

実行結果の動画: kaneko_sample_video__result.mp4

関連項目3次元姿勢推定 (3D pose estimation)、 3D human pose estimation、 YOLOv3、 multi person tracker

Google Colaboratory での PARE のインストールと事前学習済みモデルのダウンロードとデモの実行

次のコマンドやプログラムは Google Colaboratory で動く(コードセルを作り、実行する)。

  1. Google Colaboratory で、ランタイムのタイプを GPU に設定する。
  2. 次を実行する。
    !rm -rf PARE
    !git clone https://github.com/mkocabas/PARE.git
    %cd PARE
    !apt-get update
    !apt-get -y install libturbojpeg0
    !pip3 uninstall -y torchtext panel datascience
    !pip3 install -U -r requirements.txt
    !bash scripts/prepare_data.sh
    !python3 scripts/demo.py --vid_file data/sample_video.mp4 --output_folder logs/demo
    
  3. 下図のように、/content/PARE/logs/demo/sample_video_ の下に結果ができる。
Ubuntu での PARE のインストールとデモの実行

前準備:Python のインストール: 別ページで説明している

  1. Ubuntu でインストールを行うには、次のコマンドを実行する。
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install git
    
    cd /usr/local
    sudo rm -rf PARE
    sudo git clone https://github.com/mkocabas/PARE.git
    sudo chown -R $USER PARE
    
    # システム Python の環境とは別の Python の仮想環境(システム Python を使用)を作成
    sudo apt update
    sudo apt -y install python3-venv
    python3 -m venv ~/a
    source ~/a/bin/activate
    
    cd /usr/local/PARE
    sudo apt -y install libturbojpeg0
    sed -i 's/opencv-python==4.1.1.26/opencv-python/g' requirements.txt
    pip install -U -r requirements.txt
    pip install -U numba
    
  2. 事前学習済みモデルのダウンロード
    source scripts/prepare_data.sh
    
  3. デモの実行
    python scripts/demo.py --vid_file data/sample_video.mp4 --output_folder logs/demo
    
  4. 下のように、logs/demo/sample_video_ の下に結果ができる。

    出来た動画を表示すると、次のように表示される。

Objectron

Objectron は、3次元姿勢推定 (3D pose estimation) の機能を持つ。 Objectron は、次の公式ページで、プログラムとデータセットが配布されている。

https://github.com/google-research-datasets/Objectron

次は、Objectron の動作画面である。

Objectron は、Google Colaboratory で動かすことができる。 Google Colaboratory で動かすときは、コードセルに、次の3行を貼り付けて実行する。 あとは、公式ページのプログラムのコピー&ペーストで動く。

!pip3 install frozendict
!git clone --recursive https://github.com/google-research-datasets/Objectron
%cd Objectron

関連項目Objectron データセット3次元姿勢推定 (3D pose estimation)

DreamGaussian

DreamGaussian は、3Dコンテンツ生成のフレームワークであり、画像から3Dモデルを生成する(Image-to-3D)タスクと、テキストから3Dモデルを生成する(Text-to-3D)タスクの2つに対応している。既存手法である Neural Radiance Fields(NeRF)は高品質な結果を得られるものの、計算時間が長いという課題があった。DreamGaussian は、3Dガウシアンスプラッティングを用いることで、メッシュ抽出とUV空間でのテクスチャ精緻化を効率的に行う。このアプローチにより、既存の NeRF ベースの手法よりも高速な3Dコンテンツ生成を実現している。実験結果では、DreamGaussian が Image-to-3D と Text-to-3D の両方のタスクにおいて既存手法よりも高速であることが確認されている。

文献

Jiaxiang Tang, Jiawei Ren, Hang Zhou, Ziwei Liu, Gang Zeng, DreamGaussian: Generative Gaussian Splatting for Efficient 3D Content Creation, arXiv:2309.16653v1, 2023.

https://arxiv.org/pdf/2309.16653v1.pdf

関連する外部ページ

Instant NGP(Instant Neural Graphics Primitives)

NVIDIA が 2022 年に提案した,マルチ解像度ハッシュエンコーディングを用いてニューラルグラフィックス表現の学習を高速化する手法である。NeRFSDF,ニューラル画像などのタスクにおいて,GPU 1台での高速な学習(NeRF の場合で数秒程度)を実現した。

文献

Thomas Müller, Alex Evans, Christoph Schied, Alexander Keller, Instant Neural Graphics Primitives with a Multiresolution Hash Encoding, ACM Transactions on Graphics (SIGGRAPH), vol. 41, no. 4, 2022.

https://arxiv.org/abs/2201.05989

GitHub のページ: https://github.com/NVlabs/instant-ngp

関連項目NeRFnerfstudio

Neural Implicit Representation(ニューラル陰関数表現)

3次元形状やシーンを,ニューラルネットワークによる連続的な陰関数として表現する枠組みである。座標を入力として SDF の値や占有確率,色などを出力するネットワークを学習することで,従来のメッシュ・ボクセル・点群と異なる連続的な表現が可能となる。NeRF や DeepSDF はその代表例である。

関連項目NeRF符号付き距離関数(SDF)

Shap-E

Shap-E は、テクスチャ付きメッシュ (textured mesh) や Neural Radiance Fields としてレンダリング可能な出力を生成する機能を持つ。 Point-E との比較では、高速かつ高品質の生成が可能であるとされている。

文献

Heewoo Jun, Alex Nichol, Shap-E: Generating Conditional 3D Implicit Functions, arXiv:2305.02463, 2023.

https://arxiv.org/pdf/2305.02463v1.pdf

サイト内の関連ページ

Shap-E のインストールと動作確認(テキストや画像からの立体生成)(Python、PyTorch を使用)(Windows 上)

関連する外部ページ

OpenCV

OpenCV は、実時間コンピュータビジョン (real time computer vision) のアルゴリズムと文書とサンプルコードの集まりである。

【関連する外部ページ】

【サイト内の関連ページ】

関連項目】 OpenCV Python、 OpenCV のサンプルデータ、 OpenCV のインストールと、C++ プログラムの実行

OpenGV

OpenGV は、 Absolute camera pose computation、 Relative camera-pose computation、 Two methods for point-triangulation、 Arun's method for aligning point clouds の機能を持つ。 Matlab、Python のインタフェースを持つ。

URL: https://laurentkneip.github.io/opengv/

論文: L. Kneip, P. Furgale, "OpenGV: A unified and generalized approach to real-time calibrated geometric vision", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China, May 2014.

Ubuntu での OpenGV のインストール

Ubuntu でインストールを行うには、次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui libeigen3-dev

cd /usr/local
sudo rm -rf opengv
sudo git clone --recursive https://github.com/laurentkneip/opengv
sudo chown -R $USER opengv
cd opengv
sudo rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX="/usr/local/opengv" \
    -DBUILD_PYTHON=ON \
    -DBUILD_TESTS=OFF ..
sudo cmake --build . --config Release --target install -- -j4

libpointmatcher

Iterative Closest Point (ICP) の機能を持ち、 点群 (point cloud) のアラインメントを行うことができる。 point-to-point の ICP と、point-to-plane の ICP の機能を持つ。 point-to-point の ICP では、剛体変換だけでなく、スケールの変更にも対応している。

関連項目】 K 近傍探索 (K nearest neighbour)、 ICP

Windows での libpointmatcher のインストール

ソースコードからビルドする。

https://github.com/CAOR-MINES-ParisTech/libpointmatcher/blob/master/doc/CompilationWindows.md の手順に従う。

  1. Windows では、前準備として次を行う。
    • Build Tools for Visual Studio 2026(ビルドツール)のインストール

      Build Tools for Visual Studio 2026(ビルドツール)のインストールを行い、C/C++ コードのビルド環境を整える。

      [Build Tools for Visual Studio 2026(ビルドツール)のインストール手順を見るには、ここをクリック]

      Windows での Build Tools for Visual Studio 2026 のインストール

      Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである。インストール済みの場合,この手順は不要である。

      以下のコマンドは、Build Tools が未インストールの場合は winget で新規インストールし、インストール済みの場合は setup.exe modify でコンポーネントを追加する(バージョンは変更しない)。

      インストールコマンドの実行方法

      管理者権限コマンドプロンプトを起動する(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

      REM VC++ ランタイム
      winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
      
      REM ============================================================
      REM Visual Studio Build Tools + Desktop development with C++
      REM (VCTools、MSBuildTools、CMake連携、Clang、Windows 11 SDK)
      REM ============================================================
      REM 進行中のインストーラーを停止(ロック競合回避)
      taskkill /F /IM vs_setup.exe /T >nul 2>&1
      taskkill /F /IM vs_installer.exe /T >nul 2>&1
      taskkill /F /IM vs_installerservice.exe /T >nul 2>&1
      
      REM 未インストール時: winget で新規インストール
      REM インストール済み時: setup.exe modify でコンポーネント追加(バージョンは変更しない)
      winget list --id Microsoft.VisualStudio.BuildTools 2>nul | findstr /i "BuildTools" >nul 2>&1
      if %ERRORLEVEL% EQU 0 (
          for /f "usebackq delims=" %P in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools -property installationPath`) do start /wait "" "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "%P" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended --quiet --norestart --nocache
      ) else (
          winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
      )
      
      REM 破損時の修復(任意、動作がおかしくなった場合)
      REM "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" repair --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --quiet --norestart
      
      REM 導入確認(インストールパスが表示されれば正常)
      "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath
      

      上記のコマンドでは、Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし、続いて以下のコンポーネントを追加している。

      • VCTools:C++ デスクトップ開発ワークロード(--includeRecommended により、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)
      • MSBuildTools:MSBuild によるビルドツールのワークロード
      • VC.CMake.Project:Windows 向け C++ CMake ツール
      • VC.Llvm.Clang:Windows 向け C++ Clang コンパイラ
      • VC.Llvm.ClangToolset:MSBuild から Clang を使用するための clang-cl ツールセット
      • Windows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)

      上記以外の追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。

      インストール完了の確認

      winget list Microsoft.VisualStudio.BuildTools

      Visual Studio を必要とするとき

      Visual Studio の機能を必要とする場合は,追加インストールできる。

    • Git のインストール: 別項目で説明している。

      Git の公式ページ: https://git-scm.com/

    • cmake のインストール: 別項目で説明している。

      CMake の公式ダウンロードページ: https://cmake.org/download/

    • Boost のインストール
    • Boost のバージョンとインクルードディレクトリの確認

      次のコマンドで確認する。ここで確認したことは、のちほど使用する。

      dir "c:\boost\build\include"
      
    • Eigen 3 のインストール
    • libnabo のインストール
  2. インストール

    以下のコマンドを管理者権限x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)で実行する   (手順:スタートメニュー →Visual Studio 20xx」の下の「x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)」 → 「管理者として実行」)。

    エラーを回避するために「/bigobj」を設定する。

    c:\libpointmatcher にインストールされる。

    boost-1_86」のところは、先ほど確認したインクルードディレクトリに一致させること。

    cd /d c:%HOMEPATH%
    rmdir /s /q libpointmatcher
    git clone --recursive https://github.com/ethz-asl/libpointmatcher
    cd libpointmatcher
    rmdir /s /q build
    mkdir build
    cd build
    del CMakeCache.txt
    rmdir /s /q CMakeFiles
    cmake -A x64 -T host=x64 ^
        -DCMAKE_BUILD_TYPE=Release ^
        -DCMAKE_INSTALL_PREFIX="c:/libpointmatcher" ^
        -DEIGEN_INCLUDE_DIR="c:/eigen/include/eigen3" ^
        -DBoost_USE_STATIC_LIBS=ON ^
        -DBOOST_ROOT="c:/boost/build" ^
        -DBoost_INCLUDE_DIR="c:/boost/build/include/boost-1_86" ^
        -DBoost_DIR="c:/boost/build" ^
        -Dlibnabo_DIR="%LOCALAPPDATA%/libnabo/build" ^
        -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
        -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8 /bigobj" ^
        -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8 /bigobj" ^
    ..
    msbuild /m:2 libpointmatcher.sln -p:Configuration=Release
    
Ubuntu での libpointmatcher のインストール

ソースコードからビルドする。

公式ページの https://github.com/CAOR-MINES-ParisTech/libpointmatcher/blob/master/doc/CompilationWindows.md の手順に従う。

  1. 前準備

    libnabo のインストールが必要である。

  2. インストール

    Ubuntu でインストールを行うには、次のコマンドを実行する。

    /usr/local/libpointmatcher にインストールされる。

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install libboost-all-dev libeigen3-dev git cmake cmake-curses-gui cmake-gui
    
    cd /tmp
    sudo rm -rf libpointmatcher
    git clone --recursive https://github.com/ethz-asl/libpointmatcher
    sudo chown -R $USER libpointmatcher
    
    cd /tmp/libpointmatcher
    mkdir build
    cd build
    cmake \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_INSTALL_PREFIX="/usr/local" \
        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    ..
    make
    sudo make install
    

3次元スキャン(3D Scanning)

実物体の形状をセンサで計測し,3次元デジタルデータとして取得する技術である。

立体視(Stereoscopy)

視差のある2枚以上の画像を用いて奥行きを知覚させる技術である。

視差画像(Parallax Image)

異なる視点から撮影・レンダリングされた複数の画像であり,立体視に使用する。

3次元ソフトウェア・ツール

Blender

Blender は、3次元コンピュータグラフィックス・アニメーションソフトウェアである。 3次元モデルの編集、レンダリング、光源やカメラなどを設定しての3次元コンピュータグラフィックス・アニメーション作成機能がある。

関連項目bpy (blenderpy)yuki-koyama の blender-cli-rendering

Windows での Blender のインストール

Windows での Blender のインストールは、複数の方法がある。

Ubuntu での Blender のインストール

Ubuntu での Blender のインストールは、別ページ »で説明

Blender のモーショントラッキング機能

次の動画は、Blender のモーショントラッキング機能を用いた映像作成について説明している。

https://www.youtube.com/watch?v=lY8Ol2n4o4A

次の動画は、作成された映像、グリーンバックの映像である。

https://www.youtube.com/watch?v=FFJ_THGj72U

bpy (blenderpy)

bpy (blenderpy) では、Blender が Python モジュールになっている。

関連項目Blenderyuki-koyama の blender-cli-rendering

Windows での bpy (blenderpy) のインストール(PyPI を使用)
PyPI の bpy は Blender 本体に含まれる Python バージョンと対応している。使用できる Python のバージョンは bpy のバージョンにより異なるため、PyPI の公式ページで確認すること。

https://pypi.org/project/bpy/ の記載により、PyPI の bpy (blenderpy) のインストールを行う。

  1. 次のページで、必要な Python のバージョンを確認する。

    https://pypi.org/project/bpy/

  2. いま確認したバージョンの Python がインストールされていないときは、 Python のインストールを行う。Python のインストールは別ページで説明している
  3. コマンドプロンプトを管理者として開き、次のコマンドを実行する。

    -3.11」のところには、 いま確認した Python のバージョンを指定する。

    py -0p
    py -3.11 -m pip install -U pip numpy bpy
    bpy_post_install
    
  4. インストールできたことの確認

    -3.11」のところには、 いま確認した Python のバージョンを指定する。

    エラーメッセージが出ていなければ OK。

    py -3.11 -c "import bpy; print(bpy.app.version_string)"
    

yuki-koyama の blender-cli-rendering

bpy (blenderpy) を使うときに便利なソフトウェアのライブラリと、そのサンプルプログラムと、各種のアセット。

  1. 前準備

    Git のインストール: 別項目で説明している。

    Git の公式ページ: https://git-scm.com/

  2. yuki-koyama の blender-cli-rendering のダウンロード
    mkdir c:\pytools
    cd c:\pytools
    rmdir /s /q blender-cli-rendering
    git clone https://github.com/yuki-koyama/blender-cli-rendering
    
  3. 確認のため Blender の Cycles レンダラーを用いてレンダリングを行う。

    Windows のコマンドプロンプトで、 次を実行する。

    Windows で Python のバージョンを指定したいときは、 「python」でなく「py -3.11」のように実行すること。 「-3.11」のところには、使用する Python のバージョンを指定する(バージョンが分からないときは「py -0」で調べる)。
    cd c:\pytools
    cd blender-cli-rendering
    python
    
  4. その後、次の Python プログラムを実行する。
    import bpy
    import utils
    
    # scene
    utils.clean_objects()
    scene = bpy.data.scenes["Scene"]
    monkey = utils.create_smooth_monkey(location=(0, 0, 1))
    plane = utils.create_plane(size=20.0)
    camera = utils.create_camera(location=(5, -3, 3))
    utils.add_track_to_constraint(camera, monkey)
    
    # light
    light = utils.create_sun_light(rotation=(0.3, -1.5, 1.2))
    
    # rendering
    utils.set_output_properties(scene, 20, 'c:/pytools/02')
    utils.set_cycles_renderer(scene, camera, 16)
    bpy.ops.render.render(write_still=True)
    

    次の画像ができる。

  5. その後、次の Python プログラムを実行する。
    import os
    import bpy
    import utils
    
    # scene
    utils.clean_objects()
    scene = bpy.data.scenes["Scene"]
    monkey = utils.create_smooth_monkey(location=(0, 0, 1))
    plane = utils.create_plane(size=20.0)
    camera = utils.create_camera(location=(5, -3, 3))
    utils.add_track_to_constraint(camera, monkey)
    
    # light
    working_dir_path = os.path.abspath('.')
    hdri_path = os.path.join(working_dir_path, "assets", "HDRIs", "green_point_park_2k.hdr")
    utils.build_environment_texture_background(scene.world, hdri_path)
    
    # rendering
    utils.set_output_properties(scene, 20, 'c:/pytools/03')
    utils.set_cycles_renderer(scene, camera, 16)
    bpy.ops.render.render(write_still=True)
    

謝辞:この項目に記載のソースコードは、 https://github.com/yuki-koyama/blender-cli-rendering/ で公開されているものを改変して使用している。

関連項目bpy (blenderpy)Blender

MeshLab

MeshLab は、3次元データ(3次元点群データや、メッシュデータ)について表示、簡易編集、データの間引き、形式変換、張り合わせ、分割、解析などが行えるソフトウェアである。

URL: https://www.meshlab.net/

関連項目メッシュ簡略化 (Mesh Simplification)メッシュ平滑化 (Mesh Smoothing)

Windows での MeshLab のインストール

Windows での MeshLab のインストールには、複数の方法がある。次のいずれかによりインストールできる。

Ubuntu での MeshLab のインストール

Ubuntu での MeshLab のインストール: 別ページ »で説明

CloudCompare

3次元点群データとメッシュデータの表示・編集・比較・処理を行うオープンソースのソフトウェアである。点群同士の距離計算,レジストレーション,フィルタリング,セグメンテーションなどの機能を持ち,測量・リバースエンジニアリング・研究用途で広く用いられる。

公式ページ: https://www.cloudcompare.org/

関連項目3次元点群データMeshLab

3DF Zephyr Free

3DF Zephyr Free は、フォトグラメトリのソフトウェア 3DF Zephyr の無料版である。

関連項目フォトグラメトリMeshroom

Meshroom

Meshroomフォトグラメトリのソフトウェアである。 Structure from Motion を、GUI を用いて簡単に行うことができる。 動作画面の一部は次のとおりである。 カメラの撮影位置と、オブジェクトの3次元形状が表示されている。

Meshroom の URL(ここから Meshroom をダウンロード可能): https://alicevision.org/

関連項目3次元再構成 (3D reconstruction)OpenMVG、 OpenMMLab、 Structure from Motion (SfM)

COLMAP

COLMAP は、3次元再構成の機能を持ったソフトウェアである。

文献

Johannes L. Schönberger, Jan-Michael Frahm, Structure-From-Motion Revisited, CVPR 2016, 2016.

https://openaccess.thecvf.com/content_cvpr_2016/papers/Schonberger_Structure-From-Motion_Revisited_CVPR_2016_paper.pdf

サイト内の関連ページ

関連する外部ページ

OpenMVG

OpenMVGStructure from Motion の機能を持つソフトウェアである。

OpenMVG が持っている Structure from Motion (SfM) の機能に、 Global Structure from Motion がある。 Global Structure from Motion は、 多数の視点からの画像を使う SfM において、視点の位置と向きを(当時の手法よりも)より頑健かつ正確に推定できるとされている。 (その論文: P. Moulon, P. Monasse and R. Marlet, "Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion," 2013 IEEE International Conference on Computer Vision, 2013, pp. 3248-3255, doi: 10.1109/ICCV.2013.403. https://www.researchgate.net/publication/261622957_Global_Fusion_of_Relative_Motions_for_Robust_Accurate_and_Scalable_Structure_from_Motion

Windows での OpenMVG のインストール

Windows での OpenMVG のインストールは、複数の方法がある。

ここでは、 vcpkg を使う方法と、 ソースコードからビルドする方法を説明する。

OpenMVG (2021/08/21 時点) Windows 10 64 ビット版の非公式ビルド: openMVG.zip

私がビルドしたもの、非公式、無保証、ソースコードを改変せずにビルドした。OpenMVG の MPL2 ライセンスによる。

Ubuntu での OpenMVG のインストール

Ubuntu でインストールを行うには、次のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui libeigen3-dev

cd /usr/local
sudo rm -rf openMVG
sudo git clone --recursive https://github.com/openMVG/openMVG.git
sudo chown -R $USER openMVG
cd openMVG
cd src
sudo rm -rf build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX="/usr/local/openmvg" ..
sudo cmake --build . --config Release --target install -- -j4
デモプログラム

デモプログラムとして、 所定の画像データセットをダウンロードし、SfM を実行する Python プログラムが付属している。

Windows では次の手順で行う。

cd c:\openMVG\src
python build\software\SfM\tutorial_demo.py

デモプログラムの実行でできるファイルのうち、ply 形式ファイルの1つを MeshLab を用いて表示すると次のようになる。色付きの3次元点群である。

Global Structure from Motion を行う

いくつかのコマンドを順に実行する。 Windows では次のような手順で行う。

rem 画像の準備、ImageDataset_SceauxCastle\images に画像を置くためのプログラム
cd c:\openMVG\src
mkdir ImageDataset_SceauxCastle
mkdir ImageDataset_SceauxCastle\images
copy .\build\software\SfM\ImageDataset_SceauxCastle\images\*.JPG ImageDataset_SceauxCastle\images

echo 1. Intrinsics analysis
.\build\Windows-AMD64-Release\Release\openMVG_main_SfMInit_ImageListing -i ImageDataset_SceauxCastle/images/ -d openMVG/exif/sensor_width_database/sensor_width_camera_database.txt -o ImageDataset_SceauxCastle/matches/

echo 2. Compute features
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeFeatures -i ImageDataset_SceauxCastle/matches/sfm_data.json -o ImageDataset_SceauxCastle/matches/

echo 3. Compute matches
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeMatches -i ImageDataset_SceauxCastle/matches/sfm_data.json -o ImageDataset_SceauxCastle/matches/ -g e

echo 4. Do Global reconstruction
.\build\Windows-AMD64-Release\Release\openMVG_main_GlobalSfM -i ImageDataset_SceauxCastle/matches/sfm_data.json  -m ImageDataset_SceauxCastle/matches/ -o ImageDataset_SceauxCastle/outReconstruction/

echo 5. Colorize Structure
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeSfM_DataColor -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -o ImageDataset_SceauxCastle/outReconstruction/colorized.ply

echo 6. compute final valid structure from the known camera poses, Structure from Known Poses (robust triangulation)
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeStructureFromKnownPoses -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -m ImageDataset_SceauxCastle/matches/ -f ImageDataset_SceauxCastle/matches/matches.e.bin -o ImageDataset_SceauxCastle/outReconstruction/robust.bin
.\build\Windows-AMD64-Release\Release\openMVG_main_ComputeSfM_DataColor -i ImageDataset_SceauxCastle/outReconstruction/robust.bin -o ImageDataset_SceauxCastle/outReconstruction/robust_colorized.ply

最後の処理でできた、色付きの3次元点群のファイル(ply 形式ファイル)を MeshLab を用いて表示すると次のようになる。

続けて、次を実行する。上の結果を、OpenMVS を用いて処理している。実行には OpenMVS のインストールが必要である。

参考ページ: https://openmvg.readthedocs.io/en/latest/software/MVS/OpenMVS/ (公式の資料)

.\build\Windows-AMD64-Release\Release\openMVG_main_openMVG2openMVS -i ImageDataset_SceauxCastle/outReconstruction/sfm_data.bin -d ImageDataset_SceauxCastle/outReconstruction/ -o ImageDataset_SceauxCastle/outReconstruction/scene.mvs
DensifyPointCloud ImageDataset_SceauxCastle/outReconstruction/scene.mvs
ReconstructMesh ImageDataset_SceauxCastle/outReconstruction/scene_dense.mvs
TextureMesh ImageDataset_SceauxCastle/outReconstruction/scene_dense_mesh.mvs

デモプログラムの実行でできるファイルのうち、ply 形式ファイルの1つを MeshLab を用いて表示すると次のようになる。色付きの3次元点群である。

OpenMVS

OpenMVS は、Multi View Stereo の機能を持ったソフトウェアである。

関連項目MeshroomMulti View StereoOpenMVG

Windows での OpenMVS のインストール

Windows での OpenMVS のインストールは、複数の方法がある。

ここでは、 vcpkg を使う方法を説明する。

  1. 事前に vcpkg のインストールを行っておく。
  2. コマンドプロンプトを管理者として開き、次のコマンドを実行する。
    c:\vcpkg\vcpkg search openmvs
    c:\vcpkg\vcpkg install openmvs[cuda,openmp]:x64-windows
    
  3. システムの環境変数 Path に、次を加える
    c:\vcpkg\installed\x64-windows\bin
    

Open3D

Open3D は、3次元データに関する種々の機能を Python、C++ から扱うことができるソフトウェアである。 次の機能を持つ。

Windows での Open3D のインストール

https://www.open3d.org/docs/release/compilation.html に記載の手順による。

  1. Windows で、管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー > cmd と入力 > 右クリック > 「管理者として実行」)。
  2. pip を用いて、Open3D のインストール
    python -m pip install -U open3d
    

    関連ファイルのインストールを行いたいので、下に書いた手順を進める。

  3. Windows では、前準備として次を行う。
    • Build Tools for Visual Studio 2026(ビルドツール)のインストール

      Build Tools for Visual Studio 2026(ビルドツール)のインストールを行い、C/C++ コードのビルド環境を整える。

      [Build Tools for Visual Studio 2026(ビルドツール)のインストール手順を見るには、ここをクリック]

      Windows での Build Tools for Visual Studio 2026 のインストール

      Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである。インストール済みの場合,この手順は不要である。

      以下のコマンドは、Build Tools が未インストールの場合は winget で新規インストールし、インストール済みの場合は setup.exe modify でコンポーネントを追加する(バージョンは変更しない)。

      インストールコマンドの実行方法

      管理者権限コマンドプロンプトを起動する(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。

      REM VC++ ランタイム
      winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
      
      REM ============================================================
      REM Visual Studio Build Tools + Desktop development with C++
      REM (VCTools、MSBuildTools、CMake連携、Clang、Windows 11 SDK)
      REM ============================================================
      REM 進行中のインストーラーを停止(ロック競合回避)
      taskkill /F /IM vs_setup.exe /T >nul 2>&1
      taskkill /F /IM vs_installer.exe /T >nul 2>&1
      taskkill /F /IM vs_installerservice.exe /T >nul 2>&1
      
      REM 未インストール時: winget で新規インストール
      REM インストール済み時: setup.exe modify でコンポーネント追加(バージョンは変更しない)
      winget list --id Microsoft.VisualStudio.BuildTools 2>nul | findstr /i "BuildTools" >nul 2>&1
      if %ERRORLEVEL% EQU 0 (
          for /f "usebackq delims=" %P in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools -property installationPath`) do start /wait "" "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "%P" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended --quiet --norestart --nocache
      ) else (
          winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
      )
      
      REM 破損時の修復(任意、動作がおかしくなった場合)
      REM "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" repair --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --quiet --norestart
      
      REM 導入確認(インストールパスが表示されれば正常)
      "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath
      

      上記のコマンドでは、Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし、続いて以下のコンポーネントを追加している。

      • VCTools:C++ デスクトップ開発ワークロード(--includeRecommended により、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)
      • MSBuildTools:MSBuild によるビルドツールのワークロード
      • VC.CMake.Project:Windows 向け C++ CMake ツール
      • VC.Llvm.Clang:Windows 向け C++ Clang コンパイラ
      • VC.Llvm.ClangToolset:MSBuild から Clang を使用するための clang-cl ツールセット
      • Windows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)

      上記以外の追加のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。

      インストール完了の確認

      winget list Microsoft.VisualStudio.BuildTools

      Visual Studio を必要とするとき

      Visual Studio の機能を必要とする場合は,追加インストールできる。

    • Git のインストール: 別項目で説明している。

      Git の公式ページ: https://git-scm.com/

    • cmake のインストール: 別項目で説明している。

      CMake の公式ダウンロードページ: https://cmake.org/download/

    • Eigen 3 のインストール
    • Python のインストール: 別項目で説明している。
  4. Open3D 関連ファイルのインストール

    エラーを回避するために「/utf-8」を設定。

    python -m pip install -U --ignore-installed numpy scikit-image
    cd /d c:%HOMEPATH%
    rmdir /s /q Open3D
    git clone --recursive https://github.com/isl-org/Open3D
    cd Open3D
    del CMakeCache.txt
    rmdir /s /q CMakeFiles
    cmake -A x64 -T host=x64 ^
      -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8" ^
      -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8" ^
      -DCMAKE_INSTALL_PREFIX="c:/Open3D" .
    cmake --build . --config Release --target ALL_BUILD
    cmake --build . --config Release --target INSTALL -- /m
    
  5. 確認のため Open3DViewer を起動してみる。

    起動ができれば OK とする。

    c:\Open3D\bin\Open3DViewer.exe
    

nerfstudio

NeRF をはじめとするニューラル輻射場の研究・開発を行うためのオープンソースフレームワークである。複数の NeRF 系手法(Instant NGP,Nerfacto など)を統一的なインタフェースで利用でき,学習・可視化・書き出しの機能を提供する。

公式ページ: https://docs.nerf.studio/

GitHub のページ: https://github.com/nerfstudio-project/nerfstudio

関連項目NeRFInstant NGP

PyTorch3D

公式ページ(GitHub): https://github.com/facebookresearch/pytorch3d

Google Colaboratory での PyTorch3D のインストール

次のコマンドは Google Colaboratory で動く(コードセルを作り、実行する)。

  1. Google Colaboratory で、ランタイムのタイプを GPU に設定する。
  2. PyTorch3D のインストール
    !pip3 install -U "git+https://github.com/facebookresearch/pytorch3d.git"
    import pytorch3d
    print("PyTorch3D import OK")
    

SDL

SDL は、「Simple DirectMedia Layer」の略で、 次の機能などを持つマルチメディアライブラリである。

3次元グラフィックス・カードは、OpenGL を経由して使用する。 SDL は、種々の OS (Linux、Windows、macOS、FreeBSD など) で動作する。 SDL は C 言語で書かれ、C++ からも使用可能である。Java、Perl、PHP、Python などの種々の言語からも使用できる。

【関連する外部ページ】

SDL の公式ページ: https://www.libsdl.org/

Windows での SDL のインストール

Windows での SDL のインストール: 別ページ »で説明

SDL の非公式ビルド: sdl.zip

私がビルドしたもの、非公式、無保証、 公式サイト https://github.com/libsdl-org/SDL で公開されているソースコードを改変せずにビルドした。 Windows 10、Build Tools for Visual Studio 2022 を用いてビルドした。 SDL のライセンスによる。

zip ファイルは C:\ 直下で展開し、C:\sdl での利用を想定。

GPU(Graphics Processing Unit)

GPU は、グラフィックス・プロセッシング・ユニット(Graphics Processing Unit)の略である。高い並列計算能力を持ち、3次元コンピュータグラフィックス、3次元ゲーム、動画編集、科学計算、ディープラーニングなど、並列処理が必要な幅広い分野で活用されている。

Mixamo

キャラクタと動きのアセットを公開しているサイトである。fbx 形式でダウンロードできる。

URL: https://www.mixamo.com

関連項目】 3次元コンピュータグラフィックス、human pose、human motion

Twinmotion

Twinmotion は、Unreal Engine を用いて実装されたリアルタイム3次元可視化ソフトウェアである。 3次元メッシュ(Wavefront OBJ、FBX)のインポート、 3次元点群データのインポート、高さマップ(r16、PNG)のインポート、 OpenStreetMap との連携、人物の配置、波の表現、空の表現などの機能がある。

関連項目】 Unreal Engine

3次元地理情報・VR/AR

高さマップ(Height Map)

地形の標高をピクセルの輝度値で表現した2次元画像データである。

GeoTIFF

地理座標情報を埋め込んだTIFF画像形式であり,地理情報システムで広く使用される。

投影座標系(Projected Coordinate System)

地球の曲面を平面に変換するための座標系である。

EPSG コード

座標参照系を一意に識別する数値コードである。

OpenStreetMap

誰でも編集可能なオープンデータの地図プロジェクトである。

ESRI Shape 形式

地理情報システムで使用されるベクタデータのファイル形式である。

地図タイル(Map Tile)

地図画像を格子状に分割した個々の画像片であり,Web地図で広く使用される。

標高タイル(Elevation Tile)

標高データをタイル状に分割して提供する形式である。

VR(Virtual Reality,仮想現実)

コンピュータで生成された仮想空間に利用者を視覚的・聴覚的に没入させる技術である。

AR(Augmented Reality,拡張現実)

現実の映像や視界にデジタル情報を重畳して表示する技術である。

WebVR

Webブラウザ上でVRコンテンツを扱うために提案された技術仕様である。現在は後継の WebXR Device API が主に用いられる。

サイドバイサイド表示(Side-by-Side Display)

VR用に左右の目に対応する2つの映像を並べて表示する方式である。

マーカーベースAR(Marker-based AR)

特定のマーカー画像を認識してデジタル情報を重畳表示するAR手法である。

パノラマ表示(Panorama Display)

全方位の画像を球面状に表示し,視点を自由に変えられる表示方式である。

ゲームエンジン・データセット

3次元ゲームエンジン (3-D game engine)

3次元ゲームエンジン (3-D game engine) の機能を持つソフトウェアとしては、 Godot、Open 3D Engine、Unreal Engine、Panda3D などがある。

Unity

Unity Technologies が開発した3次元ゲームエンジンである。2次元・3次元ゲーム開発,インタラクティブなシミュレーション,VR/AR コンテンツ制作などに用いられる。C# によるスクリプティングをサポートし,Windows・macOS・Linux・iOS・Android・各種コンソール・XR デバイスなど多様なプラットフォームに対応する。

公式ページ: https://unity.com/

関連項目3次元ゲームエンジン、 Unreal Engine

Open 3D Engine

Open 3D Engine は、オープンソースの3次元ゲームエンジンである。Amazon の Amazon Lumberyard の後継である。

Open 3D Engine の URL: https://github.com/o3de/o3de

Windows での Open 3D Engine のインストール: 別ページ »で説明

Panda3D

Panda3D は、オープンソースのソフトウェアであり、3次元ゲームエンジン (3-D game engine)、可視化、シミュレーションの機能を持つ。

Panda3D の URL: https://www.panda3d.org/

Godot Engine

MIT ライセンスで公開されているオープンソースの3次元ゲームエンジンである。2次元・3次元の両方に対応し,独自のシーンとノードによる構造,GDScript と呼ばれる Python 系スクリプト言語,C# や C++ による拡張をサポートする。

公式ページ: https://godotengine.org/

GitHub のページ: https://github.com/godotengine/godot

関連項目3次元ゲームエンジン

Panda3D のインストール

サイト内の関連ページ

アクタ(Actor)

ゲームエンジンにおけるシーン内の基本オブジェクト単位である。

ブループリント(Blueprint)

Unreal Engine におけるノードベースのビジュアルプログラミングシステムである。

レベルブループリント(Level Blueprint)

Unreal Engine において特定のレベル(ステージ)に紐づくブループリントである。

シーン遷移(Scene Transition)

ゲーム内の場面切り替えを管理する仕組みである。

イベントハンドラ(Event Handler)

キーボード・マウスなどの入力イベントに対する処理を定義する仕組みである。

アセット(Asset)

ゲームやCGで使用されるモデル・テクスチャ・音声などの素材データである。

ロジックエディタ(Logic Editor)

ゲームオブジェクトの振る舞いをビジュアルに編集するツールである。

Human 3.6M データセット

ディープラーニングにより姿勢推定を行うためのデータとして利用できる。

利用には、 https://vision.imar.ro/human3.6m/register.php での申請を必要とする。

http://vision.imar.ro/human3.6m/description.php

Catalin Ionescu, Dragos Papava, Vlad Olaru and Cristian Sminchisescu, Human3.6M: Large Scale Datasets and Predictive Methods for 3D Human Sensing in Natural Environments, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 36, No. 7, July 2014.

KITTI データセット

カラーのカメラ、モノクロのステレオカメラ、3次元レーザースキャナなどのさまざまなセンサーのデータから構成される。

http://www.cvlibs.net/datasets/kitti

【関連情報】

関連項目】 オープンデータ、 物体検出

ScanNet データセット

Dai らが 2017 年に公開した,屋内シーンの RGB-D 動画データセットである。1,513 の屋内シーンにおける 250 万枚以上のビューを含み,3次元カメラ姿勢・表面再構成データ・セマンティックセグメンテーションのアノテーションが付与されている。3次元シーン理解や3次元セマンティックセグメンテーションのベンチマークとして用いられる。

文献

Angela Dai, Angel X. Chang, Manolis Savva, Maciej Halber, Thomas Funkhouser, Matthias Nießner, ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes, CVPR 2017.

https://arxiv.org/abs/1702.04405

公式ページ: http://www.scan-net.org/

関連項目3次元再構成、 セマンティック・セグメンテーション

LS3D-W データセット

LS3D-W データセットは、3次元の顔ランドマーク (facial landmark) のデータセットである。

これは、AFLW、300VW、iBUG 300-W、FDDB の顔画像から生成されたデータセットである。

利用には、 https://www.adrianbulat.com/face-alignment での申請を必要とする。

生成手順については、次の文献に記載されている。

Bulat, Adrian and Tzimiropoulos, Georgios, How Far Are We from Solving the 2D & 3D Face Alignment Problem (and a Dataset of 230,000 3D Facial Landmarks), International Conference on Computer Vision (ICCV), 2017. https://openaccess.thecvf.com/content_ICCV_2017/papers/Bulat_How_Far_Are_ICCV_2017_paper.pdf

関連項目顔ランドマークの3次元化

Objectron データセット

Objectron データセット は、15000 のビデオと 400 万の画像を含む。 これらはバイク、本、ボトル、カメラ、シリアルボックス、椅子、カップ、ラップトップ、靴といったカテゴリでアノテーションされている。 Objectron データセットには、ビデオ、画像、オブジェクトの姿勢、カメラの姿勢、点群、平面のデータが含まれている。 各ビデオは同じオブジェクトを異なる角度から観察している。

関連する外部ページ

公式の GitHub のページ: https://github.com/google-research-datasets/Objectron

関連項目Objectron

Objectron データセットのインストール(Windows 上)
  1. まず、gsutil のインストールを行う。
    cd /d c:%HOMEPATH%
    curl -L -O https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe
    .\GoogleCloudSDKInstaller.exe
    
  2. Windows では、 コマンドプロンプトを管理者として開き、 次のコマンドを実行することにより、 データセットのダウンロードを行うことができる。
    cd /d c:%HOMEPATH%
    mkdir records_shuffled
    gsutil cp -r gs://objectron/v1/records_shuffled records_shuffled
    

Photo Tourism データセット

Photo Tourism データセットは次の URL で公開されているデータセット(オープンデータ)である。

http://phototour.cs.washington.edu/datasets/

【関連情報】

ShapeNet データセット

ShapeNet データセットは、3次元 CAD モデルのリポジトリである。

ShapeNet データセットは次の URL で公開されているデータセット(オープンデータ)である。

URL: https://shapenet.org/

【関連情報】