Vertex Animation Textureについて調べた
会社の人にVertex Animation Texture(VAT)
というものを教えてもらいました。
個人的に面白い手法だなと感激したので調べていたのですが、1ヶ月近く経って忘れかけていたのでまとめておこうというのが今回の内容です。 VATを読み込むShaderを動かしたりコードを読んだりしたのでそのメモになります。
Vertex Animation Textureとは
3Dモデルのフレームごとの頂点の位置情報や法線情報が保存されたテクスチャのことです。 1pixelに1頂点の情報が保存されており、テクスチャのサイズは横が頂点数、縦がフレーム数が一般的のようです。
プロジェクト
椿さんのブログで、Unityで使えるテクスチャへの書き込みと読み込みの両方のサンプルがあるライブラリが紹介されていました。 tsubakit1.hateblo.jp ライブラリはこちら github.com
使い方は椿さんのブログで紹介されているため、そちらをご覧ください。
以下はライブラリのShaderの内部を読んでいた際にいくつか引っかかったのでその点のメモです。
#pragma multi_compile ___ ANIM_LOOP // キーワードを定義しキーワードごとに分岐した処理を記述できる __は定義されていない場合の分岐 tex2Dlod // vertex shader内でtextureを参照する場合はtex2Dではなくtex2Dlodを使う float4 _PosTex_TexelSize; // {TextureName}_TexelSize はtextureのsize情報を含む
Shaderの記述に関してはこちらを参考にすると良いと思います http://unitech.hatenablog.com/entry/2015/03/11/001953#VFShader