皆様こんにちは。
ご無沙汰しております、ますくです。
新しい仕事もなかなかにハードで、家に帰れなかったり、職場に泊まったり、帰宅できてもバタンQでなかなか記事が更新できなかったりと…関係各所にご迷惑をおかけしておりますorz
だいぶ前から企画していた『誰にでも安価に作れる本格マテリアルスキャナー』企画ですが、昨年末の告知から大変長らくおまたせしてしまいました。ようやく念願叶ってその全容を紹介をして参りたいと思います。
これは、100均の素材で作成した装置と、普通のミラーレス(Sony α7rm2)と普通のマクロレンズ(SEL90M28G)で身近な布を撮影し、普通のLightroomで写真を切り出し、普通のSubstanceDesignerで質感再現をしたものです。
自分たちでも驚くほど良くスキャンできたと思います。
もちろん、必要な道具さえあれば誰にでもできる方法ですので、興味のある方には是非挑戦していただき、この感動を共有していただきたいです。
マテリアルスキャナーは夏休みの自由研究とかにぴったりかもしれません。
そんな小学生がいたら間違いなく親の介入を疑わられると思いますが\(^o^)/
謝辞)
尚、今回の企画にあたり、AsteriskLabのメンバーで、マテリアルやテクスチャのスペシャリストとして著者の本職にもアサインしていただいている@kerorin4410氏にご教授いただきました。いつもご協力いただきありがとうございます!
まずは、撮影装置の説明からです。
◆揃えるもの
マテリアルスキャナーは、マイクロサーフェス(物体表面の細かな凹凸)を取得することを主な目標としているため、8方向からライト光源を変えて撮影する必要があります。
そのため、絶対に必要になるものは、
①カメラ
②ライト
③カメラ固定用の三脚類
④画像処理ソフト
⑤SubstanceDesigner
となります。
最近のスマホカメラは優秀です。
カメラをスマホで済ませるならば、ほとんどの道具は100円ショップで揃ってしまいます。
ライト、
スマホ三脚、
スマホ固定用ラック、
スキャン用の台座
最小構成なら、500円以下で素材が揃ってしまいます。
著者の場合はカメラ機材を所持しているので、
タイリングの為に撮影箇所をわかりやすくするためのガイドや、
下から光を当ててオパシティ(透明度)を撮影するために、
スキャン用の台座のみ作成しました。
プラスチックのケース2つと、ライト拡散用のポリプロピレンの半透明の板を購入したので、約300円の出費です。
はじめは試行錯誤しながら取り組みましたが、最終的にはかなり洗練された状態で撮影できるようになりました。
欲を言えば、ライトが8方向から自動で切り替わる暗幕などを自作したいところですが、マイコン制御や回路設計などかなり難しそうなので、今後の課題とさせていただきます。
◆撮影台の詳しい作り方です。
2つのケースの中央に四角い穴を開け、
上のカゴには撮影後にずれた時に位置合わせしやすいようにマーカーを張り、
下のカゴには下からライトを当る時の為に拡散板を当て裏からテープで固定します。
最後に、ライトを下から当てられるように、箱の横にライト挿入用のドアを設置して完成です。
撮影時に2つのケースにスキャンしたい素材(布)を挟み込むことで固定し、
三脚でカメラを下向きに固定して撮影、といった具合です。
台座にはこの箱がオススメです。柔らかくて加工しやすいです。
プラスチックやアクリルの加工には、カッターは危ないのでアクリルカッターがオススメです。鉤爪で引っ掻いて削って、薄くなった部分を最後に折ったり切ったりする感じです。
100円ショップの材料は無限のポテンシャルを秘めています。
もしオリジナルのスキャナーを自作したら是非Twitterなどで教えて下さい。
◆実際に撮影していく!
それでは早速素材を撮影していきます。
まずは立体感のあり、タイリングしやすそうな布素材(難易度低そうなやつ)をスキャンしてみたいと思います。
撮影用の土台に乗せ、8方向からライトを当て、8枚の写真を撮影します。
何度でもいいますが、この時に、カメラや被写体がずれないことが大事です。
スマホならイヤホンシャッター、一眼ならレリーズやリモコン、遠隔操作用のアプリを使用することを強くおすすめします。
色味を厳密に合わせたい方は、カラーキャリブレーション用のカラーチェッカーも同じ環境で撮影しておくと良いです。
カラーチェッカーはかなり高いものなので、厳密に色を取得したい方以外は日強いかもしれません。特に今回使用したX-rightのはかなり高額ですorz
Lightroomなどの写真現像、編集用のソフトで色合わせをすることができます。
◆本編(データ処理編!
撮影後のデータ処理の話に入ります。
①正方形にトリミング
Lightroom等の画像編集ソフトで最初から正方形にトリミングしておきます。
これは、SubstanceDesignerの問題で、正方形画像以外の扱いが面倒くさいからです。
SubstanceDesignerに画像をインポートする前に、正方形にクロップすることをおすすめします。
Lightroomでトリミングすると、他の画像も同じ位置でクロップすることができます。PhotoshopやClipstudioでも構いませんが、Lightroomの方が複数写真をまとめて加工しやすいです。
②8方向からライトを当てた8枚の画像を読み込みしますが、撮影時に時計回りに撮影するように心がけ、インポート後に時計回りになるように並べ直し順番を把握しておく必要があります。
③Multi-Angle to Albed ,
8方向の画像を一枚に合成してくれるノードです。
アルベドマップ、ノーマルマップ生成用のものが用意されています。
どの角度からでも良いですが、かならずライトが時計回りに動くようにインプットに接続し、Multi-Angleノードの詳細設定でどの角度から接続したか、開始角を指定します。
④Multi-Angle to Normal.
アルベド同様にノーマルマップも作成します。
⑤ハイト化 Normal to Hight
ノーマルマップから擬似的にハイトマップを作成します。
④Color Equalizer(平均化)
ライティングの未熟さによるグラデーションのむらを打ち消し、フラットにします。タイリングには必要な処理です。
⑥タイリング処理 Smart Auto tile(Albed、Normal、Hight)
Smart Auto tileは汎用性の高いタイルマップ用のノードで、緻密な位置調整を行いタイリングに違和感がないように調整します。
少し斜めをむいていたので、ここで縦横を揃え、違和感なくタイリングするようにパターンの継ぎ目を調整しました。
⑥ホライゾンベースドAO(HBAO)
此処から先は少し応用編なので、PBR用素材などを作る必要がなければやらなくても良いかと思います。
立体感を出すために、今回はAOマップを擬似的に作成していきます。
⑦ヒストグラムレンジで、ラフネス作ったり、スムースカバチャーで、ラフネス作ったりする(上手く混ぜてでっち上げ
その他、必要なテクスチャ類を作成していきます。
⑧メタルネスは、今回は布のスキャンなので単色の黒を入れておきます。
ちなみに最近知ったのですが、PBRでは真っ黒(メタルネスが全くない状態)はほぼないはずなのですが、真っ黒テクスチャを入れておくと描画エンジン側で勝手に0.4パーセントくらいに描画してくれるものが多いようですUnity,UE4,V-Ray等。
◆結果検証
こちらがスキャン前の洋服。
こちらがスキャンしたマテリアル。
いかがでしょうか、かなり満足の結果となりました。
Substanceでプロシージャルテクスチャ化することで、タイリングや色味の調整などが容易に行えるのも利点の一つです。
▼タイリング
▼カラー変更
◆応用編(オパシティについて)
オパシティ(透過)については少しだけ応用編です。
透過のある素材として、普段著者が使用しているボロボロのストールを使用しました。
前段と同じ方法で8方向から光を当てた8枚の写真を撮影した後、
透過を取りたい素材は下からライトを当て、もう一枚撮影します。
この時、撮影台や布が動かないように、しっかり固定することが重要です。
少しでもずれたらやり直しになってしまいます。
光に透かしてみると、光を全く透過しない繊維、光を透過する繊維、生地の隙間の3種類の状態があることがわかります。
HistgramScanノード
不透明な部分、半透明にする部分、しっかりと抜ける部分のメリハリをつけます。
Invert Glaysales
白黒を反転させます。多くのソフトの場合、存在するところが白色になるため、画像の白黒を反転させる必要があります。
Opacitymap
アウトプットノードを作成し、ビューに反映させます。しっかり透過したことが確認できるかと思います。
タイルマップにする都合上ストールの一部のグラデーションしか取得できませんでしたが、こちらもなかなか満足感の高い仕上がりとなりました。
如何だったでしょうか?
今回紹介させていただいたカメラ構成と、SubstanceDesignerのいくつかのノードを使用するだけで、誰でも8枚の写真からマテリアルスキャンをすることができるようになるかと思います。
◆課題感
マテリアルスキャンの取り組みを通して、今回の課題感としていくつか思うところがあったのでまとめてみました。
①明るい場所では撮影できないこと
→暗幕装置も今後作ったら便利
②本当の意味での質感(ラフネス/メタルネス)をスキャンすることは難しい
→ラフネスの取りようはありそうなので、デライトの話と合わせていずれ。
→メタルネスの判断は人がする必要がありそう。機械学習に期待。
③現状細かいスキャンディティールは人が目測で調整していく必要性がある
→アーティストの個性を反映できるとよく捉えることもできなくもない。
◆おまけ編(スマホでできる超簡単マテリアルスキャナー!)
こんな複雑なことをしなくても、誰でもスマホ一つで簡単にタイルマップを作成できるアプリがあります。
カラーから擬似的にノーマル生成をしているっぽいので精度は高くないですが、スマホアプリとして見ればその気軽さを加味してもかなり面白く、十分コンテンツ制作でも実用性もあるアプリだと思います。
機能制限はありますが、無料でも使えるので、今回の記事でマテリアルスキャンに興味を持っていただけた方がいらっしゃいましたらぜひ一度お試し下さい。
それでは、良いマテリアルスキャンライフを!
◆告知
毎度のことながら、直前の告知になってしまい大変申し訳無いのですが、
今回のマテリアルスキャンの内容と、+α(応用知識)を盛り込んだ内容の勉強会を2019/03/13に実施いたします!
私ますくはイベント企画や、資料作成などをさせていただいているイベントでして、
『AI×3DCGの未来』を模索するセッションイベントとなっております。
私自身が開発でAI技術を取り入れる必要が多くなってきたのですが、なかなか全容がつかめず困っていたところ、GPUEaterの中塚さんが弊社に協力してくださり、
「AIってなに?機械学習って何?3Dコンテンツ制作にどう活かしていけるの??」というテーマのもと、不定期で勉強会(ミートアップ)を開催する下りとなりました。
注)『AI』というと語弊があるのでDeeplearning、あるいは機械学習(奇怪学習)のほうが正しい表記なのだそうです。
先月行われた第一回目の勉強会には30人以上お越しいただき、
前段『プロシージャルって何?プロシージャルテクスチャについて』
後段『機械学習とは?GANってどんな種類、背景があるの?』
といった、今後のコンテンツ制作を先取りしまくったような内容でやらせていただき、イベントは盛況のうちに終わりました。
第二回は以下の通り。
今後も何回か続ける予定があるイベントなので、興味がある方は是非ご参加下さい。
それでは、失礼しました!!