CGcompo

3D、コンポジット、マッチムーブ、カメラ、撮影について色々書きます。

テクスチャスキャナー

TwitterやFacebookでご覧になっている方も多いかと思いますが、最近のR&Dとしてテクスチャスキャナーを作っています。
簡単にその仕組と成果物のレポートとして記事を上げたいと思います。

scan_08.jpg


何でこんなものを作っているのか?
一応自分はコンポジット、マッチムーブをメインとして仕事をしています。モデリングやテクスチャ作成は基本しません。
なのに何でテクスチャを撮影する装置を作るのか?
半分は自主的好奇心とR&D精神です。もう半分は物理的に正しく書かれたテクスチャと正しく撮影されたHDRIでレンダリングされたCGが渡されると非常に合成が楽で、本来の画作りに集中できるので映像クオリティUPにもつながるからです。

これらの物理要素を守ってテクスチャを書ける人は少ないです。もちろん感覚的にできている人見かけますし、最近ではMariやSubstance Painterなど最終的なシェーディング結果をリアルタイムに見れるペイントソフトの登場で感覚的に書くことも可能ですが。

そもそもで言うと、なぜ書けないか?ものによりますが特に金属などは物理的に正しい素材の色などは肉眼でも写真でも表面的にしか判断できないからです。なぜなら普通に見ている素材には常に反射やスペキュラー等の光の反射影響を受けていたりするからです。

これら反射やスペキュラ効果をなくして撮影出来るのが今回のテクスチャスキャナです。

こう言った撮影やリファレンス作成はリアル系を手掛ける大手ゲーム会社や、海外VFX業界ではかなり進められていたりします。

先日サービススタートしたQuixelのMEGASCANSと仕組みとしては同じことをやっています。

※>MEGASCANSの3DモデルなどははPhotogrammetryによるものなので少し異なります。


僕自身これらの手法を知っててもやっぱり活用することが少ないので情報共有としてまとめたいと思います。





まずテクスチャスキャナーとは何なのか?

CGにおけるテクスチャーの撮影が出来ます。Albedo(Diffuse)、Normal、Specular・Reflection、Transparencyマップが撮影(生成)出来ます
さらにこれらの要素からGloss、Displacement、Bump、AO、Mask(Opasitey)等も生成可能です。

scan_00.jpg

scan_01.jpg
アスファルトの水に濡れたあとの色味等も知ることが出来ます。

scan_02.jpg

scan_03.jpg
カラフルな布などでも正確なNormal mapが作成出来ます。

scan_04.jpg
透過のある素材の撮影も可能。

scan_05.jpg

scan_06.jpg

scan_07.jpg


普通に写真を撮るのと何が違うのか?
Albedo(Diffuse)、は反射、スペキュラのほぼない拡散反射のみのデータとして撮影出来ます。※以下Albedoに用語統一します。
Normalは普通に写真から生成できるソフトも多いですがこれで作成したものはかなり高精度に作成出来ます。
Specular・Reflectionは一部画像加工を含めていますが撮影対象によってはそのままReflectionマップ等に使えます。大体の場合はリファレンスとして使ったほうが無難ですが。
これらを加工することでGloss map等も作れると思います。MEGASCANSでも後加工によるもののようでした。


仕組みですが装置として一つにまとめていますが、大きく分けるとAlbedoとNormal map生成用の素材。の2つ要素の素材を撮影しています。 その他はその複製物であったり応用、後処理によるものになります。


先に一つ欠点を上げておきます。
ある程度平面的なものにしか対応出来ない。立体的なものはフレネル等の反射や2次反射も発生するのでAlbedoとしては精度が落ちます。また影等も出やすくなるので今回の装置には不向きです。




完成した撮影装置の説明

組み立てた状態で縦横約50cm、高さ45cmほどの撮影装置です。
撮影範囲は約A4サイズ(使用レンズや高さ調整である程度変更可能)
一眼レフを取り付け撮影。
電源は12V(モバイルバッテリーorアダプター)
ベースはアルミ材とスマホ用のごろ寝スタンドを改造して組み合わせたもの。
texscan02.jpg

ロータリースイッチにて照明の切り替え、レリーズによるシャッター操作が可能。
texscan03.jpg

テープLED(高演色Ra90+)を使用。
LEDの上に方向を統一した偏光フィルターを貼り付け。
カメラ側にはPLフィルターを使用。
texscan04.gif

PLフィルターの簡易脱着
texscan12.gif


各4方向と4方向+上の5パターンでの撮影が可能
texscan01.gif

折りたたみ可
texscan05.jpg





Albedo撮影
Albedo撮影は交差偏光撮影です。Cross polarization
仕組みは簡単でカメラに対して偏光フィルター(PLフィルター)、同じくライトに対しても偏光フィルターを挟むことで拡散反射した光のみが撮影されます。

金属などはこのような撮影をしないと基本、反射成分で構成されているのでAlbedoカラーを知ることが難しいです。
金属の場合完全に反射をなくして撮影するのは難しいのでリファレンスとしての扱いになると思います。
scan_09.jpg


レッツDIY!

効果をわかりやすく理解するためにも身近にある物を使って、簡単な工作でテストしてみましょう。

必要な物
・どこのご家庭でもたくさん転がっている3Dメガネ一つ(今回は大きく共通で手に入りやすいIMAXのものを使っています。)
IMAX01.jpg
・カメラ(スマホ等でも可)※レンズ経が3Dメガネのレンズより小さいもの推奨。
・ライト(カメラ搭載のフラッシュでも可)※3Dメガネのレンズより小さいもの

このタイプの3Dメガネのレンズ部分は偏光フィルターがはまっています。同じ偏光タイプでも左右で偏光方向が違ったり偏光の角度が違ったりするので同じ上映方式でないと共通で使えないように作られています。

1、3Dメガネのレンズを外します
薄いプラ板がはまっているので傷まない用に指で押し込むと外れます。
カバーを外したりカッターで切り取ったりでも何でもOKです。
以下外したレンズを偏光フィルターとします。
IMAX02.jpg


2、カメラのレンズとライトに外した偏光フィルターを付けます。
偏光フィルターの向きがポイントになります。※偏光がどういう現象なのかに関する説明は割愛しますよ。
重ねると暗くなりますね。この向きをキープできるようにします。
取り付けるものに応じてカットしても問題ありません。片目のフィルターのみを使う場合カメラとライトで90°回転させることで暗くなるかと思います。
※レンズにはPLフィルターがある場合PLフィルターでOKです。
IMAX06.gif


4、完成!
IMAX03.jpg


5、撮影
用意したライト(フラッシュ)意外の光源の無い暗い状態で撮影しましょう。
偏光フィルターの効果によって反射、スペキュラの無い撮影が出来ます。※一次反射のみ
IMAX04.jpg

ライトかカメラどちらかのフィルターを回転させることで偏光の効果を見ることが出来ます。
90°回転することでない状態とほぼおなじになります。もちろん外しても構いません。
IMAX05.jpg



実際の装置ではカメラ側にはPLフィルター(円偏光フィルター)、照明側には演色性の高いLEDと工作用偏光フィルターを使っています。※工作用の偏光フィルターは質が悪いものもあり、フィルターを通すことで色味が変わってしまいます。そう言う面では映画用の3Dメガネのフィルターの方が質的には良いのかもしれません?
※PLフィルターは円偏光なので裏表で挙動が異なります。目視で覗いたりするときはカメラ装着側から見ましょう。

液晶モニタにも表面に偏光フィルターが貼られているので簡易照明の一つとして使うことが出来ます。

また、応用としてPhotogrammetry式の3Dスキャンシステムにも偏光フィルタを使っている物があります。



現像
撮影はもちろんRAW撮影です。なので現像処理が必要になります。
記事を書いてる段階ではRawTherapeeを使い現像しています。

理由としてはDCRAWを使っていてカメラ特性を極力取り除いてリニアライズした画像が書き出せるためです。
レンズディストーションの補正とビネット補正等もしています。
同じ環境で撮影したものは一括処理しています。

現像後のデータは基本16bitで扱いたいためtifとPNGで書き出しています。(書き出し時の設定やソフトによってtifのデコード処理や読み込みエラーが出ることがあるのでその時PNGで扱っています)



色補正
撮影時は一番初めか最後にカラーチェッカーを撮影し、現像後これを元にキャリブレーションします。
演色性の高いライトで、フラットなライティングになっていれば比較的精度の高い色味にすることが出来ます。
texscan13.gif


カラー補正はリニア環境で行うため、Nukeを使い、フリーで公開されているGizmoのmmColorTargetを使い補正しています。
基本カラーチャートの基準値に合わせることで偏光撮影したデータはある程度物理的に正しい反射率を持った色味となります。

自宅ではNukeNC版なので解像度制限があります。なので、オープンソースのNatronで再構成、数値の移植をして書き出しています。

その他の処理も基本NukeとNatronを使っています。


また、PLフィルター有り無しで撮影する場合PLフィルターにはND効果が有るので一般的なPLフィルターであれば-1EVほどの減光が発生するのでその分の補正も必要です。
自分は露出計(照度計)にフィルター有り無しでEVの差分測定をして補正しています。


先日のCEDEC2016のセッションでの内村 創さんのスライドでは分光計測によるカメラと照明の高精度なキャリブレーション方法をされていました。
Color Science for Games(JP) from Hajime Uchimura





Normal map撮影
PhotometricStereoによる手法ですが、簡単に出来るのでxNormalを採用しています。これと上記偏光撮影を組み合わせることで精度の高いNormal mapを作れます。

1、各4方向からライティングして撮影した4枚の画像を用意します。
カメラは固定しておく必要があります。偏光撮影しない場合でも同ポジで真上からライトを当てたAlbedo用の画像も撮っておきます。
texscan06.jpg


2、xNormalを起動してPhotoNomalを選びます。
texscan07.jpg


3、撮影した画像をD&Dか右クリックメニューで読み込みます。
texscan08.jpg


4、Normal mapと書かれたウインドウで右クリックGenerateで生成出来ます。
パラメータの調整は素材に応じて。
texscan09.jpg


5、生成できたら右クリックメニューからSave normal map で保存したら完成です。
texscan10.jpg


生成すると分かると思いますが平面のはずの部分で上下左右にムラがあると思います。これは4光源で生成のため手法論的にどうしても発生してしまいます。
タイリング等に問題がある場合、生成後RとGチャンネルを補正することである程度補正も可能です。
※サンプルで掲載しているデータもいくつか補正しているものです。


The Order: 1886のメイキングでも同様の手法(12光源?で内製ツールで変換)で布の撮影をやっていますね。

Textile scanning acquisition from David Neubelt on Vimeo.



CEDEC2016のカプコンのセッションでも同様に16光源で内製ツールの事例があります。かなり大きめの撮影が出来る設備のようです。
http://cedec.cesa.or.jp/2016/session/VA/1342.html
https://cedil.cesa.or.jp/cedil_sessions/view/1545



Normal Map Camera
というスマホでノーマルマップ撮影の出来るアプリのベータ版も出ています。方法論としては同様です。
ベータ版に課金してみましたがスマホのカメラ性能が低い事を除いてもやっぱりそれなりクオリティですねぇ~
Diffuse/Normal
texscan11.jpg




Specular・Reflection・Gloss
Specular・Reflection・Glossはカメラ位置を変えずに偏光フィルターの有り無し(90°回転)で撮影した素材の差分になります。
texscan14.jpg

これらを加工しGloss Map等も作れると思います。このあたりまだ検証中のため良い答えは出てません。



Displacement・Bump・Cavity・AO map
Displacement、Bump map等はNormal mapからの生成になります。CrazyBumpを使っています。
Normal mapの精度が高いため、より精度の高い画像を生成出来ます。

DisplacementMapはNormal mapが16bitなので16bitで生成ができます。

Surface Mimicというテクスチャサイトでおそらく似たような手法で作られたテクスチャが販売されていますね。
http://www.surfacemimic.com

ZBrush等のスカルプト向けのブラシにも使えますね。



Transparency、Mask(Opasitey)
Transparency、Mask(Opasitey)は透過物の下からの照明の有無での差分になります。
照明には今回はipadを使っています。液晶パネルには偏光フィルターが使われているので余計な光をカットして透過により拡散反射している明かりのみを撮影することが出来ます。それとは逆の偏光フィルターの効果の無い状態のものを加工することでマスクを作ることも出来ます。
texscan15.jpg
偏光撮影でiPadによる下からのライティング有りと無しの差分(偏光撮影するとiPadの画面は偏光方向をあわせることで真っ暗になります。画像はわかりやすいようにフィルター無しの状態です)




今の課題点
LEDの明るさ不足>明るいほうがカメラの露出を絞れるので、ノイズが少なく、シャープな撮影が出来る。現状スローシャッター対応
PLフィルターの自動切り替え>PLフィルターの90°回転(今回のシステムでは脱着式になってますが)をさわらずに出来るとカメラが動いたりせずに良い。(現状動かないように気をつけてフィルター切替時、微妙に動いてしまうので後処理で補正)
現像フロー>現像処理と、キャリブレーションを効率良く出来るように。
タイリング処理>実用的に使うためにはタイリング処理が必要になる。
運用検証>実際どこまで使えるのか?リファレンスとしては十分?
より広範囲の撮影はできる装置、屋外でかんたんに使えるようより持ち運びが便利になれば。
など。



以上、誰かの何らかのお役に立てば。業界のレベルアップの一つになればと思います。




参考資料、サイト
Building a Portable PBR Texture Scanner http://rtgfx.com/pbr-texture-scanner/
Normal Map Photography http://www.zarria.net/nrmphoto/nrmphoto.html
TakingBetterPhotosForTexturesJP https://udn.epicgames.com/Three/TakingBetterPhotosForTexturesJP.html
Cross Polarization Photography http://www.wilkoff.net/cross-polarization-photography/
How To Split Specular And Diffuse In Real Images http://filmicgames.com/archives/233
xTex http://www.vizoo3d.com/index.html
Filter rotator motor for linear polarizer on a Canon 5D Mark III https://youtu.be/d_tJliwi7ik
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://cgcompo.blog134.fc2.com/tb.php/63-67831e6c
この記事にトラックバックする(FC2ブログユーザー)
; //

FC2Ad

//