[Unity] アサシンクリード3の雪の表現をがんばってみた

今回はUnityで雪の表現をしてみます。アナと雪の女王のような表現が出きればかっこいいのですが、素人には難しいのでできそうな情報を探して実装してみました。

 

 

参考サイト

A material point method for snow simulation(PDF)

【GDC 2013】「アサシンクリードIII」グラフィックス技術解説

西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座
Xbox 360グラフィックスここに極まる! 日本発の次世代技術の秘密とは?

3Dゲームファンのための「バーチャファイター5」グラフィックス講座
PCベースのアーケードシステムで実現される至極のリアルタイム3Dグラフィックスの秘密

 

環境

Unity 5.0.0f4

 

Albedoを白っぽくするデモ

アサシンクリード3の技術解説サイトにAlbedoを白っぽくするだけ、とありましたので試してみました。

snow_offsnow_on

アセットストアにある家を配置し、Shaderに白っぽくなるパラメーターを追加して対応しました。一部Shaderが適応されてなかったりしますが目をつぶります。あとTerrainはどうやって内部データにアクセスするか不明だったのでパスしました。

どうでしょうか、屋根以外も白っぽくなっているので、雪が降ったというよりは吹雪の後のような感じ。

デモ

アセット(家):Medieval house(アセットストア)

アセット(地面):Terrain Assets(アセットストア)

 

Displacement Mappingを使った足跡の表現

これまたアサシンクリード3の技術解説サイトにあるように、Displacement Mappingを使って表現します。サーフェイスシェーダーと DX11 テッセレーション(Unity公式サイト)にあるコードをそのまま使用してShaderを作成しました。VF5も同じ感じかな。

footprint

 デモ

クリックした位置をへこませる。環境によっては動作しないかもしれません。

クリックするたびにテクスチャーを生成しているので重いです。へこませるだけでなく、足跡の周りを少し膨らませたりすると再現度アップか。

 

まとめ

本来はアナ雪のような雪表現をUnity上でリアルタイムに行えたらかっこいいな!なんて素人考えだったわけですが、アサシンクリード、バーチャファイター形式の雪表現も悪くないなと。その時あるハードウェアの機能を有効に使ってる感じがして大好きです。

数年前の技術の後追いですが、技術解説記事+Unityでそれっぽく動くものができるなんて楽しくなりますね。


希木小鳥

Diablo1でハクスラの世界に。今はBorderlands2をプレイ中。ぬるゲーマー。

あわせて読みたい