ハンドル欲しいMobile系、Direct3DやShaderなどについて書いています。19:02また今更な古い話なので興味ない方は無視してください。ノーマルマップを使っているのはなぜかと良く聞かれることがありました。それを思い出したのでちょっと書いてみます。全部にほぼノーマルマップまたは同等の重いシェーダーを適用しています。いう命令数制限もありました。この制限の中に必要な機能を詰め込むにはかなり工夫が必要です。逆に頂点シェーダー側は浮動小数演算だし命令スロット数も比較的余裕はあります。頂点演算はタイトです。増えただけで描画速度に大きく響きます。厳しいので、必要な機能を入れるだけでぎりぎり。VertexShader・描画速度にかなり影響が生じる。機能的には十分だが速度的には余裕がない。・頂点のデータ量を減らしたい・演算量を減らして高速化したい。よって最適化のために、キャラクタ用シェーダーではオブジェクトスペースのノーマルマップを使っています。速度だけでなくメモリを大量に消費することもノーマルマップでは大問題でした。●計算オブジェクトスペースで作られたノーマルマップは、シェイプの変形に柔軟に追従することが出来ません。等のツール上では、オブジェクトスペースのノーマルマップではアニメーションすることが不可能となります。焼き込んだ形状が保存されていて、かつ変形したジオメトリとの差分が求まるならば、オブジェクトスペースのノーマルマップから変形後の法線を導き出すことが出来ます。ボーンによるアニメーションでも全く同じことです。基準となるバインドポーズを持っていて、ツールから出力されるメッシュはこの形状を保ったスタティックなものです。スキニングの演算自体が、骨の移動に従った基準形状からの各頂点の変化量を求めていることになります。このマトリクスがそのまま使えます。サンプリングされたオブジェクトスペースのノーマルマップを使ったライティングを行えます。変換していることになります。埋め込まなくて済むので、こちらの方がデータ量としてかなりお得です。変換分だけ演算負荷が減るし、頂点サイズの縮小もそのまま高速化に繋がります。オブジェクトスペースでノーマルマップを作った場合は、以後絶対に基本となるポーズを変えてはいけません。時に、ツール上でうっかり触ってずれてしまった、とか許されなくなるわけです。●ムービーレンダリングプロジェクト終盤で困ったのがムービーのレンダリングです。ゲーム内のキャラデータを使ってムービーシーンを作る必要があったのですが、次の理由によりそれが困難でした。法線マップ用のレンダリング機能がなかったので、そのままではレンダリングすることが出来ません。演算を行うことも出来ますが、いろいろ無理があります。上でも書いたとおり、オブジェクトスペースのノーマルマップはツール上だと元の形状からの変化量が求まらないのでアニメーション変形に対応することができません。結局ムービーレンダリングのために専用のプラグインを作成しました。ハードウエアレンダーバッファへのレンダリングを行っています。そのまま何もせずレンダリング可能。変形しない物ならそのままレンダリングします。アニメーションを行う場合、プラグインに対して事前に基本形状を登録する必要あり。レンダリング時に参照しています。なくメッシュ自体を丸ごと保存しています。出来るようになっています。持って行くことが出来ます。適用すればよいことになります。地面や壁などバンプマップとしてタイリングするし同じノーマルマップテクスチャを何度も使い回すからです。貼られる面も任意となります。●その後あくまで昔の話です。ノーマルマップを使用したのはこのときだけ。高機能化されたので、ここまで考える必要がなくなりました。互換性が無いので、最終的なレンダリングプログラムと条件を一致させなければなりません。結局自前のツールでデータを生成することになります。シェーダーの基本機能として当たり前に使えるけど、その比重はさらに下がっています。11:57:30)oga/遅くなりましたが情報ありがとうございます。