グラデーションのかかった画像の表示方法
-
piko
グラデーションのかかった画像の表示方法
グラデーションのかかった爆風のエフェクトを表示しよう思っているのですが
黒に近いところが黒く表示されて画像なのがわかってしまいます
透明PNGを試してみたのですが加算ブレンドしても暗くなるだけで明るく表示されません
透明PNGにしなかったらまぶしく表示されるのですが・・・
皆さんはどうやってまぶしくて透明感のあるエフェクトを表示していますか?
描画はDXライブラリを使っています
黒に近いところが黒く表示されて画像なのがわかってしまいます
透明PNGを試してみたのですが加算ブレンドしても暗くなるだけで明るく表示されません
透明PNGにしなかったらまぶしく表示されるのですが・・・
皆さんはどうやってまぶしくて透明感のあるエフェクトを表示していますか?
描画はDXライブラリを使っています
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラデーションのかかった画像の表示方法
データとプログラムを見せてもらわないとなんとも言えないですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
piko
Re: グラデーションのかかった画像の表示方法
すいません、日本語がおかしかったみたいです
簡単に言うと斑鳩というゲームみたいな爆風を表示したいです

こんな感じでエフェクトが重なったところだけ色が変わってるように見えます
重なればどんどん明るくなります
自分が作ってる爆風の画像です

普通のPNGは色はましなんですが画像を重ね合わせたのがわかって汚く見えます
こっちはGraphBlendでブレンドした画像を普通にDrawGraphで描画してます 透明PNGのほうは薄くて色も暗いです
(透明で色が濃くて重なったところだけ明るくなってあまり色が重なってないところは背景が
透けて見えるのが理想です)
こっちはGraphBlend関数を使って加算ブレンドして何度も同じ座標に表示してます
簡単に言うと斑鳩というゲームみたいな爆風を表示したいです

こんな感じでエフェクトが重なったところだけ色が変わってるように見えます
重なればどんどん明るくなります
自分が作ってる爆風の画像です

普通のPNGは色はましなんですが画像を重ね合わせたのがわかって汚く見えます
こっちはGraphBlendでブレンドした画像を普通にDrawGraphで描画してます 透明PNGのほうは薄くて色も暗いです
(透明で色が濃くて重なったところだけ明るくなってあまり色が重なってないところは背景が
透けて見えるのが理想です)
こっちはGraphBlend関数を使って加算ブレンドして何度も同じ座標に表示してます
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラデーションのかかった画像の表示方法
SetDrawBlendModeで画面上で合成したらどうでしょうか?
「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... html#R3N17
最後にDX_BLENDMODE_NOBLENDに戻すのは忘れないようにしてください。
「DXライブラリ置き場 リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... html#R3N17
最後にDX_BLENDMODE_NOBLENDに戻すのは忘れないようにしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
piko
Re: グラデーションのかかった画像の表示方法
-
piko
Re: グラデーションのかかった画像の表示方法
過去の画像が流れてしまったのであげなおします
piko さんが書きました: 簡単に言うと斑鳩というゲームみたいな爆風を表示したいです
http://kie.nu/3tQ
こんな感じでエフェクトが重なったところだけ色が変わってるように見えます
重なればどんどん明るくなります
自分が作ってる爆風の画像です
http://kie.nu/3tP
普通のPNGは色はましなんですが画像を重ね合わせたのがわかって汚く見えます
透明PNGのほうは薄くて色も暗いです
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラデーションのかかった画像の表示方法
元の画像自体に透明度のグラデーションは付けてありますか?画一的な透明度だと難しいと思います。
難しいと思ったら、白く明るいなってほしい部分と別画像に分離して別々に合成する方法でも構いません。
難しいと思ったら、白く明るいなってほしい部分と別画像に分離して別々に合成する方法でも構いません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: グラデーションのかかった画像の表示方法
何をいろいろ試したのでしょうか。
プログラムではなくて、画像データで解決する問題ですけど。
αチャンネルというものをご存知ですか?
αチャンネルを編集できるグラフィックエディタをお使いですか?
使ってる爆風の画像ファイルそのものを提示されないのには何か理由がありますか。
加算合成なので背景の色に影響されるのは当たり前ですね。
そうでなければ透けたように見えません。
中心の明るい部分の透明度を低く、周辺に向かって透明度が高くなるようにαチャンネルを編集すれば期待どおりになるでしょう。
プログラムではなくて、画像データで解決する問題ですけど。
αチャンネルというものをご存知ですか?
αチャンネルを編集できるグラフィックエディタをお使いですか?
使ってる爆風の画像ファイルそのものを提示されないのには何か理由がありますか。
加算合成なので背景の色に影響されるのは当たり前ですね。
そうでなければ透けたように見えません。
中心の明るい部分の透明度を低く、周辺に向かって透明度が高くなるようにαチャンネルを編集すれば期待どおりになるでしょう。
-
piko
Re: グラデーションのかかった画像の表示方法
自分がやりたかったのはすべての色が透明な画像で同じ画像を合成して合成した画像を背景にかぶせるような感じにしたかったのです(透明な画像だけで)
ですが今のは合成した画像と背景をさらに合成してるように見えます(色が変わりすぎ)
アルファチャンネルはよくわかりません
透明にすることはできますが透明度の変え方はわかりません(DXライブラリの関数でできたらゲーム中に操作できてよさそうなんですが)
ソフトはGIMP2をつかってます
やり方はキャンバスに色を塗ってそれをモノクロにしてレイヤーマスクにしてます
このページの最後を参考にしました
http://smileboom.com/tkool/alpha.html
そしてこれが自分の使っている画像です
http://kie.nu/3w3
自分が試してみたのは描画をグラフィックソフトのレイヤーみたいに描画できたらいいと思って
SetDrawScreenで裏画面に描画してることを思い出してこんなプログラムを書いてみましたが意味がありませんでした
どうしても透明な画像だけで描画したかったのです
ですが今のは合成した画像と背景をさらに合成してるように見えます(色が変わりすぎ)
アルファチャンネルはよくわかりません
透明にすることはできますが透明度の変え方はわかりません(DXライブラリの関数でできたらゲーム中に操作できてよさそうなんですが)
ソフトはGIMP2をつかってます
やり方はキャンバスに色を塗ってそれをモノクロにしてレイヤーマスクにしてます
このページの最後を参考にしました
http://smileboom.com/tkool/alpha.html
そしてこれが自分の使っている画像です
http://kie.nu/3w3
自分が試してみたのは描画をグラフィックソフトのレイヤーみたいに描画できたらいいと思って
SetDrawScreenで裏画面に描画してることを思い出してこんなプログラムを書いてみましたが意味がありませんでした
int Layer1 = MakeScreen(800, 600,TRUE);
SetDrawScreen(Layer1);
ClearDrawScreen();
SetDrawBlendMode( DX_BLENDMODE_ADD , 255 ) ;
for(int i =0; i<5; i++)
{
DrawGraph(0,0,bakuhuuG,TRUE);
}
SetDrawBlendMode( DX_BLENDMODE_NOBLEND,0 ) ;
SetDrawScreen(DX_SCREEN_BACK);
DrawGraph(bakuhuuPosX,bakuhuuPosY,Layer1,TRUE);
Re: グラデーションのかかった画像の表示方法
斑鳩のような爆発を描画したいのではなかったのですか?piko さんが書きました:自分がやりたかったのはすべての色が透明な画像で同じ画像を合成して合成した画像を背景にかぶせるような感じにしたかったのです(透明な画像だけで)
ですが今のは合成した画像と背景をさらに合成してるように見えます(色が変わりすぎ)
やりたいようにやるならアドバイスは必要なのでしょうか。
画像を見てみました。
αチャンネルは付いているのですね。
ですが、ベタ塗りで爆発っぽくありません。
即席ですが、画像を作ってみました。
pngに変換して黒いピクセルができてますが、作成するときは端まで塗り潰すのが定石です。 加算合成でランダムに描画してみるとこんな感じになります。 あとはアニメーションするように爆発パターンをいくつか用意したり、描画位置や動かし方を工夫してみてください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラデーションのかかった画像の表示方法
> http://kie.nu/3w3
この画像にこだわる限りは思ったような合成は不可能です。
この画像を使うことが目的なのか、思ったような爆発を作ることが目的なのかどちらなのでしょうか?
ISLeさんの作ったような画像を自分でも作ることをお勧めします。
この画像にこだわる限りは思ったような合成は不可能です。
この画像を使うことが目的なのか、思ったような爆発を作ることが目的なのかどちらなのでしょうか?
ISLeさんの作ったような画像を自分でも作ることをお勧めします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
piko
Re: グラデーションのかかった画像の表示方法
ISLeさんがあげてくださった二番目の画像の青いところを見てみると
自分には爆風に青いガラスをかぶせているように見えます
もう少し色合いが何とかなればいいなと思います
背景の上から爆風の画像を表示しているから爆風の色合いを優先してほしいです
自分の目がおかしいんでしょうか・・・
>この画像にこだわる限りは思ったような合成は不可能です。
>この画像を使うことが目的なのか、思ったような爆発を作ることが目的なのかどちらなのでしょうか?
画像にこだわったのは黒背景でそこそこきれいに見えたのでDXライブラリの関数次第で何とかならないかと思ったからで画像自体にこだわりはありません
できればこれくらい乱暴にできたらいいなと思いました
加算合成を使ってそうなゲームでここまで色合いが変わっているのはみたことなかったのでもっと簡単にできるかと思ったのですが思いのほか難しいようで回答者さんを混乱させてしまいました
申し訳ありません
自分には爆風に青いガラスをかぶせているように見えます
もう少し色合いが何とかなればいいなと思います
背景の上から爆風の画像を表示しているから爆風の色合いを優先してほしいです
自分の目がおかしいんでしょうか・・・
>この画像にこだわる限りは思ったような合成は不可能です。
>この画像を使うことが目的なのか、思ったような爆発を作ることが目的なのかどちらなのでしょうか?
画像にこだわったのは黒背景でそこそこきれいに見えたのでDXライブラリの関数次第で何とかならないかと思ったからで画像自体にこだわりはありません
できればこれくらい乱暴にできたらいいなと思いました
加算合成を使ってそうなゲームでここまで色合いが変わっているのはみたことなかったのでもっと簡単にできるかと思ったのですが思いのほか難しいようで回答者さんを混乱させてしまいました
申し訳ありません
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: グラデーションのかかった画像の表示方法
それであれば爆発にアルファチャネル(周辺は黒く中の方は白く)を設定して普通に描画するだけです。加算をしてはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: グラデーションのかかった画像の表示方法
背景が透けるように描画しているので青背景だと青みがかるのはとうぜんというか意図したものですが。
わたしの作った爆発画像をGIMP2で読み込んでみてもらえば分かると思いますが、中心ほど不透明度が高いαチャンネルが設定されています。
pikoさんの理想のように、中心はより不透明に、周辺はより透明に、というふうにしたいなら、レイヤーマスクでαチャンネルをそのように編集するだけです。
そういう画像が欲しいというのならそれはもう質問ではなく依頼ですよ。
(追記)
加算合成じゃないと爆発画像が重なったところでエッジが目立ってしまうと思いますけど。
わたしの作った爆発画像をGIMP2で読み込んでみてもらえば分かると思いますが、中心ほど不透明度が高いαチャンネルが設定されています。
pikoさんの理想のように、中心はより不透明に、周辺はより透明に、というふうにしたいなら、レイヤーマスクでαチャンネルをそのように編集するだけです。
そういう画像が欲しいというのならそれはもう質問ではなく依頼ですよ。
(追記)
加算合成じゃないと爆発画像が重なったところでエッジが目立ってしまうと思いますけど。
Re: グラデーションのかかった画像の表示方法
改めて、純粋に斑鳩の実装を確かめるため、YouTubeにあった斑鳩の動画を見てみました。
pikoさんのおっしゃる発光部分の色合いですが、斑鳩では発光のバックに必ず黒煙が描画されているため色合いが一定になります。
黒煙が背景マスクを兼ねているわけです。
さらに、だんだん透明になって消えますが、黒煙のほうが消えるのが遅いので発光部分が最後まで目立つようにもなってます。
爆発が重なったときに黒煙が前に出ないように、黒煙をすべて先に描画して、あとから発光を描画する必要があるでしょう。
pikoさんのおっしゃる発光部分の色合いですが、斑鳩では発光のバックに必ず黒煙が描画されているため色合いが一定になります。
黒煙が背景マスクを兼ねているわけです。
さらに、だんだん透明になって消えますが、黒煙のほうが消えるのが遅いので発光部分が最後まで目立つようにもなってます。
爆発が重なったときに黒煙が前に出ないように、黒煙をすべて先に描画して、あとから発光を描画する必要があるでしょう。
-
piko
Re: グラデーションのかかった画像の表示方法
>pikoさんのおっしゃる発光部分の色合いですが、斑鳩では発光のバックに必ず黒煙が描画されているため色合
>いが一定になります。
ここが知りたかった!おかげでできました

後は時間さえかければできそうです
ありがとうございました
>いが一定になります。
ここが知りたかった!おかげでできました

後は時間さえかければできそうです
ありがとうございました
Re: グラデーションのかかった画像の表示方法
縁のあるパターンは加算合成しないと縁が黒く出てしまうのですが、斑鳩は単色のパターンで通常描画しているように見えます。
この場合明るいものほど優先順位を高く描画しないと不自然に映ると思います。
#黒煙を最も暗いとすればソート条件はひとつになります。
加算合成を使うと大爆発のとき画面が真っ白になってしまうんですよね。
いわゆるポケモンショック対策のひとつですがコンシューマゲームで画面の大部分を覆うところに加算合成は使わない気がします。
この場合明るいものほど優先順位を高く描画しないと不自然に映ると思います。
#黒煙を最も暗いとすればソート条件はひとつになります。
加算合成を使うと大爆発のとき画面が真っ白になってしまうんですよね。
いわゆるポケモンショック対策のひとつですがコンシューマゲームで画面の大部分を覆うところに加算合成は使わない気がします。
-
piko
Re: グラデーションのかかった画像の表示方法
回答をもう一度見直しやりなおしました
加算合成せずに普通に表示して透明PNGの透明度をDX_BLENDMODE_ALPHAで変えてフェードアウトさせてみると
だいぶ似た感じになりました
特に煙を表現しているときにそれっぽくなるので普通描画で光ってるように
見えるように画像を描き直すようにしました
描くのが下手なので時間がかかりますがしょうがないですね・・・
加算合成せずに普通に表示して透明PNGの透明度をDX_BLENDMODE_ALPHAで変えてフェードアウトさせてみると
だいぶ似た感じになりました
特に煙を表現しているときにそれっぽくなるので普通描画で光ってるように
見えるように画像を描き直すようにしました
描くのが下手なので時間がかかりますがしょうがないですね・・・