hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
トランジション - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

トランジション [hsp3]

アドベンチャーなどで使われるトランジションをHSP3で実現します。
ただし書き換え後の画像に完全な黒(0, 0, 0)が使用されている場合、上手くいきません。

標準機能で作成

トランジション画像のうち、ある色の部分を真っ黒にした画像を用意します。
ここで言うある色の部分とは、黒〜白の色であり、トランジション画像に使われている色のことです。
その画像を書き換え後の写真にgmode 2(透明色付きコピー)でコピーし、さらにgmode 6(色減算コピー)を施すことで ある色の部分だけを切り抜いた画像を作成します。
これを黒〜白の256色すべてにおいて実行することで、トランジションを実装します。

なお、「ある色の部分を真っ黒にした画像」はgmode 4(透明色付き半透明合成コピー)で作成します。
また、5*255回ものgcopyを行うため、実行速度もそれなりに遅くなります。

hspcvを利用して作成

cvthresholdで特定の色を抽出し、フィルタとする方法です。
速度は標準機能のものとあまり変わらないようです(環境にもよるでしょうが)。

サンプルスクリプト

標準命令で作成

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* ウィンドウID決定 */
#enum MAIN_SCR = 0
#enum TRANSITION
#enum BEFORE
#enum AFTER
#enum TMP_BUFFER
 
    buffer TRANSITION : picload "transition.bmp"
    WINX = ginfo_WINX : WINY = ginfo_WINY
 
    buffer BEFORE, WINX, WINY
    hsvcolor 120, 170, 255 : boxf
 
    buffer AFTER, WINX, WINY
    hsvcolor  50, 170, 255 : boxf
 
    buffer TMP_BUFFER, WINX, WINY*2
 
    screen MAIN_SCR, WINX, WINY : cls 4
    title "main" : gmode 2, WINX, WINY
 
    gcopy BEFORE, 0, 0
 
/* 準備完了 */
    repeat 255
        await 4
        gsel TMP_BUFFER : pos 0, 0
        color : boxf
        color cnt, cnt, cnt
        gmode 4, WINX, WINY, 256
        gcopy TRANSITION, 0, 0
 
        pos 0, WINY
        gmode 0, WINX, WINY
        gcopy AFTER, 0, 0
 
        color cnt, cnt, cnt
        gmode 4, WINX, WINY, 256
        gcopy TRANSITION, 0, 0
 
        gmode 6, WINX, WINY, 256
        gcopy TMP_BUFFER, 0, 0
 
        gsel MAIN_SCR
        gcopy TMP_BUFFER, 0, WINY
    loop
    gmode 0, WINX, WINY
    gcopy AFTER, 0, 0
    stop

hspcvを利用

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/*	HSPCVを利用したトランジション効果  2007/05/03
 
	ソースコードと同じフォルダにトランジション画像
	transition.bmpを置くこと
	トランジション画像と切り替え後の画像には黒(0, 0, 0)は使えません */
#include "hspcv.as"
 
#const TRANSITION_MAX 255     // トランジション画像に使われている色の数
                              // 速度の関係上10〜30程度が望ましい
 
#enum CVBUFFER_TRANSITION = 0 // CVバッファのID
#enum CVBUFFER_AFTER
#enum CVBUFFER_TMP
 
#enum MAIN_SCREEN = 0         // HSPウィンドウのID
#enum SUB_BUFFER
 
    // トランジション用画像をロード・サイズ取得
    cvload "transition.bmp", CVBUFFER_TRANSITION
    cvgetinfo x, CVBUFFER_TRASITION, CVOBJ_INFO_SIZEX
    cvgetinfo y, CVBUFFER_TRASITION, CVOBJ_INFO_SIZEY
 
    // 作業のためのバッファを準備
    buffer SUB_BUFFER, x, y
    cvbuffer CVBUFFER_TMP, x, y
 
    // 切り替え後の画像をCVバッファに登録
    cvbuffer CVBUFFER_AFTER, x, y
    color 255, 255 : boxf
    cvputimg CVBUFFER_AFTER
 
    // 切り替え前の画像を準備
    screen MAIN_SCREEN, x, y
    color 0, 255 : boxf
 
    gmode 2, ginfo_winx, ginfo_winy
    cvsel CVBUFFER_TMP
 
    repeat TRANSITION_MAX, 1
        cvcopy CVBUFFER_TRANSITION
        
        cvthreshold CV_THRESH_TOZERO_INV, cnt, 255
        cvthreshold CV_THRESH_BINARY, cnt - 1, 255
        cvcopy CVBUFFER_AFTER, 0, 0, CVBUFFER_TMP, CVCOPY_AND
 
        // hspcvは透過色が使えないのでbufferを経由する
        gsel SUB_BUFFER
        cvgetimg CVBUFFER_TMP
 
        // screenにgmode 2(透過色あり)で描きこむ
        gsel MAIN_SCREEN
        gcopy SUB_BUFFER
        title str(cnt)
 
        await 10
    loop
    stop

トランジション画像

テスト用画像です。
以下の画像のうち、好きなものをtransition.bmpという名前でサンプルスクリプトと同じフォルダに置いてください。

transition1.gif transition2.gif transition3.gif

bmp形式を直接ダウンロードするなら→filebmp.zip

トランジション画像はモノクロ(RGB輝度がすべて同じ)である必要があります。

コメント


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル:
filetransition3.gif
255件 [詳細]
filetransition2.gif
289件 [詳細]
filetransition1.gif
295件 [詳細]
filebmp.zip
321件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2012-08-02 (木) 17:01:34 (493d)