プレイ日記
moh6an moh6an
参考書にHSVからRGB変換のやり方が載ってたので、見よう見まねでc言語のソースをプチコンに移植する ロジックは説明読んでもヨウワカランかった。実装したものの重い・・・ とりあえず叩き台、右の色相バーの一番上の色から、彩明度ボックスを描画している、ほんとは三角にしたいのだけど、やり方わからず
5そうだね
プレイ済み
返信[1]
親投稿
moh6an moh6an
テスト、「HSV2RGB04」 公開キー:X3SNY5KF
0そうだね
プレイ済み
返信[2]
親投稿
moh6an moh6an
ExpressionというソフトのHSVカラーパレットを実装してみたい人生だった
0そうだね
プレイ済み
返信[3]
親投稿
moh6an moh6an
なおさんの「PetitBrush」のHSVカラーピッカーは実用レベルに速いなぁ どうやってるんだろ?
0そうだね
プレイ済み
返信[4]
親投稿
myu314 myu314
高速化、そんなに難しくないですよ。 プチコン3号って内部的にはRGBA5551の16bitカラーで、RGBは32段階しかないんですよね。 この場合HSVはそれぞれ186,32,32段階あれば全ての色を網羅できます。 というわけでSVの部分は32x32ピクセル分の計算で十分です。 (もうちょっと言うと32x32/2なんですが) 次に三角にする方法ですけど、Vの値ってそのままRGBの最大値なんですよね。 最小値は色によって変わるけど0より小さくなることは無いです。 たとえばH=0の時はV固定でSを変化させると、(V,V,V)から(V,0,0)の間で滑らかに変化します。 ってことはV+1段階で表現できる、それを中央に寄せながら表示すれば、SVは底辺32高さ32の三角形になりますよね
1そうだね
プレイ済み
返信[5]
親投稿
moh6an moh6an
>myu324さん ありがとうございます、ちょっと理解が追いついてないのですが コーディングしながら考えます 少なくとも計算量は1/2以下に減らせるようですね(^^)
0そうだね
プレイ済み
返信[6]
親投稿
myu314 myu314
あ、解りにくくてすみません(^^; moh6anさんのプログラムで言うと、BOX_WとBOX_Hを32にしてスプライトなんかで好みの大きさに拡大表示してやる感じです。 手元で32x32にして見ましたが、これだけでも使えそうな速さかなと思いました(New3DSの場合) なおさんのプログラムだとこれに加えて色相だけ変化させたRGBを先に計算してあります。 moh6anさんのHSV2RGB04の67~97行まであたりの処理ですね。 ここはHueが決まれば計算できるので配列に入れておけば毎回計算する必要がなくなります。
1そうだね
プレイ済み
返信[7]
親投稿
moh6an moh6an
や、理屈はわかったんですが、三角のセンタリングがよく解ってなくて延々悩んでました(悩みどころが違う(^_^;)) 三角形の問題は解決しもう少しなんですけど、黒と白が逆になっている問題が解決できてません、あと少しで完成できると思います
0そうだね
プレイ済み
返信[8]
親投稿
moh6an moh6an
出来ました! これや!おいらこれがほしかったんやぁ!!! ちょっと色相の描画が遅れるものの、 大満足です! 公開キー:Q3483X3S
1そうだね
プレイ済み
返信[9]
親投稿
moh6an moh6an
あとは縦横32ピクセル以上は計算いらないってことですよね、このバージョンももうちょい詰められそうです
0そうだね
プレイ済み
返信[10]
親投稿
moh6an moh6an
ふと思ったのですがSVの無彩度三角の配列にカレントHのRGB値を左からα0から加算しながら描画すればHSV2RGB関数呼び出さないでSVボックスを描画できる?
0そうだね
プレイ済み
返信[11]
親投稿
myu314 myu314
成功おめでとうございます。 三角形、よく考えたら正三角形にしたり色々面倒だなということにあとで気付きました:) petitburshの高速化処理はまさにそんな感じですね。 全てのHについてRGBを事前に計算してます。 ただ、Vのことがあるのでアルファで加算だけでは上手くいかない気が…。 GLOADのパレットモードを利用して、事前にピクセルデータを用意しておき、パレットのみ再計算して描画が最速かもしれません。
1そうだね
プレイ済み
返信[12]
親投稿
moh6an moh6an
SVボックスの件、うまくいきました、一番左のラインが結局RGBの(31、31、31)~(0、0、0)なので実用上問題なかった。 あとは配列をGLOAD転送するだけなのですがこれがうまくいかず。 GSAVEで保存された配列のデータ構造ってどうなってるんでしょう?
0そうだね
プレイ済み
返信[13]
親投稿
moh6an moh6an
まぁでもだいぶ速くなったので見てやって下さい 「HSVカラーピッカー03」公開キー4348YJDF
0そうだね
プレイ済み
返信[14]
親投稿
myu314 myu314
glätte公開おめでとうございます:) 今後の発展が楽しみにしてます。 最近お絵かきソフトが充実してきて楽しいです。 GSAVEの形式について、もう解決されいるかも知れませんが、 色変換フラグがFALSEならRGB()関数と同じ、TRUEならRGBA5551の16ビット数値(内部形式)になります。 GSAVEは内部のデータを受け取るだけなので、パレットを利用する場合はGSAVEではなく自分で配列を用意することになります。 こんな感じです【DACQE3HJ】 ざっと測ってみたら240x240で0.65フレーム程度なので十分60F維持できそうな感じですね。 旧3DSだと速度が大体1/3なのでギリギリ30F程度でしょうか。 色計算は真面目にやれば倍速に出来ますが、体感はそんなに変わらなさそうな感じです。
1そうだね
プレイ済み
返信[15]
親投稿
moh6an moh6an
myu314さん、ありがとうございます 公開してみたものの、旧3DSだとチラつきが多発して、ご迷惑をお掛けしてます
0そうだね
プレイ済み
返信[16]
親投稿
moh6an moh6an
GLOADに使う配列は[幅,高さ]ではなく[高さ,幅]だったんですね・・・判らなくて1日唸ってた
0そうだね
プレイ済み
返信[17]
親投稿
moh6an moh6an
FORループのコストが結構高い・・・・
0そうだね
プレイ済み
返信[18]
親投稿
moh6an moh6an
無駄にループしていた・・・
0そうだね
プレイ済み