進化デモの演出の説明


■概要
進化デモの演出の説明をする。


■場所
prog\src\demo\shinka_demo\shinka_demo_view.c


■説明
MCSSポケモンを進化前、進化後それぞれ用意する。
細かい板ポリゴンに2Dのncgを貼り付けたポケモンを進化前、進化後それぞれ用意する。
1枚の板ポリゴンに2Dのncgを貼り付けたポケモンの進化前を用意する。

○流れ
(1) MCSS→1枚の板ポリゴンと細かい板ポリゴン
最初は「進化前MCSSポケモン」を表示しておくが、
白く光るエフェクトが出たときに
「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」と「進化前1枚の板ポリゴンに2Dのncgを貼り付けたポケモン」に
表示を切り替える。
「進化前1枚の板ポリゴンに2Dのncgを貼り付けたポケモン」のほうが「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」より
手前に表示されるようにしておく。

(2) 分割
「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」を上から分割していく。
分割する行の先頭に来たら、「進化前1枚の板ポリゴンに2Dのncgを貼り付けたポケモン」をその行の分だけ下げる。
「進化前1枚の板ポリゴンに2Dのncgを貼り付けたポケモン」を手前に置いている理由は、
「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」のテクスチャが小数点誤差できれいに貼れていないから。

(3) 交換
「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」を端から順番に「進化後細かい板ポリゴンに2Dのncgを貼り付けたポケモン」に
交換していく。

(4) 結合
「進化後細かい板ポリゴンに2Dのncgを貼り付けたポケモン」を下の行から順番に結合していく。
「進化後細かい板ポリゴンに2Dのncgを貼り付けたポケモン」は白いままなので、
テクスチャがきれいに見えないとか気にしなくてよく手前に1枚の板ポリゴンを置く必要もない。

(5) 細かい板ポリゴン→MCSS
白く光るエフェクトが出たときに
「進化後細かい板ポリゴンに2Dのncgを貼り付けたポケモン」を「進化後MCSSポケモン」に
表示を切り替える。

○「細かい板ポリゴンに2Dのncgを貼り付けたポケモン」の、分割アニメーションの解説
それぞれの細かい板ポリゴンが到達する「螺旋形の安定軌道」の場所をあらかじめ算出しておく。
細かい板ポリゴンが安定軌道に到達したら、その軌道上で回転させる。


■注意点
(1) 整数でないと絵がずれる
「■説明」の「○流れ」の「(2) 分割」のところに書いてある通り、
整数でテクスチャを貼らないと、テクスチャがきれいに表示されない。
「進化前細かい板ポリゴンに2Dのncgを貼り付けたポケモン」は等分した小数サイズで分割しているが、
「進化前1枚の板ポリゴンに2Dのncgを貼り付けたポケモン」はあらかじめきれいに見える分割テーブルを持っていてそれの通りに分割している。

(2) 高速化する
主に以下を行い、高速化をはかった。
・割り算を減らす。
・ループの外に出せるものは出す。

高速化されているか疑問なもの。
・行列計算で座標を変換している。
・FX_Sqrtしたもので割る代わりに、FX_InvSqrtを使っている。


以上。
