ウーパの手習い

私的開発メモ用途なのでご容赦ください。2020年現在はSwiftとUnityでARのお勉強中。

Unityアセットレビュー:ArchVizPRO Interior Vol.5

f:id:uuupacom:20180514173609p:plain

フォトリアルなインテリアのモデルアセットです。家具の質感がすごい綺麗です。私は過去いくつかの家具アセットを購入しておりますが、その中でもこのパブリッシャーさんのアセットが一番綺麗なのではないかと思います。ちなみに同じシリーズのVol.3も過去に購入しています。

その分ファイルサイズも重いのでアセットを一式インポートするだけでも私の環境で10分ぐらい時間がかかります。また、描画負荷も高いので、そこそこのスペックのPCでないと厳しいかもしれません。

とはいえ、同梱されているサンプルシーンのままのVRChatワールドも見たことがあるので、軽量化処理を頑張れば、このクオリティのVRChatワールドも作れるんだなと驚かされました。

assetstore.unity.com

 とにかくこのパブリッシャーのインテリアアセットはマテリアルの品質が高いです。

f:id:uuupacom:20180514200829p:plain

f:id:uuupacom:20180514200848p:plain

f:id:uuupacom:20180514200905p:plain

金属製のドアなどに接近した時に見える引っ掻き模様や指紋、壁紙のシワ感、その他すべてのオブジェクトのマテリアル&テクスチャがぬかりなく作成されています。

アセットを調査するための準備

Unityで新規プロジェクト作成。ArchVizPROアセットをインポートすると、ArchVizPRO_InfoというPDFファイルが同梱されているので開いて確認しましょう。そのPDFがマニュアルになっているので指示に従います。抜粋すると以下の通り。

  • Character Controllerをインポートする [Asset/Import Package/Character]
  • Post Processing Stackをインポートする
  • ArchVizPROアセットの中には、QualitySettings.zipファイルが同梱されているので、解凍したQualitySettings.assetファイルを、Unityプロジェクトディレクトリ内のProjectSettingsディレクトリ内にあるQualitySetting.assetファイルを上書きする

 

f:id:uuupacom:20180514165542p:plain

QualitySetting.assetを上書きすることで、Edit>Project Settings>Qualityのインスペクタに、上のような設定項目が表示される。上の設定は、デスクトップ表示品質の設定。つまり一番綺麗に表示させたい場合は上記設定がいいということだろう。

f:id:uuupacom:20180514170109p:plain

AVP5_VRVR用の設定)にすると上のような設定になる。デスクトップ用設定とは違いが見られる。さらにMobile用設定もあり、それが一番低負荷な品質設定なのだろう。その3種類の設定の差異を調べるのも勉強になります。

さらに同梱のArchVizPRO_Infoマニュアルを見ると、その他の項目についても各環境ごとの推奨設定が紹介されています。

  1.  Win/Mac環境
    Edit/Project Settings/Player/Core space: Linear
    Inspector/Camera/Rendering Path: Deferred
  2. VR環境
    Edit/Project Settings/Player/Core space: Linear
    Inspector/Camera/Rendering Path: Forward
  3. Mobile環境
    Edit/Project Settings/Player/Core space: Gamma
    Inspector/Camera/Rendering Path: Forward

 こう見ると、ForwardレンダリングよりもDeferrdレンダリングの方が負荷は高いが綺麗に表示できるようですが、私自身あまり詳しくないので要調査。

さらに、各環境用のPostProcessingProfileも含まれています。デスクトップ用は多くの項目がアクティブになっている一方で、VR用はAntialiasingだけがアクティブ項目でした。かたやMobile用は、Fog,Antialiasing/Eye Adaption/Bloom/Color Grading/Vignetteがアクティブになっていて意外でした。

f:id:uuupacom:20180514171933p:plain

 マニュアルPDFの最後には、VRの時はProject SettingのVirtual Reality Supportedをチェックした時に表示されるSterao Rendering MethodをSingle Passにすると良いと書かれています。この設定自体私は知りませんでした。以下の記事を拝見しました。

qiita.com

framesynthesis.jp

Unity2018時点ではSIngle Pass Instanced(Preview)という項目もあり、今後さらに改良されていくのかもしれませんね。
Virtual Reality SupportedをONにすると、VR機材でのプレビューをすることになりますから、このSingle Pass Rendering項目は、VRChatのワールド作成時の設定には関係なさそうです。

ライティング設定

Lightmapping Settings項目は、Lightmap Resolutionは60、Lightmap Paddingが8、Lightmap Sizeは4096、Final GatherはONでRay Countは1024でした。やはり高画質なベイクをしています。

Mixed Lightnig項目はBaked Global IlluminationがON、これをOFFにするとシーンが明るく軽薄な感じになってしまうので、大事な設定ですね。Lightng ModeはShadowmaskでした。

PC用、VR用のシーンに対してはRealtime Lighting(つまりPrecomputed Realtime GI)がONになっています。Projectパネル内、ライトマップパラメーターは3種類用意されていて、遠景の山はResolution0.01、Terrainには0.2、Trasp(どういう意味?)は近くのものでしょうか、1が設定されています。でもヒエラルキーパネルで各オブジェクトを見てみると、これらのパラメーターは使用されておらず、シーンのデフォルトパラメーターとDefault-VeryLowResolutionとかが指定されているのみでしたが、謎。

f:id:uuupacom:20180517103801p:plain

モバイル用シーンにはRealtime GIは設定されていませんでした。

ライトオブジェクト

窓には窓サイズのArea Light(baked only)をIntensity=2で配置。

f:id:uuupacom:20180514175741p:plain

こういうスリットからの照明もArea Lightなんですね。

Refrection Probeは順当にひと区画ごとにひとつ配置しているのですが、一番広いリビングダイニングのスペースは、間仕切りが無いにも関わらず3つ配置しており、そのうち1つは、室内空間ではなく、Box ProjectionをOFFにすることで外界の風景全体をリフレクションしているReflectionProbeでした。

f:id:uuupacom:20180514181133p:plain

あと私、Light Probeのこと何も知らないので調査しないといけません。プレビュー再生中にON/OFFしても絵的には変わらない。空間を通過する光の情報なので、空間内を動くオブジェクトに影響する用途だからですね。VRChatワールド内を動くアバターに影響するのであれば、このライトプローブも習得しておく必要ありそうです。

docs.unity3d.com

f:id:uuupacom:20180514182009p:plain

他にも勉強になったのは、壁掛けライトなどのオブジェクト。スポットライトとエリアライトをBakedで配置し、ライトのベイク後はすべて非表示にされていました。
※画像左上の天井スポットライトはEmissionテクスチャでした

オブジェクトについて

ソファやカーテンはAVP/Velvetというオリジナルのシェーダー。RimColor項目等でオブジェクトの縁の部分に指定の色を着色&明度調整することで、ベルベットの光沢を表現しています。

f:id:uuupacom:20180514185231p:plain

屋外の木はNature/SpeedTreeシェーダー(外部Assetかな?)

その他はほぼStandardシェーダー

陶器や花瓶、本やガラスなどを選択した時にシーンビューで以下のように選択表示されるのは、Light Probes項目をBlend Probesに設定している影響のようで、反射の質感が向上している。

f:id:uuupacom:20180514183158p:plain

キッチンのステンレス部分、Albedoは使わずMetelicもテクスチャなし、Normalの凹凸でステンレスの線?を表現しているのは参考になる。

暖炉やろうそくの炎はパーティクルを使用。パーティクルのマテリアル(Fire2という名前)はスプライトアニメーションを利用している。

屋外の少し凹凸のある地面はTerrainをメッシュ化したものらしく、6万頂点、9万三角ポリゴンのメッシュオブジェクトだった。ShaderもAVP/Groundというカスタムシェーダー。その地面を別の山々オブジェクトで取り囲んでいます。

f:id:uuupacom:20180514184837p:plain

構造体に使われているナットは1メッシュにまとめられていました。MeshBakerの使いどころかなと思いました。

周辺環境に目を移すと、巨大な円筒形のオブジェクトの内側に白い霞のようなテクスチャをRendering Mode=Fadeで貼り付けたオブジェクトがあり、天球の下半分をいい感じにぼかしている。それが回転用スクリプトで回っている。

他にもパーティクルを使って吹雪いている演出も加えられている。

f:id:uuupacom:20180514194743p:plain

Skyboxは雲がかった空と周辺の山が一緒になったマテリアルを使用。

マテリアルについて

オブジェクトサイズに応じて2048pxか1024pxのテクスチャを使用。AOテクスチャのみワンサイズ小さいテクスチャを使うという工夫が見られた。小物はまとめて1枚のテクスチャを共用していたり工夫されている。

特大サイズのもの、例えば床は4096pxのjpg画像でした。幅の1単位を1ラインとすると、13ラインのフローリング画像でした。

その他情報

全景が入るようにカメラを移動させてStaticsを見てみると

  • Batches: 681
  • Tris: 919.6k
  • Verts: 706.8k
  • SetPass calls: 411

という情報でした。

感想

Unityでリアルなインテリア(室内)空間を作りたい時の教材として、ものすごく勉強になります。知らなかった手法も知ることができました。

assetstore.unity.com

assetstore.unity.com