11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity3Dで影生成するときだけローポリのモデルを使用する

Last updated at Posted at 2013-10-02

Unityの影生成は便利ですが、デフォルトでは描画用と影生成用に同じモデルを使用するため、単純に考えて2倍の描画コストがかかってしまいます。
そこで、影生成専用のローポリモデルを使用することを考えます。

スクリーンショット 2013-10-02 20.19.50.png

Mayaの削減機能を利用して、頂点数をおよそ1/3にしたモデルを用意しました。
このモデルにオリジナルと同じ骨を入れて、Unityにインポートします。

スクリーンショット 2013-10-02 20.27.21.png

描画用のモデルの階層の中から、MeshRendererを探し、Cast Shadowsのチェックを外しておきます。
このMeshRenderがアタッチされたGameObjectを複製します。

スクリーンショット 2013-10-02 20.28.49.png

複製されたSkinnedMeshRendererに、先ほどインポートしたモデルを設定します。
Cast Shadowsにチェックを入れ、Receive Shadowsのチェックを外します。
これで、描画用と影生成用、二つのオブジェクトが重なった状態になりました。

このままでは通常のレンダリングパスにおいても、影生成用モデルが描画されてしまいます。
そこで、通常時にレンダリングしないようにシェーダを定義します。

ShadowCaster.shader
Shader "Custom/ShadowCaster" {
	SubShader {
		UsePass "VertexLit/SHADOWCASTER"
	} 
	FallBack off
}

このシェーダを元にマテリアルを作成し、影生成用モデルに設定します。
これで作業は終わりです。

スクリーンショット 2013-10-02 20.10.46.png

スクリーンショット 2013-10-02 20.10.31.png

Statsを見ると、頂点数が減っていることが確認できますね。

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?