画像を左から右に流れるようにフェードインとフェードアウトを行うことって可能でしょうか?
言葉だと説明しづらいのですが、言いたいのは・・・
00000 ←画像 : 0が輝度0% 3が輝度100% 数値が大きいほど明るい
10000
21000
32100
33210
33321
33332
33333
一定時間後
23333
12333
01233
00123
00012
00001
00000
わかりにくくてすみません;;
こんな感じで、スタッフロールとかの文字表示を流れるように表したいのです。
ただのフェードインとフェードアウトではなく、ちょっと凝ったことがしたいと思ったので
加算合成を使って表現しようとしたのですが、うまくいかなかったので;;
助言をお願いします
~開発環境~
○Windows Vista Home Premium SP2
○Visual C++ 2010 Express
○DXライブラリ使用
流れるようなフェードインとフェードアウト
Re: 流れるようなフェードインとフェードアウト
つDrawBlendGraph
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 流れるようなフェードインとフェードアウト
YYSSさん
こんにちは。
文字を移動させるんじゃなくて、輝度が移動するということでよかったでしょうか?
背景はとまったままなんでしょうか?
止まった背景をラインごとに輝度を変化させてグラデーションをかけるサンプルをつくってみました。
http://dixq.net/movie/gradation_sample.mp4
(動画)
プロジェクトはこちらに用意しました。
http://dixq.net/zip/gradation_sample.zip
ソースコードは輝度設定部分で何やってるかわかりにくいかもしれませんが、
要するにSetDrawAreaで一ラインずつ描画エリアをセットしては、SetDrawBlendModeでアルファ値をセットしていきます。
全ライン書き終わったら、countを動的に変えて、セットするαを時間軸で変化させているだけです。
似たような事をすればぐにゃぐにゃさせることも簡単です。
http://dixq.net/sm/d5.html
こんにちは。
文字を移動させるんじゃなくて、輝度が移動するということでよかったでしょうか?
背景はとまったままなんでしょうか?
止まった背景をラインごとに輝度を変化させてグラデーションをかけるサンプルをつくってみました。
http://dixq.net/movie/gradation_sample.mp4
(動画)
プロジェクトはこちらに用意しました。
http://dixq.net/zip/gradation_sample.zip
ソースコードは輝度設定部分で何やってるかわかりにくいかもしれませんが、
要するにSetDrawAreaで一ラインずつ描画エリアをセットしては、SetDrawBlendModeでアルファ値をセットしていきます。
全ライン書き終わったら、countを動的に変えて、セットするαを時間軸で変化させているだけです。
似たような事をすればぐにゃぐにゃさせることも簡単です。
http://dixq.net/sm/d5.html
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 流れるようなフェードインとフェードアウト
もし、文字の所だけに凝ったグラデーションをかけたいなら、マスクを使います。
例えばこのようなエフェクトです。
http://dixq.net/movie/AerobeatEffect.mp4
これは文字の中をキラッとさせる為にマスクを使った処理をしています。
DXライブラリの公式リファレンスを見れば使い方が書いてあります。
やりたいのがどちらかわかりませんが、参考になればどうぞ。
分からないことがあれば聞いて下さい。
例えばこのようなエフェクトです。
http://dixq.net/movie/AerobeatEffect.mp4
これは文字の中をキラッとさせる為にマスクを使った処理をしています。
DXライブラリの公式リファレンスを見れば使い方が書いてあります。
やりたいのがどちらかわかりませんが、参考になればどうぞ。
分からないことがあれば聞いて下さい。
- MoNoQLoREATOR
- 記事: 284
- 登録日時: 14年前
- 住所: 東京
Re: 流れるようなフェードインとフェードアウト
DXライブラリのDrawBlendGraph関数を使ったサンプルを作りました。
下記サイトよりダウンロードしてください。(ブレンド用の画像が重要なので)
http://www1.axfc.net/uploader/Sc/so/205205.rar&key=mixc
オレンジの四角形を描画しているのは、黒色で塗りつぶしてるわけではないことを表すためです。
一応ソースは張っておきます。
もし文字列でこれを行いたい場合は、一度GetDrawScreenGraph関数を使ってその領域を画像として保存し、その画像ハンドルを取得してください。
下記サイトよりダウンロードしてください。(ブレンド用の画像が重要なので)
http://www1.axfc.net/uploader/Sc/so/205205.rar&key=mixc
オレンジの四角形を描画しているのは、黒色で塗りつぶしてるわけではないことを表すためです。
一応ソースは張っておきます。
#include "DxLib.h"
int blend_gh;
int normal_gh;
int i;
int state;
int black_gh;
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC){
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1) return(-1);
SetDrawScreen(DX_SCREEN_BACK);
// ブレンド用画像を読み込む
blend_gh = LoadBlendGraph("blend.png");
//通常画像の読み込み
normal_gh = LoadGraph("02.png");
//黒い画像の読み込み
black_gh = LoadGraph("black.png");
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
ClsDrawScreen();
//それぞれ 256 フレーム掛けて切り替え
switch(state){
case 0://フェードイン
//あらかじめ画像を表示しておく
DrawGraph(0,0, normal_gh, FALSE);
//通常画像とブレンド用画像を合成して描画
// (境界幅は255)
DrawBlendGraph(0,0, black_gh, FALSE, blend_gh, i, 255) ;
if(i < 255) i++;
if(i==255) i = 0, state = 1;
break;
case 1://フェードアウト
//オレンジボックスの描画
DrawBox(100,20,200,60, GetColor(250,110,0), TRUE);
//通常画像とブレンド用画像を合成して描画
// (境界幅は255)
DrawBlendGraph(0,0, normal_gh, FALSE, blend_gh, i, 255) ;
if(i < 255) i++;
break;
}
ScreenFlip() ;
}
DxLib_End() ;
return 0 ;
}
Re: 流れるようなフェードインとフェードアウト
いろんなやり方を教えてくださってありがとうございます。
イメージ的には、MoNoQLoREATORさんが教えてくれたようなことがやりたかったのです。
でも、Dixqさんが教えてくれた方法も、
背景に小細工を加えたり、ラスタースクロールみたいな表現をしたいときに役立てそうなので、ありがたく参考にさせていただきます。
とりあえず、今から実戦したいと思います。
また分からないことがあったら質問しますので、助言をお願いします
イメージ的には、MoNoQLoREATORさんが教えてくれたようなことがやりたかったのです。
でも、Dixqさんが教えてくれた方法も、
背景に小細工を加えたり、ラスタースクロールみたいな表現をしたいときに役立てそうなので、ありがたく参考にさせていただきます。
とりあえず、今から実戦したいと思います。
また分からないことがあったら質問しますので、助言をお願いします