コモングラウンド・リビングラボ UE4移植

コモングラウンド・リビングラボ UE4移植

テクニカルアート室のK.Tです。
シリコンスタジオはこの度、コモングラウンド・リビングラボにゴールドメンバーとして参画することになりました。

コモングラウンドは、物理的な実世界と、全てがデジタル化された世界がシームレスにつながる次世代都市共想の為の、実装・実証を行う世界初の共同実験場です。
賛同企業が2025年大阪・関西万博を見据え、大阪に建設されたリビングラボで共同実験、コラボレーションしていきます。

デジタル化された世界の実現にゲームエンジンは不可欠です。
今回コモングラウンド・リビングラボ セミオープンにあたり、リビングラボのRhinocerosデータのUE4への移植、質感付け、ライティングを担当させて頂きました。
今回はセミオープン用の試作ということで、10日程度でできるところまでということでした。全てに手が回っているわけではないですし、基礎的な工程ばかりですが、どのような手順で制作したか説明していきたいと思います。

使用ソフト:Blender Maya UnrealEngine4 4.25 Photoshop

頂いたデータは.3dm拡張子のデータでした。RhinocerosやCADで用いられているものです。私が使用しているMayaには直接読み込めない為、FBXにするべくBlenderにコンバートしてもらいました。

Blenderもデフォルトでは.3dmのデータは読めません。読み込みができるようになるアドオンのインストールが必要です。
import_3dmというアドオンをインストールすると.3dmの読み込みと書き出しができるようになります。
編集 > プリファレンス > アドオンから検索してインストールします。

画像に alt 属性が指定されていません。ファイル名: image-9.png

.3dmがインポートから読み込めるようになります。

これが大阪にできたラボの全貌です。
Blenderネイティブなら、このままデータ整理してUE4に持っていけると思いますが、私はBlenderがどうもアレなのでFBXにしてMayaへ移行します。

追加で頂いた屋根部分も読み込みました。
目立って破損している部分がなかった為、Mayaではオブジェクトのグループ分け、UV展開、マテリアルの割り当てを行っていきます。

最初横着な私はごっそりいったろうかと思い、建物全部を1つのFBXにしてUE4に読み込みましたが、謎のライティング結果が出たので即止めました。
床に影が落ちない。
噂には聞いていましたが、UE4はパーツ別に読み込んで組み立ててほしいようです。

パーツをグループ分けしました。部屋ごとと、大きい屋根はとりあえず別に。
だいぶざっくりですが、これくらい分ければUE4も許してくれそうです。
UE4で移動したり配置したりしないので、グループのピボット位置は原点に。

モデルの修正は不要でしたが、無駄な頂点が隠されていたのでMerge Verticesで隣接する頂点をまとめ、不要な頂点をなくしました。
何時何処でどれがどんな地雷を踏むかわからないので、必要最小データになるようHistoryも消して、Freeze Transformationsして、Optimize Scene Sizeしちゃいます。

1つのマテリアルで制御したいところには、同じマテリアルを割り当てます。
マテリアルの設定はUE4で行うので、MayaではしなくてOK。書き出したFBXにマテリアルの情報も入っていたので、それに倣って整理しました。

UVはマテリアルを共有しているオブジェクト間で、スケールがバラつかないように気を付けて展開します。同じ木目が同じサイズで貼れるよう、UVで調整します。

オブジェクト整理、グループ分け、UV展開、マテリアルの割り当てが終わったので、グループごとにFBXで書き出します。
これでMayaでの作業は終了。UE4に移行します。

UE4で行うのは質感付けとライティングです。

早速Mayaから書き出したFBXをUE4に読み込みます。
グループ内には複数オブジェクトが入っているので、CombineMeshesにチェックして1つにまとめてインポートします。

読み込んだ部屋を確認してみると、自動でUE4に展開してもらったライトマップ用UVが何だか、、、少ない。

ライトマップ用UVの自動展開をやり直します。
詳細 > LOD 0タブ > 最小ライトマップ解像度をとりあえず256
> 宛先ライトマップインデックスに新規のUVチャンネル数を割り当て
> 変更を適用
ライトマップ用UVを展開しなおしてくれました。

モデルの再読み込みの度にライトマップ用UVの展開のし直しが必要そうだったので、ライトマップ用UVはMayaで展開してしまうことにしました。
Mayaで展開したチャンネルを、詳細 > 基本設定 > Light Map Coordinate Indexで割り当てると、読み込んだUVをライトマップ用UVとして使ってくれます。

読み込んだオブジェクトを配置しました。
マテリアルを設定します。今回の建物のほとんどが白壁、木、コンクリートの床、ガラスで構成されているので、まずその4つを用意してオブジェクトに割り当てていきます。

私はまず元となるマテリアルを作り、それをマテリアルインスタンスで複製して、複製したマテリアルインスタンスにtextureを割り当てています。
元となるマテリアルが下図のものです。

basecolorではガンマと色の乗算、textureの置き換えが出来るようにしてあります。
その他は強度とtextureの置き換え。全てのtextureを1つのUVでまとめています。
Normalmapは空だとエラーがでるので、青一色の捨てtextureを入れています。

このマテリアルをマテリアルインスタンスで複製するとこんな感じ。
ここにtextureを放り込んでちょっと調整すればだいたいの質感をカバーできるし、インスタンスなのでインタラクティブに調整が効き大変便利です。

ガラスは調整予定がないのでこのような感じに。

ざっくりマテリアルの割り当てができたので全体のライティングに移ります。

ライティングは物理ベースライティングです。
DirectionalLightのIntensityは100000
Atmosphere / Fog Sun Lightにチェックをし、SkyAtmosphereと紐づけます。
SkyAtmosphereはデフォルトの青だと白壁に空の青が影響してしまう為、アトモスフィア‐レイリーのReyleigh Scatteringの色を少しくすませました。

PostProcessVolumeのポストプロセスボリューム設定のInfinite Extentにチェック。PostProcessVolumeが特定範囲ではなく、レベル全体に効くようにします。
レンズ > Exposure > 測光モードをManual 露出を-5.5

結果はこんな感じ。
DirectionalLightの向きは室内にいい感じに光が入る角度にしました。

ガラスへの映り込みが不自然な所にボックス反射キャプチャを置きます。

室内には照明があるのでそれに合わせてライティングしていきます。

置きすぎました。しかも効いてくれない。

全ての屋内用ライトをスタティックにしましたが、効いてくれません。
一度屋内用ライトを全て選択し、ステイショナリーに変更 > スタティックに戻す > ライトが効く
という非常に気持ち悪いデータになってしまいました。申し訳ございません。何事。

ご時世ですし、案件開始から納品まで10日程度しかなかった為、現地に行くことは今回出来ませんでしたが、たくさんの写真とオンライン会議で現場案内して頂いたおかげで、ラボの雰囲気を把握することはできました。

残りのオブジェクトにマテリアルを付けてライトを置き完成です。

まだまだ手の付いていない箇所もありますが、セミオープン用にはこれで良しとなりました。
今後全体のブラッシュアップとコリジョンも設定し、コモングラウンド内で使用されていく予定です。
このデータの改良や、本格始動があり次第また報告させて頂きます。

コモングラウンド・リビングラボの活動にご興味がある方はこちらの公式サイトへ是非。
https://www.cgll.osaka/

以上!

この記事をシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です