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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0320
シルバー・ソード立ち絵画像の輪郭線の黒化8解決


シルバー・ソード

リンク

2009/3/20(Fri) 00:04:31|NO.23991

どうも、シルバー・ソードです。
現在、背景を完全な黒で塗り潰した立ち絵をgcopyで表示しようとしています。
一応、見やすいように箇条書きにて詳しい説明を。

  ’愀覆完全な黒で塗り潰してある立ち絵を用意
  ⇔ち絵をbuffer 1 にpicloadで仮表示する
  さらに別のbuffer 2 にbuffer 1 の画像をgzoomで縮小して仮表示する
  gmodeでモード2を指定
  gcopyにてbuffer 2 を指定して立ち絵を表示
buffer 1,640,480
picload "tatie1.BMP" buffer 2,640,480 gzoom 320,451,1,0,0,640,902,1 gsel 0 pos 200,0 gmode 2,640,902,256 : gcopy 2,0,0,320,451

参考に…、画像のカラーモードは1677万色です。
上記のようにすると、透過されていないキャラの周辺…輪郭にどうしても黒い線が残ってしまいます。
ペイントソフトにて元画像の輪郭線の色を調べたのですが、背景と同じく完全な黒を示します。
これは、ウィンドウに表示すると何かが変わってしまうからでしょうか?

こうなってしまう理由を含め、ヒントでもよろしいので対処法を教えて下さると幸いです。



この記事に返信する


SYAM

リンク

2009/3/20(Fri) 00:51:36|NO.23992

残った黒い線というのがどんなものなのか分からないので確実な回答ができませんが…
そのキャラクターの輪郭付近に輪郭の色が混じっていると、背景と完全に同じ色の部分だけが透過して それよりちょっと内側の「黒っぽい」部分がまったく透過しませんから黒く見えてしまう とかではありませんか?



シルバー・ソード

リンク

2009/3/20(Fri) 10:13:19|NO.23994

調べてみたのですが、どうやらそのようです。
これはHSPというより、画像に問題があることは分かりました。

本件からは少し外れるのですが、フリーソフトでこれを直すのに適切なペイントソフト等はあるのでしょうか?
私は今現在pixiaを使っているのですが、その場合だとドット単位で直さなければいけませんので。



loc

リンク

2009/3/20(Fri) 13:07:24|NO.23998

gzoomの最後のフラグを0にすることで改善できませんか?

1にするとスムーズになりますが
完全な黒色0,0,0と他の色でハーフトーンになり1,1,1などの
色コードに変化してしまいます。



シルバー・ソード

リンク

2009/3/20(Fri) 15:15:10|NO.23999

gzoomのフラグを0にしても、やはり前回と同じく表示されてしまいました。

ふと思ったのですが、多分画像を表示する過程で、
立ち絵の輪郭線(透明色処理済み)が初期化されてしまうからだと思います。



ライト

リンク

2009/3/21(Sat) 00:14:33|NO.24007

多分画像自体に色が混ざってるんですよね?
私も何度も体験しました。1ドット単位で気を使う必要があります。

私はpictbearってフリーソフト使ってますが、この方法でよければ解説しておきます。
元画像がある場合(修復の必要なし)
1、立ち絵用意、レイヤー1にセット
2、完全な黒(透明色)レイヤーを2にセット
3、レイヤー1の切り抜き部分を範囲指定する。
この時、範囲指定の精度をツールオプションで設定し、調整できます。

元画像がない、(修復が必要な場合)
1、真っ黒の部分を選択し、選択範囲の縮小で1〜5ピクセル(要調整)し、
元の輪郭線を残してそれ以外を切り取る、など。

なんにせよ、輪郭線が完全な黒なら、透明化されてしまいますから、
gmode 4で、透明色をcolor 255,0,0にする手もあります。(私はお勧めしませんが)

元画像に全体+(0,0,1)して置くのも手ですね。
乗算ブラシ系で塗るか、レイヤー1%で合成するか、RGB+処理するか、
ソフトが何であれ、何かしらの機能はあると思います。
解像度の縮小時にも混ざったりするのでご注意を。



GENKI

リンク

2009/3/21(Sat) 01:30:31|NO.24008

> 立ち絵の輪郭線(透明色処理済み)が初期化されてしまうからだと思います。

PNGかGIFで作られたんですね。(話の流れからいくとPNGかな?)
どちらにしても透明色は無効になり、黒(0,0,0)だけが透明と認識されます。
そのためmode 2だと輪郭部分の黒っぽい色は除いておかないと残って目立ってしまいます。

面倒ですが一つの解決策としてgmode 7を使う方法もあります。
ただ、アルファブレンド成分用画像を作る方法を思いつかないのですが…。いいツールあるのかな?


> 私はpictbearってフリーソフト使ってますが、この方法でよければ解説しておきます。

このソフトドット単位の処理がしやすくてなかなかいいソフトです。
最近RCが取れた正式版が出たようですね。


ライトさんの説明はどうも「黒い線で書いた輪郭線を残したい場合の説明」な気がするのですが、
今回の場合とは違う気がします。ということで、一応私からも説明をしておきます。(勘違いだったらライトさん、ごめんなさい。)
同じくPictBear 2.0を使います。

・問題の画像を表示。
・色の取得で現在の色を黒(0,0,0)にする。
・メニュー:選択範囲 -> 色域指定
  許容量:1(ここはもう少し増やしたほうがいいかもしれません。調整してください。)
  選択領域を反転する:チェックなし
・okをクリック。
・Ctrl+C
・Ctrl+V
・メニュー:選択範囲 -> 選択範囲の解除

これで「貼り付けレイヤー」に背景用画像が作成されます。
レイヤーウィンドウで「背景」レイヤーをクリックして「背景」をアクティブにし、
好きなだけ塗りたくって修正してください。
「貼り付けレイヤー」があるので元の輪郭をはみ出すことはありません。

画像ファイルに出力時は、
メニュー:レイヤー -> レイヤーの結合
としてレイヤーを全て結合してから保存してください。



SYAM

リンク

2009/3/21(Sat) 01:35:14|NO.24009

元画像にドット単位でのアルファ値(不透明さ)が含まれたデータは、gmode 2でのgcopy でうまく扱えません。

アルファ値が 255 未満の色、つまり半透明な色というのは、いってみれば不完全な色です。他の情報(この場合、背景の色)と合わせてはじめて完全な色となります。
gmode 2 では完全な不透明と完全な透明しか扱えませんから、色がある部分は完全な色でないといけません。

問題は、背景が必ずしも黒とは限らないのに、黒と混ぜて「完全な色」にしたデータになっているから、黒い輪郭が出ることです。
本来画像にはその「黒」は無いはずなのに、もう混じってしまっているのが困りモノなわけです。


もし元画像があるのであれば、アルファ値が255未満であるドットをすべて完全な透明色にすることで、不完全な色をなくすことはできます。
ただし、単純にそれだけを行えば残った完全な色の部分の輪郭が汚くなってしまう可能性が高いですから、それは手で直すしかありません。

元画像がない、つまりもう黒い背景のビットマップ画像しかないのであれば、もう混じった色は分離できませんから、たとえば黒が混じり始めたところを削るか、すこし明るくする必要があります。

……どっちにしろ、すでにぼやけた輪郭を 「完全な色」と「完全な透明」で区切るのには、簡単なやりかたというのはありえません。
一番簡単なのは、画像を作る時に最初から、輪郭の外側にだけはアンチエイリアシングを施さない、つまり 常に完全な色で絵を描く ことです。



シルバー・ソード

リンク

2009/3/23(Mon) 01:39:34|NO.24056

返信が遅くなりましたが、無事に実装する事が出来ました。
いろいろと教えて下さり、ありがとうございましたw



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