MRが楽しい

MRやVRについて学習したことを書き残す

AzureKinectから取得したカラー画像とデプス画像を使ってBlenderで立体を再構築する その1(テクスチャの反映)

本日は AzureKinect と Blender の調査枠です。
AzureKinect から取得したカラー画像とデプス画像を使って Blender で立体を再構築してみます
f:id:bluebirdofoz:20191031092110j:plain

カラー画像とデプス画像を取得するツールは k4a_mkv2image を利用します。
github.com

k4a_mkv2image のビルド手順は前回記事を参照ください。
bluebirdofoz.hatenablog.com

k4a_mkv2imageでカラー画像とデプス画像を取得する

初めに k4a_mkv2image を使って AzureKinect の記録ファイル(*.mkv)からカラー画像とデプス画像を取得します。
k4a_mkv2image.exe の配置ディレクトリに記録ファイル(*.mkv)をコピーしてShift+右クリックで PowerShell を開きます。
f:id:bluebirdofoz:20191031092143j:plain

以下のコマンドを実行します。必ず"-t=true"オプションを付与します。
こうすることでデプス画像がカラー画像と同じサイズで出力され、位置合わせが行われた状態で出力されます。

.\k4a_mkv2image.exe -i=".\OFFICE_SAMPLE_WFOV_UNBINNED.mkv" -t=true

f:id:bluebirdofoz:20191031092154j:plain

出力したカラー画像とデプス画像から対応する1枚を取得します。
f:id:bluebirdofoz:20191031092206j:plain

Blenderのプロジェクト作成

次に立体を再構築するための Blender プロジェクトを作成します。
デフォルトの Cube は削除し、カラー画像とデプス画像を反映する平面メッシュを追加します。
この平面メッシュが画像を反映するスクリーン代わりとなります。
f:id:bluebirdofoz:20191031092216j:plain

回転と拡大縮小を使ってスクリーンの向きとサイズを調整します。
オブジェクトのトランスフォームは変えたくないので[編集モード]で実施します。
今回出力した画像ファイルは 1920x1080 の 16:9 比だったので、縦軸を 0.5625 倍してスクリーンも 16:9 比にしました。
f:id:bluebirdofoz:20191031092227j:plain

カラー画像の反映

まずはカラー画像を反映します。
変更を見た目で確認するため、[3Dビューのシェーディング]を[ルック開発]に切り替えておきます。
メッシュの[マテリアル]タブを開き、マテリアルを指定したら[ベースカラー]に[画像テクスチャ]を指定します。
f:id:bluebirdofoz:20191031092239j:plain

[画像テクスチャ]の[開く]ボタンをクリックし、カラー画像を指定します。
これでカラー画像の反映は完了です。
f:id:bluebirdofoz:20191031092250j:plain

デプス画像の反映

次にデプス画像を反映します。
まずは変形のためのメッシュの頂点数を増やします。この頂点数が変形時のポリゴンの解像度になります。
[モディファイア]タブを開きます。
f:id:bluebirdofoz:20191031092301j:plain

[モディファイアの追加]のプルダウンを開き、[サブディビジョンサーフェス]を選択します。
f:id:bluebirdofoz:20191031092311j:plain

モディファイアが追加されたら[細分化アルゴリズムのタイプ]を[シンプル]に設定します。
(デフォルトの[カトマルクラーク]ではスクリーンが変形してしまいます)
更に細分化の[ビューポート:]の数値を上げて、頂点数を増やします。今回は[9]としました。
画面下の情報で現在の頂点数と面数が分かります。
f:id:bluebirdofoz:20191031092321j:plain

このスクリーンにデプス画像を反映します。
再び[モディファイアの追加]のプルダウンを開き、[ディスプレイス]を選択します。
f:id:bluebirdofoz:20191031092332j:plain

[ディスプレイス]モディファイアが追加されます。
テクスチャの[新規]ボタンをクリックし、その横のテクスチャ表示ボタンをクリックします。
f:id:bluebirdofoz:20191031092357j:plain

すると新規作成した[テクスチャ]タブが開くので、[画像]パネルの[開く]ボタンからデプス画像を開きます。
f:id:bluebirdofoz:20191031092407j:plain

画像を開くとプレビューが読み込まれます。
デプス画像はカラー情報ではなく、16bitの深度情報を持った画像ファイルです。
[色空間]の設定を[sRBG]から[NonColor]に変更することで、16bitの深度情報が取得できます。
f:id:bluebirdofoz:20191031092415j:plain

再び[モディファイア]タブに戻ります。
[ディスプレイス]モディファイアの各項目を以下の通り変更します。
・テクスチャ座標:[UV]
・中間レベル:[0.00]
・強さ:[-64.0]
f:id:bluebirdofoz:20191031092426j:plain

テクスチャ座標を[UV]にすることで、カラー画像と同様にUV展開に基づいたマッピングになります。
中間レベルはデプスの 0 情報が Y:0.00 の位置に合うように[0.00]としています。
強さはデプス画像の深度情報に掛け合わせる係数です。今回は実測を元に凡そ適切と思われる数値を設定しました。
f:id:bluebirdofoz:20191031092438j:plain

このままだとノイズやデプスの欠如部分が多すぎるので、次回はノイズ部分を削除します。
bluebirdofoz.hatenablog.com