フォト

Google AdSense

  • AdSense
無料ブログはココログ

« なかなか良さそう | トップページ | NG »

2008.05.07

イメージベースドモデリング・・・というほどのものではないけど

深度マップをメッシュに貼り付けて立体化することについてちょっと考えていた小ネタを試してみました。

I
クリックすると大きなサイズになります

グレースケールでもなんでもいいんですが、上のような深度マップがあったとします。この時に輝度値が高さだとします。これをメッシュに貼り付けると下のような感じですね(一応、起伏がついてるのがわかるように2視点で)。

Height001
クリックすると大きなサイズになります

Height005
クリックすると大きなサイズになります

わりとこのblogでよくやってるディスプレースメントマッピングですね。

Height004
クリックすると大きなサイズになります

でも、よくよく考えると黒いところは(一応、高さ"0")イランのですよね。α値を入れて見えなくするという逃げ道もあるんですが、Geometry Shaderなら黒い部分はポリゴンレベルで消せるじゃないかとおもってやってみたのが下。

Height002
クリックすると大きなサイズになります

Height006
クリックすると大きなサイズになります

黒と白の境界がちょっと汚いのですが一応、GSで頂点の削除が出来てます。削除の条件は単純に高さの値を見てるだけですね。GSでテクスチャを参照して、そこにマッピングされるテクスチャの値によってプリミティブを作らないというだけです。

荒いのは、ワイヤーフレームが見やすいように64x64頂点のグリッドにマッピングしたせいですね。もうちょっと頂点を増やして256x256にすると下記。

Height003
クリックすると大きなサイズになります

Height007
クリックすると大きなサイズになります

頂点数を増やすと荒さが当然、減りますね。境界部分に関しては、実際にはGSで頂点増やして綺麗にしてもいいでしょうね。今回は、静的なメッシュに貼ってまして、荒さを目立たせなくするには貼り付けるメッシュを細かくすればいいわけですが、GSのポテンシャルを考えると単純に頂点を増やすよりもNVIDIAやMicrosoftのサンプルなんかであるSubdivision Surfaceを実装してもいいかもしれませんね。まぁ、綺麗にする方法は色々とアイデアがあるかと思います。

ちなみに、どうしてこんな実験をしてるかというと先日紹介したZCamのようなカメラがあって、深度画像からメッシュを作りたいと言う場合に役立つだろうな・・・ということで試してみました。

You Are the Interface!
ZCam™, 3DV's Depth-Sensing Camera
http://www.siggraph.org/s2008/attendees/newtech/3.php

あと、もう一つおまけの話ですが、メッシュ構築後はそのままStream Outputで頂点バッファに書き戻しを行うことでジオメトリの再利用が出来ますね。たとえば、衝突処理などをしたい場合に重宝しそうですね。

最近、Direct3D10向けのキャプチャテクスチャのプログラムを書きましたが、イメージとジオメトリ処理をうまく連携させたいいうのがあるんですよね(ジオメトリ処理は色々と出来るはずなのにあんまりやってないのももったいないですし)。

« なかなか良さそう | トップページ | NG »

Programming」カテゴリの記事

画像付き」カテゴリの記事

コメント

写真から3次元形状を作成するプログラムを作っています。
作成した3次元形状CAD・CAM・CGに読み込めるDXF・IGES・STL・MQOやインターネットで公開できるVRMLに出力できます。
よろしければご覧ください。
http://www3.plala.or.jp/SolidFromPhoto

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« なかなか良さそう | トップページ | NG »