如雨露の日記

学んだことを書いていくサイトです。もし誤りがあれば指摘していただけると嬉しいです。

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