トップページ > 記事閲覧
ADVの立ち絵の表現
名前:Soop 日時: 2015/01/28 04:16

ADVの立ち絵変更のような表現をするにはどうすれば良いでしょうか? 二つの画像の透明度を反比例させていくと薄くなってしまいますし 背景のようにひとつの画像を表示し、もうひとつの画像の透過度を下げていくような表示の仕方をすると、形の違う画像がはみ出て表示されてしまいます つまり二つの画像の重なっている所だけ透過度が0に、他の部分は透過するように表示したいのですが そのような事はできるでしょうか?
メンテ

Page: 1 |

Re: ADVの立ち絵の表現 ( No.1 )
名前:たろう 日時:2015/01/28 06:38

使ったことがないので間違っているかもしれませんが CreateMaskScreenを使えば出来るんじゃないでしょうか? ただ、二枚の画像の透明度を、薄くなり過ぎないように タイミングをずらしつつ増減させるほうが自然な気がします。
メンテ
Re: ADVの立ち絵の表現 ( No.2 )
名前:Soop 日時:2015/01/28 14:02

少しでも薄く(背景が見えてしまう)なってしまうと例えば顔の一部分だけが変わるような時に不自然になってしまいます…… 他のエンジンを見てみるとどれも不思議な動作をしていたのでどうなっているのかなと
メンテ
Re: ADVの立ち絵の表現 ( No.3 )
名前:たろう 日時:2015/01/28 22:54

顔の一部分だけ変える場合はたとえば目のない顔画像を用意して 目だけの画像を入れ替える様な使い方が普通かと思われます。 ひょっとするとLive2Dのような表現を目指していらっしゃいますか? だとすると以前この掲示板で話題が上がっていたと思いますので、 お探しになると良いと思います(^^)
メンテ
Re: ADVの立ち絵の表現 ( No.4 )
名前:管理人 日時:2015/01/29 02:54

二つの画像を綺麗にクロスフェードさせたいということですね SetBlendGraphParam というリファレンスに載っていない関数を使用すると可能です この関数を実装した当時の私の書き込みは以下の通りですので、よろしければご覧ください ---------------------------- // 描画処理時に描画する画像とブレンドする画像のブレンド設定を行う // BlendGraph を -1 にすれば設定を解除、その場合 BlendType とその後ろのパラメータは無視される int SetBlendGraphParam( int BlendGraph, int BlendType, ... ) ; 今までも LoadBlendGraph と DrawBlendGraph という関数で使用していた『画像合成描画の機能』を拡張して作った関数で、 二つの画像を合成して描画することが出来ます // 例:grhandle1 と grhandle2 の画像を同じ比率で合成して描画する SetBlendGraphParam( grhandle2, DX_BLENDGRAPHTYPE_NORMAL, 128 ) ; // 合成する画像の設定 DrawGraph( 0, 0, grhandle1, TRUE ) ; // 合成の設定がある状態で DrawGraph をすると合成されます SetBlendGraphParam( -1, 0 ) ; // 合成の設定を解除 という感じに、DrawGraph などで描画する前に SetBlendGraphParam の第一引数に合成したい画像、 第二引数に DX_BLENDGRAPHTYPE_NORMAL、 第三引数にブレンド率( 0( 合成画像0% )〜255( 合成画像100% ) ) を渡して呼んだ後に DrawGraph, DrawExtendGraph, DrawRotaGraph の何れかの描画関数を呼ぶと 指定の通りの合成を施した状態で描画されます( DrawModiGraph は未対応です ) 合成の設定はずっと残ってしまうので、描画した後は第一引数に -1、第二引数に 0 を代入して もう一度 SetBlendGraphParam を呼んでください ---------------------------- よろしければお試しください m(_ _)m
メンテ
Re: ADVの立ち絵の表現 ( No.5 )
名前:Soop 日時:2015/01/29 23:55

ありがとうございます 自分の考えているような表現が出来ました 思っていたより簡単でスマートに書けていいですねこれ
メンテ

Page: 1 |

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

   クッキー保存