System4.0 Tips 

 

 

System4.0 のエフェクト

 

 System4.0のSACTには、さまざまなエフェクトが搭載されています。
それらは、SACT_EFFECTのコマンドで行う事で実行され、エフェクトの種類はマニュアル[Sys42SDK_20041224\熟練者向けセット\マニュアル\Etc\GLEffectCopy.html]にあるとおり52個ものエフェクトを搭載しています。今回はエフェクトについて説明したいと思います。

 

System4.0のエフェクトは、基本的に次のような使い方をします。

  ....
  //更新前の画面を作成する。
  ........

  //クリックしたら画面を更新する。(Aコマンドは内部でSACT_UPDATEが呼ばれてます)
 A;

 //画面を変更する(SACT_UPDATEは呼ばない)
 ....

  //エフェクトして更新する。(クリック時の画面から変更した画面に1秒でクロスフェード)
 SACT_EFFECT(1,1000,false); 
 

もちろん、画面を変更するタイミングは、Aコマンドでキーが押されたとき以外でも可能です。

 エフェクトリストを参照すると、「Destのみ参照」「Srcのみ参照」「SrcAMap参照」と何も書いてないものの4つの種類が三列目に書かれていると思います。これは、更新前と更新後の画面のどれを元にブレンドするのかというものです。

 上のサンプルコードのクロスフェードのように、前画像から変更後の画像に変化していく様子がよく分かるもの は、三列目には何も書かれていないものです。
 つまりこのクロスフェードは、dest * (1-t) + src * t  => blend   ( tの値は0から1に単調増加 ) という変化をしていきます。(既に表示されている(前回画面に描画された)画像をdest、これから表示する画像をsrcとみなしています) つまり、何も書かれていないものは、destとsrcを両方ともを見てブレンド画像を作成しています。
 それに対して「Destのみ参照」と書かれているものは、destを加工して表示しているのみです。この場合は、更新先の画像を参照していませんので、エフェクト終了時は、真っ黒あるいは真っ白になってしまいます。
 「Srcのみ参照」と書いてあるものは、srcを加工して表示しているものです。ただし、更新前の画像をクリアして(つまり真っ白や真っ黒にして)使っているのか、あるいはクリアせずに使っているかどうかの定義はされていません。

 最後に、「SrcAMap参照」と書いてあるものは、srcとdestの他に、srcamapを使用しています。
このエフェクトはかなり特殊なエフェクトで、srcamapに指定したCGを元に動作を決めていきます。srcamapに指定するCGは、真っ黒な24bitの画面サイズと同一サイズのBMPと、SPフォルダの中に変化させる8bitグレースケールの画像を用意し、作成します。そのCGのCG番号(スプライト番号ではない)をSACT_EFFECT_SET_MASKの引数に渡しておきます。
 例えば、srcamapに上から下に黒から白へグラデーションするアルファ画像(SPフォルダに格納)を持つCGを指定すれば、更新前の画像が更新後の画像に、上から下に向かってだんだん変わっていきます。
 なお、「SrcAMap参照」となっているものは、エフェクト番号18番と、42番がありますが、その相違点は42番の方がブレンドに用いる値域が広いのだと考えられます。通常は18番を用いてみて、もう少し広く効果を出したい場合は42番を用いてみてはどうでしょうか。

 また、これら多くのエフェクトを実際に見て選んでみたい場合は、Ruby EyeさんのSYSTEM4.0利用法のスクリプトサンプルを参照してみてください。