2012年04月11日

1枚の写真からの単純な3次元形状復元について

1枚の写真から直方体を生成します。
単純な方法ですので、消失点が1点のものにしか使えません。

1.3次元形状が直方体1個で済む画像を探す
2.奥の平面を構成する4画素を選択する
3.この点はあるワールド座標にモデルビュープロジェクション行列を掛けた結果得られた座標と考え、画素値(Px,Py)を4次元座標(Vx, Vy, Vz, Vw)に変換する
Vx = 2.0*Px/width-1.0;
Vy = 2.0*Py/height-1.0;
Vz = 0.9; // 適当
Vw = 1.0; // 座標なので1.0
5.視点や視野角などを適当に決定し、モデルビュープロジェクション行列の逆行列を計算する
6.計算した逆行列を4頂点V0~V4に掛ければ、適当なワールド座標が求まる
7.面の法線方向に4頂点を移動させた所の4頂点(計8頂点)で直方体が完成
8.奥行きVzが等しいと仮定していたため、法線ベクトルを手動で動かして補正する
9.頂点座標とテクスチャ座標をファイルに出力する
テクスチャの座標は直方体を構成する面ごとに展開して線形補間しました。

実行画面
下記サイトの写真を使用させていただきました。
フリー写真素材 Futta.NET:http://www.futta.net/
マウスで4点をクリックしてキーボードで補正しています。


.objで出力して、Blenderで.xに変換してMMDで読み込んでみました。
カメラを動かすと破綻するので使い道がありませんね。
キューブマッピングなどを使っていないので浮いて見えますし。


歩きモーションは下記動画のものを使用させていただきました。
http://www.nicovideo.jp/watch/sm9554606
web拍手 by FC2
posted by シンドラー at 20:42 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。