HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0522
nona32bitのPNGの色相変更の処理(出来ればArtlet2D使用)6解決


nona

リンク

2018/5/22(Tue) 10:48:30|NO.84469

掲示板を検索したうえで、
http://hsp.tv/play/pforum.php?mode=pastwch&num=42279
http://hsp.tv/play/pforum.php?mode=pastwch&num=1549
こちらの2つのスレッドを読んだうえでの質問です。

複数の仮想スクリーンを持ち、ボタンで仮想スクリーンに表示する画像イメージを選択・変更し、
その仮想スクリーンを重ねて実スクリーンに表示していく…という処理で、
簡単に言えば「着せ替えゲーム」を作っています。

なのですが、32bitのPNG(アルファチャネルでの透過部分付き)の画像の、
色相を変更する処理が、どうしてもつくれません。
仮想スクリーン上のものを、そのままアルファチャネル付きの32bitPNGとして保存したいため、
Artlet2Dを使用して制作したいです。
(なので、HSPDishで「gmulcolor」命令を使い、色相を変更する方法は使えませんでした)
(HSPDishでの色相変更についてはこちらのブログさんを参考にはしました:http://sinsei.space/blog/4541 )

作成できるならば、
「赤を強く」「弱く」「緑を強く」「弱く」「青を強く」…などの、
色変更のための上下矢印ボタンを画面内に設置し、それを押すと色相が変更されるもの、
上記のスレッドのように、バーを設置し、それを左右に動かして
決定するボタンを押すと、色相が変更されるもの、
など、どういう形でもいいのですが…

http://hsp.tv/play/pforum.php?mode=pastwch&num=42279
こちらのスレッドを読んで、
https://twitter.com/ry_nona/status/998554222730788864/video/1
こちらの動画の処理までは作れたのですが、
スレッドを読んでもカラーマトリックスの仕様をどうしても理解できず、
サンプルに提示されているソースをこれ以上改造できないところで止まってしまっています。

例えば、RGBやHSVのHの値をカラーマトリックスの数値に変更するような計算式がある…とか、
そういう解決策でも構いませんので、
なにかアドバイスを頂けたらとても助かります。



この記事に返信する


MillkeyStars

リンク

2018/5/22(Tue) 11:13:21|NO.84470

実際に動作を予定している環境は、Windows ですか? それとも HSP3Dish(スマホなどの端末) のどちらでしょうか?



nona

リンク

2018/5/22(Tue) 11:28:20|NO.84471

返答ありがとうございます、動作予定はWindowsです。



nona

リンク

2018/5/22(Tue) 17:16:57|NO.84472

すみません、カラーマトリックスの件は
http://hsp.tv/play/pforum.php?mode=pastwch&num=42279
で、なたでさんの書かれたサンプルコードを改変することで、ある程度解決しました。

でもやっぱり、Artlet2DのalCopyModeColorMatrix命令がよくわからず…
変数に、alCopyModeColorMatrix命令の引数arrを入れたり、
このarrの中身をどこかに保存したりする方法ってありますか?
あとになってから「ここで作った色をもう一度使いたい」というような場合のために
どこかに残したいのですが、サンプルコードをしっかり読んでもうまく理解できず…

HSPは、「12歳から始める…」の本で勉強したのですが、
この本には引数などの説明はなかったため、まだよくわかっていないんです…
先ほどから自分でも調べているのですが、やはり解決には至っていません。
お力添えいただけたら幸いです。



暇人

リンク

2018/5/22(Tue) 22:58:07|NO.84477

>変数に、alCopyModeColorMatrix命令の引数arrを入れたり、
使用してるarrは実数型の配列変数

ddim cmatrix_bak,20 repeat 20 cmatrix_bak(cnt)=cmatrix(cnt) loop
これでcmatrixをバックアップできる

複数残したいなら
二次元配列にする

ddim cmatrix_bak,20,1 bak_index=0 repeat 20 cmatrix_bak(cnt,bak_index)=cmatrix(cnt) loop
bak_indexで何番目に入れるかを管理

取り出しは

repeat 20 cmatrix(cnt)=cmatrix_bak(cnt,bak_index) loop



nona

リンク

2018/5/23(Wed) 13:51:17|NO.84481

暇人さま、ありがとうございます!!
無事、色を保存して、別の色に変更した後に、また同じ色に戻す、という処理が出来ました。

これで着せ替えゲームを完成させることが出来そうです。
今までは、全部違う色で保存した複数のpng画像を切り替えていたのですが
おかげさまで、大きくファイル数を減らし、軽量化ができます。

ありがとうございました!!



nona

リンク

2018/5/23(Wed) 18:10:18|NO.84482

解決はしましたが、一応、こんな感じでできました、というものを貼っておきます。
今後、似たようなものを作る方の参考になりますよう。

https://ux.getuploader.com/ry_game/download/17
(test.hsp をエディタで読み込んで実行してください)

http://hsp.tv/play/pforum.php?mode=pastwch&num=42279
↑のスレの、なたでさんのソースを、少し改変し使わせていただいています。



ONION software Copyright 1997-2018(c) All rights reserved.