Unity でMagicaVoxel ライクなレンダリングをしよう!
今回の目標
今回はMagicaVoxelでのレンダリングの見た目をUnityで再現しようという試みです。下の画像を見ていきましょう。
MagicaVoxelでのレンダリング
ポチポチ感のある可愛らしい見た目になっています。
Unityにインポート直後のレンダリング
MagicaVoxelからObjを持ってきてシーンに配置しただけの状態です。MagicaVoxelでのレンダリングとはかけ離れた状態になってしまいました。
Unityで頑張った結果のレンダリング
ライティングやポストプロセスを使うことで最終的にはこんな感じになりました。今回はこちらの見た目になるように手順を解説していきたいと思います。
前提条件
再現していくにあたり今回は以下の条件で作業を進めていきます。
・Unity Version: 2019.4.2f1
・Rendering Pipeline: Build-in
・AssetStoreなどのアセットは導入せずUnity標準のライティングやポストエフェクトを使う
・モバイルなどで動作することは考えず負荷の高い設定も使う
この記事で解説しないこと
・ポストプロセスの各種効果やパラメーターについて
・ライトの種類やパラメーターについて
・Unityの基本的な操作方法
【ステップ1】Color SpaceをLinerにする
【ステップ2】床となるCubeを設置する
GameObjectのCubeを設置します。
【ステップ3】Clear FlagをSolid Colorにする
skyboxをやめsolid colorに設定を変えます。
【ステップ4】Directional Lightの角度を調整する
猫を原点に置いたときのライトの角度を以下のように設定しました。
少しそれぽくなってきました。
【ステップ5】PostProcessingを導入する
PackageManagerからインストールします。
【ステップ6】Post-Process LayerをMain Cameraに設定する
Main CameraにPost-process LayerをAdd Componentして以下の設定にします。
LayerはEverythingにしアンチエイリアスモードはSMAAにしておきます。
【ステップ7】Ambient Occlusionの追加
空のGameObjectを一つ追加して「PostProcessing」とします。
Add ComponentでPost-process Volumeを追加します。
Is Grobal にチェックを入れてProfileを作成します。
Add EffectでAmbient Occlusionを選択します。
主にIntensityとThickness Modifierで暗い部分を調整します。
【ステップ8】Color Gradingの追加
Ambient Occlusionと同じくPost-processのadd effectから追加します。
Mode、Saturation、Contrastあたりで見た目を調整していきます。Channel Mixerで色味の調整も行います。
【ステップ9】Directional Lightの光と影の強度を調整する
今回は Intensityは少し強く、Shadow Strengthはやや弱めにしました。ShadowTypeはSoftShadowを指定しておきます。
MagicaVoxelとまったく同じとまではいきませんでしたがそれなりに見た目が近づいたのではないかと思います。
お疲れさまでした!
【おまけ】Unityでの静止画の書き出し
Unity公式が用意してくれている Unity Recorder を利用するのが一番おすすめです。
導入方法
Post Processingと同様にPackage Managerからインストールを行います。
使い方
設定はこんな感じにして「START RECORDING」で録画できます。Recording ModeをSingle Frameにしないと連番で大量の画像が書き出されてしまうので注意です。