UnityでLight Shaftを表現する

空気中の細かいチリや、煙を焚いた時に、光源から光の筋が見える現象を”Light Shaft“と呼んだりしますね。Mayaとかのプリレンダ環境なら、Depth Map Shadowとか使えば割と簡単に表現できる現象なんだけど、リアルタイムだとそれなりの計算コストになる。リアルタイムで実現するには、光源の数やバッファサイズにかなり気を付けないと処理落ちしてしまう。

追記:以下はUnity 5の時代の古い情報です。最新のUnityでは標準機能でLight Shaftを表現可能です。



で、そんなLight Shaft表現をUnityで実現するScriptをGitHubで公開している方がいる↓

robertcupisz/LightShafts

I made a more decent light shafts effect for #unity: Anyone interested? 🙂 #unity3d

Robert Cupiszさん(@robertcupisz)が投稿した動画 –



このコード、ありがたいことにパブリックドメインだそうです。
使い方は簡単で、Unity標準のライトにアタッチして使用する。対応しているのはDirectional lightSpot light。後は様子を見ながらバッファサイズやサンプリングサイズを調整してやるだけ。

LightShafts

実装の元となった論文はこちら↓
https://www.semanticscholar.org/paper/Epipolar-sampling-for-shadows-and-crepuscular-rays-Engelhardt-Dachsbacher/2b9640253af2bf397232f2436eddce2cf1d5f1eb

こういう表現が加わると一気に奥行きが増して素敵ね。

その後、Unity Adam demoにも使われたようです↓
https://github.com/Unity-Technologies/VolumetricLighting



2018年9月 追記:今ならAuraという無料のAssetがある↓

Aura – Volumetric Lighting


AuraはUnityのためのオープンソースのvolumetric lightingソリューションです。
開発はGitHubにホストされ、最新のパッケージはAsset Storeに公開されています。

Auraは、環境の空気などの媒体中の光の散乱や、この環境に存在する眼球/カメラには見えない微粒子の照明をシミュレートします。
この効果はvolumetric fogとも呼ばれます。

GitHubのリポジトリはこちら↓
https://github.com/raphael-ernaelsten/Aura



ドキュメントはこちら↓
http://www.raphick.be/aura/documentation/

Auraの内部で行われる処理の概要図↓

Aura - Volumetric Lighting for Unity

2019年追記:有料版のAura 2がリリースされています↓

Aura 2 – Volumetric Lighting & Fog


Aura 2はUnity用のvolumetric lighting/fogソリューションです。
Aura 2は、環境中に存在する肉眼・カメラでは捉えられないほど小さな微粒子の照明効果をシミュレートします。

Aura 2はUnityに最先端のvolumetric lightingシステムを提供します。
このレンダリング手法は、Tomb Raider, God Of War, Red Dead Redemption 2, Assassin’s Creed Odysseyなどの最新のハイエンドゲームで使用されているものと同じです。


関連記事

ZBrushで仮面ライダー3号を造る 仮面編 DynaMes...

Houdiniのライセンスの種類

ZBrushでゴジラ2001を作ってみる 身体のアタリを作る

Raspberry Pi 2を買いました

Google Chromecast

ZBrushのZmodelerとDynamic Subdiv...

WordPress on Google App Engine...

プロシージャル手法に特化した本が出てるみたい(まだ買わないけ...

OpenVDB:3Dボリュームデータ処理ライブラリ

オープンソースのロボットアプリケーションフレームワーク『RO...

OpenSfM:PythonのStructure from ...

OpenMesh:オープンソースの3Dメッシュデータライブラ...

Point Cloud Utils:Pythonで3D点群・...

BGSLibrary:OpenCVベースの背景差分ライブラリ

Google XML Sitemap Generatorプラ...

今年もSSII

ZBrushでアヴァン・ガメラを作ってみる 脚のトゲの作り直...

3D映画のポストプロダクション 2D-3D変換

OpenGV:画像からカメラの3次元位置・姿勢を推定するライ...

ZBrushでゴジラ2001を作ってみる 身体のシルエット出...

素敵なパーティクル

UnityでOpenCVを使うには?

リアルタイム レイトレーシングAPI『DirectX Ray...

DUSt3R:3Dコンピュータービジョンの基盤モデル

Iridescence:プロトタイピング向け軽量3D可視化ラ...

機械学習で遊ぶ

ゴジラ三昧

トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ

CGALDotNet:計算幾何学ライブラリ CGALのC#ラ...

C++ 標準テンプレートライブラリ (STL)

リメイク版ロボコップスーツのメイキング

ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画...

Photo Bash:複数の写真を組み合わせて1枚のイラスト...

ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整

UnityのMonoBehaviourクラスをシングルトン化...

書籍『3次元コンピュータビジョン計算ハンドブック』を購入

顔のモデリング

ポリゴン用各種イテレータと関数セット

OpenCVで動画の手ぶれ補正

粘土をこねるようなスカルプトモデリング

Faceshiftで表情をキャプチャしてBlender上でM...

タダでRenderManを体験する方法

コメント