CreationCollege-TOP
Now Printing..
▲ C.College TOP▲ HSP-Tech Top.情報局2号館

∇ 脚注

※1:ここでのモーフィングは、2枚の絵の特徴を保ったまま変化する…という一般的なモーフィング処理はしていません。単に、A→Bへと変わっていく効果を差します。


∇ 感想はこちらに
クリエイターズボード(掲示板)

- 書き換えパターン5:モーフィング

Update: 2000/8/29


モーフィング

 書き換えシリーズも最終項、モーフィング(※1)に入ります。題名で全て分かると思いますが、ある絵からある絵へと、少しずつ変化させていく処理を指します。ワイプやブラインドは、明らかに画面が変わったなと思える変化なのに対して、こちらは2枚の絵の差が小さかったばあい、気づかないうちに…という効果を与える事ができます。VNなら、舞台を変えずに時間だけ経過させる…という具合ですね。むろん、2枚の絵が全然違うものでも構いません。
 理想的メカニズムは至極単純で、2枚の絵の構成比率をそれぞれ100→0%、0→100%に変えていくだけです。両方足して丁度100%になれば良いわけですね。ただ、俗に言う「半透明」処理は、使う言語が必ずサポートしているとも限らないし、また扱いが難しかったりしますので、簡単に使えないなと思った人は諦めるのも一つの手です。諦める代わりに代替手段を考えれば良い訳ですね。たとえば作業画面を一つ用意し、そこに「変化先の画面をロードし、ラティス処理で穴を作り、残った画面をメイン画面に透過貼りこみする」を繰り返すと、半透明処理も使わず、マシンパワーも最小限度で、ほぼ同じような効果を与える事ができます。ソースは出しませんが、興味のある方は各自トライしてみてください。

 それでは以下は、半透明処理が可能な言語系であるという前提に立ちます。HSPも幸い、拡張DLL hspext.dll をインクルードする事により、半透明系を比較的楽に実現する事ができます。とはいっても、Zレイアの概念はありませんから、上で書いたメカニズムをそのまま適用させるのはちょっと面倒です。作業画面を余計に一つ作り、「メイン画面から作業画面に半透明転送」「変化先画像保存画面(分かりにくい…)から作業画面に半透明転送」「作業画面の画像をメインに転送」と3つのステップを要する事になります。
 ここでの要件は、2つの絵を適当な比率で合成させる事じゃなくて、A→Bへのノンストップな変化です。そんなわけで、元の絵に対して、加算的に半透明コピーしていくだけでも別に構わないわけです。こうすると、ステップはたった1回ですみ、無駄なマシンパワーも要らなくなります。というわけで以下ソースです。

; モーフィング(画像→画像) -----------------------------

 #include "hspext.as"  ; 必須

  buffer 14,640,480,0 : cls 0 : gmode 1
  screen 0,640,480,0 : cls 4 : gmode 1

*main
  gsel 14 : picload "書き換える画像",1
  gsel 0 : picload "書き換えられる元の画像",1
  pos 0,0
  gfini 640,480       ; フルカラー命令作画領域設定

  repeat 18
    gsel 14 : pos 0,0 ; 半透明コピー元設定
    gfcopy 5+cnt*2    ; 半透明コピー実行
    gsel 0
    redraw 1          ; 画面描写
    await 10
  loop
  gcopy 14,0,0,640,480 ; 全体を改めて描きかえる

stop ; --- end of file ------------------------------------
 回りくどい説明よりも、ソースを見たほうが分かりやすいですね(^^;)。数パーセントずつの半透明度で上塗りしています。ただし、「上塗り」である事に注意してください。「10%で上塗り」→「20%で上塗り」→「30%で上塗り」とすると、おそらく50%程度でほぼ絵が書き換わってしまうことでしょう。モーフィングのポイントは、不自然のないように変化させていくことにあります。
 もう一つ注意すべき事は、「ほぼ書き換わったな」と思っても、実際書き換えは完了していない可能性が強い事です。0.1や0.2を何度かけても論理的には0にならないのと同じです。それゆえに、最後に半透明なしで転送を実行する必要があります。忘れずにね。

- 鷹月ぐみな


.
Copyright- 鷹月ぐみな(gumina)たかつきCOMPANY 1997-2000.▲ C.College TOP