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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1124
prprArtlet2dのマトリクスを使った色相変更について2解決


prpr

リンク

2021/11/24(Wed) 16:44:52|NO.94482

お世話になります。
検索等いろいろ試行錯誤してわからなかったので質問します。
現在Artlet2dを使って、色相を変更するプログラムを書いています。


#include "a2d.hsp" #const picx 400 #const picy 255 #const hue 16 //16:オレンジ、48:黄緑、80:青緑、・・・ screen 0, picx, picy repeat picy hsvcolor 0, 0, cnt line 0, cnt, picx, cnt loop wait 100 alCreateImage 0, picx, picy alCopyScreenToImage 0, 0 hsvcolor hue, 255, 255 cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, double(ginfo_r)/255 cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, double(ginfo_g)/255 cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, double(ginfo_b)/255 cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0 alCopyModeColorMatrix cmatrix cls alCopyImageToScreen 0, 0 redraw

このhueのところをいじって色相変更していきます。

赤青緑とその中間色の黄色水色などはいい感じに作れてると思いますが、
オレンジ、黄緑などがうまくできていません。
hueの値が0から191まで完璧に動かすのが理想なのですが・・・

これを解決できるマトリクスがわからず困っています。
みなさんどうか知恵をお貸しください。
よろしくお願いいたします。



この記事に返信する


沢渡

リンク

2021/11/24(Wed) 17:07:57|NO.94484

黒から目標色へのグラデーションにする場合は、cmatrixを設定する部分の上3行分を

cmatrix(MAT_R) = double(ginfo_r)/255, 0.0, 0.0, 0.0, 0.0 cmatrix(MAT_G) = 0.0, double(ginfo_g)/255, 0.0, 0.0, 0.0 cmatrix(MAT_B) = 0.0, 0.0, double(ginfo_b)/255, 0.0, 0.0
とすれば良いですし、目標色から白へのグラデーションにする場合は、

r0=double(ginfo_r)/255 : g0=double(ginfo_g)/255 : b0=double(ginfo_b)/255 cmatrix(MAT_R) = 1.0-r0, 0.0, 0.0, 0.0, r0 cmatrix(MAT_G) = 0.0, 1.0-g0, 0.0, 0.0, g0 cmatrix(MAT_B) = 0.0, 0.0, 1.0-b0, 0.0, b0
とすれば良いのではないでしょうか。



prpr

リンク

2021/11/24(Wed) 18:18:19|NO.94489

沢渡さん

ご返答ありがとうございます!
後者のマトリクスで無事解決しました!
ありがとうございました!


#include "a2d.hsp" #const picx 400 #const picy 255 ;#const hue 16 //16:オレンジ、48:黄緑、80:青緑、・・・ screen 0, picx, picy repeat picy hsvcolor 0, 0, cnt line 0, cnt, picx, cnt loop wait 50 alCreateImage 0, picx, picy alCopyScreenToImage 0, 0 repeat 192 wait 1 hsvcolor cnt, 255, 255 r0=double(ginfo_r)/255 : g0=double(ginfo_g)/255 : b0=double(ginfo_b)/255 cmatrix(MAT_R) = 1.0-r0, 0.0, 0.0, 0.0, r0 cmatrix(MAT_G) = 0.0, 1.0-g0, 0.0, 0.0, g0 cmatrix(MAT_B) = 0.0, 0.0, 1.0-b0, 0.0, b0 cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0 alCopyModeColorMatrix cmatrix alCopyImageToScreen 0, 0 redraw loop



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.94482への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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