371 Views
September 26, 19
スライド概要
2019/9/25-6に開催されたUnite Tokyo 2019の講演スライドです。
竹内 一生(ユニティ・テクノロジーズ・ジャパン合同会社)
小田桐 貴司(株式会社積木製作)
こんな人におすすめ
・建築・建設業界の方
・建築学科の学生
・建築CG・ビジュアライゼーション業界の方
受講者が得られる知見
・HDRPの表現手法
・フォトリアルなUnityシーンの製作手順
・3DモデルをUnityで如何に運用するか
Unityのイベント資料はこちらから:
https://www.slideshare.net/UnityTechnologiesJapan/clipboards
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
Unity Japan Office 制作の裏側 竹内 一生 ユニティ・テクノロジーズ・ジャパン合同会社 エヴァンジェリスト 小田桐 貴司 株式会社積木製作 産業向けVRクリエイター
OVERVIEW / プロジェクト概要
3
4
現地撮影から完成に至るまでの 「特別な魔法」 ではなく『根性』の話 建築CG・ビジュアライゼーション業界のデザイナー向け
積木製作 技術ブログ で 更に詳しくメイキングを公開しています http://tsumikiseisaku.com/blog/
— 現地撮影 — モデリング — ライティング — テクスチャ & マテリアル — 反射
現地撮影 — 点群計測 — フォトグラメトリー — テクスチャ素材 — ライティングリファレンス — その他多数
点群計測 “モデリングの下敷き”とするために クモノスコーポレーション様に依頼して点群を計測。 図面が受領できなかった、ダクト回りのモデリングには特に重宝。
フォトグラメトリー “家具モデリングの下敷き”とするために メーカーサイトにCADデータが存在しないものを フォトグラメトリーで3D化。 買い切り2万円弱とお手頃な「3DF Zephyr Lite」を使用。
テクスチャ素材 “グレーカード” と ”カラーチャート” を利用してRawデータで撮影。 カラー部分に大きめのグレーカードを切り貼りしておくと カメラでスポット測光するときに便利。
テクスチャ素材 撮影目標と同じ角度にカラーチャートを配置し グレーカードで測光して撮影。 ちょうど良い明るさで撮影できる。 ISO感度は可能な限り低く設定する。 高いとシャッタースピードを速くできるので 手ブレ抑制には良いがノイズが多くなる。
ライティングリファレンス “グレーカード” と共に、同じアングル明るさ違いをRawデータで撮影。 明るすぎ ~ 暗すぎ まで “EV値”を1段ずつ変えて数枚を撮影。
ライティングリファレンス EV値とは・・・撮影時の明るさの設定値。 絞り・シャッタースピード・ISO感度の組み合わせで決まる。 1段上がるごとに受光量が半分になる。 絞り2.8/感度200 に固定 シャッタースピードを 1・1/2・1/4・1/8・1/15・1/30・1/60・1/125・1/250・1/500 に変更 EV2 EV3 EV4 EV5 EV6 EV7 EV8 EV9 EV10 EV11
その他多数 • 図面で判明できない細かい寸法 • エッジ部分のR幅 • とにかくたくさん
モデリング — オフィス — 家具 — 設備・小物 — テクスチャ用UV — ライトマップ用UV
オフィス 受領した図面からシンプルに立ち上げた後 点群メッシュを重ね合わせて、大まかに修正していく。 600mm角のシステム天井がキレイ設置されているので 寸法の整合性を図るのに役立った。
オフィス 図面と点群データで寸法が分からない場所は 自ら計測して記録した写真をもとにモデリング。 ひたすら写真を見ながらベースを作りこみ。
オフィス ダクトは図面が無いので、点群メッシュと写真を頼りにモデリング。 梁・ダクト・吊りボルト・スプリンクラー・照明レールを大まかにトレース。 細かい配線や機器は、手間がかかりすぎるので無視。 トレースが出来たら頑張ってクオリティを上げる。
オフィス CGくさいハードエッジな見た目にさせないために 目立つ場所にある角部分のほとんどにベベル処理を施す。
オフィス 細かな隙間や溝などもモデルでしっかりと作りこむ。
家具 CADやフォトグラメトリーデータを下敷きにして、ゼロからモデリング。 形状が複雑なものは、3Dの下敷きがあった方が圧倒的に作業が楽。 テーブルは形状がシンプルなので図面からモデリング。
家具 目立つ角は全てベベル処理を施し シンプルかつ精細に頑張ってモデリングする。 シンプル = 不必要な場所に余計な分割を入れずデータの美しさを保つ 精細 = 必要な場所にポリゴンを割いて形状をしっかりと表現する
設備・小物 必ず図面が存在するので、撮影写真からメーカーと型番を割り出し シンプルかつ精細に頑張ってモデリング。 一つ一つを作るのは簡単だが、量を用意するのが大変。
テクスチャ用UV モノによって展開の仕方を変える。 Substance Painter で描き込む場合 ・0~1UV空間内にすべてを詰め込んで配置 ・凝った描き込みはできるが タイリングができないので寄りに弱い ・複数の素材からできている小物に多い
テクスチャ用UV シームレステクスチャを使用する場合 ・0~1UV空間内にすべてを詰め込む必要はない ・高解像度テクスチャを使えば接写にも耐えられる ・パターンが目立たないようにUVをランダムにずらす ・複数のオブジェクトで同一のテクスチャが使用できるように UVスケールをすべて合わせると良い ・リアルスケールが大きいものに多い 建物は大体これ
ライトマップ用UV とても大変な作業だが、クオリティに直結するので無視できない。 自動生成ではなく必ず手動で展開する。 ① UVをオーバーラップさせない ② 0~1空間内に収める ③ シェルの間隔を詰めすぎない ④ UVの切れ目は見えにくい場所にする ⑤ 整列された四角形ポリゴンの場合はUVを斜めに配置しない ⑥ UVシェルを繋げることが必ずしも良いとは限らない ⑦ 面の角度が大きく変わる角の部分にテクセルを密集させる
ライトマップ用UV 前項 ⑦ 面の角度が大きく変わる角の部分にテクセルを密集させる に ついて モデルの角はほとんどにベベル処理を施している。 ・CGくさいハードエッジな見た目を避けるため ・ライトマップテクセルのポリゴン横断を避けて 陰影を正しく生成するため 3種類の立方体で比較→
ライトマップ用UV ・角のベベル処理なし ・すべての面を離してUV展開 陰影はキレイだが角が硬すぎる
ライトマップ用UV ・角のベベル処理なし ・面を繋げてUV展開 ライトマップテクセルが面を横断 陰影が正しく表現できていない
ライトマップ用UV ・角のベベル処理あり ・角にテクセルを密集させる 正しい陰影で角も硬くない
ライティング — ライトマップ解像度 — アルベド値 — ライティングリファレンス — ライト設定 — EV値設定 — 照度調節
ライトマップ解像度 モデルをすべてUnityにインポート・配置したらStatic設定にして 1つ1つライトマップ解像度を設定していく。 特に“ベベル処理した角に十分なテクセルが詰まっているか”に注意し DCCツールとUnityとを行き来して、調整しながら進める。
アルベド値 ライティング作業前に、全オブジェクトにマテリアルを割り当てて アルベドカラーを設定する。 デフォルトの白のままはダメ 反射が強すぎる = 正しいライティング結果が得られない そもそも現場環境と違う 撮影したRaw画像からアルベド値を取得する。 単純にスポイトで色を調べるわけではない。 Raw画像に格納されている、何も味付けがされていない「リニアデータ」を取り出し カラーチャートを絶対的な基準として色を補正し、アルベド値を取得する。 統一化された正確な色を取得できる。 → 長い話になるので弊社の技術ブログで。
ライティングリファレンス Raw画像からリニアデータを取り出す。 色調整の必要はなく、取り出すだけで良い。
ライト設定 各照明モデルの位置にライトを配置。 建築VRの場合は、ほぼスポットかエリアライト。 商品情報から入手した色温度と照度を入力。 (照度は後に調整するので現時点ではアタリ) 影設定を有効化する。 Resolution はリアルタイムシャドウに必要な設定なので ベイク用ライトは特に変更する必要はない。
EV値設定 “EV値設定”ってつまりどういう事? 何のために? ・これまでの作業で「物体の色(反射率)」は正確に取得できている。 ・更にカメラのEV値(明るさ)をリファレンス撮影時のカメラに合わせる。 ライトの照度を調整するだけで 撮影した写真の見た目(リアルな世界の見え方)と Unityでもレンダリングの見え方を合致させることができる。
EV値設定 ポストプロセスでEV値を設定する。 HDRPでは、Post Processing Stack ではなく 同梱の専用ポストプロセスを使用する。 Volumeコンポーネントに「Exposure」をセットして リファレンス撮影時のカメラと同じ値を入力する。
照度調節 ライトのIntensityを変えながらベイクを繰り返して、適切な値を探る。 計算精度を下げておくと、トライ&エラーしやすい。 照度調整時 撮影した写真のリニアデータから 明るすぎず暗すぎない写真を選び 同じEV値をポストプロセスに設定。 最終
照度調節 とりあえずこれでベイクして、グレーカードの輝度を比べてみる。 約120 約130 つまり、あと10暗く見えるように、ライトを調整すれば良い。 全ての場所において写真と同じ輝度にすることは不可能だが およそ正しい見た目に近似させることはできるので 丁度良いバランスを目指してトライ&エラーを繰り返す。
テクスチャ&マテリアル — HDRP Litシェーダー — Litシェーダーのオ ス ス メ 機能 — Shader Graph
HDRP Litシェーダー Build-Inパイプラインで言うところの Standardシェーダー。 かなり高機能で、これ一つで大抵は何とかなる。 ・不透明 ・透明 ・屈折 ・異方性反射 ・ディスプレイス ・サブサーフェーススキャタリング etc...
Litシェーダーのオススメ機能 異方性反射 Tangent Map - 方向指定 Anisotropy Map - 適用範囲のマスク
Litシェーダーのオススメ機能 ディスプレイス Vertex displacement - 頂点変移 Pixel displacement - POM
Litシェーダーのオススメ機能 Override Baked GI Shader Graph による自作シェーダーで設定が可能。 ライトマップをマテリアル単位で編集して 再現しきれない陰影をテクスチャで追加。
Litシェーダーのオススメ機能 ベントノーマルマップ ノーマルマップとは別物。凹凸を表現するためのものではない。 ザックリ言うと、「どの方向が遮蔽されずに露出しているか」を記録したテクスチャ。 見た目は ノーマルマップにそっくり
Litシェーダーのオススメ機能 ベントノーマルマップ ・・・ 反射の遮蔽を表現できる。 ゲームエンジンの反射は基本キューブマップ。 「そこは奥の方だから、そんなに反射でないだろ」的な場所にも反射がでてしまう。 その不必要な反射を抑える効果がある。 見上げた時の反射に違いがある
Shader Graph Litシェーダーがとても優秀なので、基本的にはそれを使用。 Shader Graph で自作する場合 ・テクスチャごとに別のUVを使いたい ・デフォルトでは用意されていない Fabric Shader を使いたい ・Override Baked GI を使いたい
反射 — HDRP の Reflection Probe — Planar Reflection — 光源の反射
HDRPのReflection Probe 機能自体は Built-In のそれと変わらないが Forward/Deferredに関わらずピクセルブレンディングができ 影響範囲を軸ごとに細かく調整出来るので遥かに強力。
HDRPのReflection Probe 「反射を出す」ことも大事だが 「遮蔽箇所の反射を抑える」ことも、とても大事。 本コンテンツでは50個ほど配置している。
Planar Reflection リアルタイム平面反射が簡単に設定できる。大きなガラスに効果てきめん。 ただし、かなり重い処理なので使用には注意が必要。
光源の反射 「反射の見え方」は「リアルっぽく」見えるか見えないかの重要な要素。 特に、反射した光源に高い輝度があるかどうか、が重要。
皆様お待たせいたしました!
UnityJapanOfficeは…
フリー素材です!
Publish / 公開 Publish / 公開 Publish / 公開 59
各種データDL先 http://aec.unity3d.jp/ #UnityJapanOffice 60
Unity Project Data AssetStoreにて配信 https://assetstore.unity.com/packages/3d/environments/unityjapanoffice-152800 61
62 http://aec.unity3d.jp/?post_type=topics&p=711
建築セッション まだ終わりません
64
Thanks 65