トップページ > 記事閲覧
レンズフィルターでセピア調にしたい
名前:たろう 日時: 2021/09/10 01:18

いつもすみません、たろうです MakeScreenで作った画像に全てのゲーム画像を描画して、それを加工してから DX_SCREEN_BACKに描画するようにしているのですが、加工する際 フォトショップで言うところのレンズフィルターを適用して、ややセピア調にしたいと思っています。 DX_GRAPH_FILTER_MONOでセピア単色にしたものを元画像に薄く重ねたり セピアで塗りつぶした画像を作って、 GraphBlendで色々合成してみたりしたのですが、 (※この場合レイヤの描画モードの「カラー」ttps://helpx.adobe.com/jp/photoshop/using/blending-modes.htmlで再現可能なので同じ効果を探しました) 同じ効果が得られる方法が見つかりませんでした。 毎度すみませんが、アドバイスを頂けるとたすかります 宜しくお願いいたします<(_ _)>
メンテ

Page: 1 |

Re: レンズフィルターでセピア調にしたい ( No.1 )
名前:管理人 日時:2021/09/10 01:34

レンズフィルターといってもモードが幾つもあるみたいですね… 実現可能なのかどうか判断したいと思いますので 『理想の画像( PhotoShopを使用して加工した画像 )』と 『現状の画像( DXライブラリの機能を使用して現状実現できている画像 )』を どこかにアップして拝見させていただけないでしょうか? m(_ _)m ( メールで BQE00322(あっとまーく)nifty.com に送っていただいても大丈夫です ( (あっとまーく)は@に置き換えてください ) )
メンテ
Re: レンズフィルターでセピア調にしたい ( No.2 )
名前:たろう 日時:2021/09/10 02:38

ご返信ありがとうございます 下記にファイルを置きました。 ttps://file-post.net/en/s0/d1/1631206150_46006875_120/?id=AOLbSJd4E1pS(ぱす:sdfagsga) before画像をフォトショップのレンズフィルター(セピアR172,G122,B51 適応量100% 輝度を保持)を適用したものが afterの画像『理想の画像( PhotoShopを使用して加工した画像 )』です。 また『現状の画像( DXライブラリの機能を使用して現状実現できている画像 )』ですが、 全く似ても似つかない物しかできておらず参考にならないと思いますので、例えば 下のプログラムでbeforeを読み込んでいただき、A、Q、S、W、D、Eキーで調節していただくと いくらやっても近い物にはならない状態が分かりやすいと思います。 他に近い方法も思いついておらず、すみませんが現状はこんな感じです<(_ _)> #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(1); SetGraphMode(1440,810,16); DxLib_Init(); SetUsePremulAlphaConvertLoad(1); SetFontCacheUsePremulAlphaFlag(1); int grp=LoadGraph("before.png"); int scr=MakeScreen(1440,810); int Cb=-40,Cr=7,Alp=150,i=0; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; if(CheckHitKey(KEY_INPUT_A)&&i<0){Cb--;i=3;} if(CheckHitKey(KEY_INPUT_Q)&&i<0){Cb++;i=3;} if(CheckHitKey(KEY_INPUT_S)&&i<0){Cr--;i=3;} if(CheckHitKey(KEY_INPUT_W)&&i<0){Cr++;i=3;} if(CheckHitKey(KEY_INPUT_D)&&i<0){Alp--;i=3;} if(CheckHitKey(KEY_INPUT_E)&&i<0){Alp++;i=3;}i--; if(CheckHitKey(KEY_INPUT_ESCAPE)){break;} GraphFilterBlt( grp , scr, DX_GRAPH_FILTER_MONO,Cb,Cr); DrawGraph(0,0,grp,TRUE); SetDrawBlendMode(DX_BLENDMODE_PMA_ALPHA,Alp); DrawGraph(0,0,scr,TRUE); SetDrawBlendMode(DX_BLENDMODE_PMA_ALPHA,255); DrawFormatString( 0,30,GetColor(255,255,255),u8"Cb(%d) Cr(%d) Alp(%d)",Cb,Cr,Alp); ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: レンズフィルターでセピア調にしたい ( No.3 )
名前:管理人 日時:2021/09/11 06:01

ファイルのアップありがとうございます 拝見してみましたが、個人的にはかなり after.png に近い雰囲気になっているように感じます これ以上近づけようとする場合はやはり PhotoShop のレンズフィルターでどのような 計算式で色が変換されているのか分からないと難しいので、現状ではこれ以上近づけるのは 難しいのではないかと思います セピア調にする他の方法として DX_GRAPH_FILTER_HSB の色相・彩度・輝度フィルターを 使用する方法もありますので、もしまだ試していませんでしたらお試しください m(_ _)m ( DX_GRAPH_FILTER_HSB でもレンズフィルターと同じ見た目にすることはできませんが… ) // 例 GraphFilterBlt( grp , scr, DX_GRAPH_FILTER_HSB, 1, 0, -128, -64 );
メンテ
Re: レンズフィルターでセピア調にしたい ( No.4 )
名前:たろう 日時:2021/09/11 12:49

お忙しい中ご返信ありがとうございます。 すみません、フォトショップのレンズフィルターの計算式は全く分かりませんので この方法でセピア調にするというのはあきらめようと思います。 お手数をおかけいたしました<(_ _)> それでHSBやMONOを使う上の方法を応用しようと思いますが、その微調整のために、たとえば 特定の色の濃さだけを上げたり下げたりする(REDを+10でGREENを-20など)ような方法はありますでしょうか? 複数のフィルターやブレンドを経由するなど色々考えたのですが いい方法が思い浮かびません アドバイスを頂けると助かります。 宜しくお願いいたします<(_ _)>
メンテ
Re: レンズフィルターでセピア調にしたい ( No.5 )
名前:管理人 日時:2021/09/13 01:42

MakeScreen で R,G,B 用に 3つの仮画面を作成して、それぞれ SetDrawScree( RScreen ); SetDrawBright( 255, 0, 0 ); DrawGraph( 0, 0, BaseImage, FALSE ); SetDrawScree( GScreen ); SetDrawBright( 0, 255, 0 ); DrawGraph( 0, 0, BaseImage, FALSE ); SetDrawScree( BScreen ); SetDrawBright( 0, 0, 255 ); DrawGraph( 0, 0, BaseImage, FALSE ); ↑こちらのように SetDrawBright を使用して 元画像からR成分だけを抜き出した画像 元画像からG成分だけを抜き出した画像 元画像からB成分だけを抜き出した画像 を作成して、それぞれにフィルターで明るくしたり暗くしたりしたあと、 SetDrawBlendMode( DX_BLENDMODE_ADD, 255 ); DrawGraph( 0, 0, RScreen, FALSE ); DrawGraph( 0, 0, GScreen, FALSE ); DrawGraph( 0, 0, BScreen, FALSE ); ↑こちらのように加算ブレンド設定で R,G,Bの画像を描画すれば R,G,Bの成分が合成された描画結果が得られますので よろしければお試しください m(_ _)m
メンテ
Re: レンズフィルターでセピア調にしたい ( No.6 )
名前:たろう(解決) 日時:2021/09/14 16:03

ありがとうございます、まさにこれです。 先ほど試して、望み通りの効果が得られることを確認しました。 SetDrawBrightは知りませんでした…本当に何でもありますね お手数をおかけいたしました<(_ _)>
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存