#30 Article 575 Posted at 1993/03/20 15:27:09 by ☆まちばり☆ (MAP641) []

Subject: あんちえいりあす

某氏とのメールのやりとりでアンチエイリアスの解説をしたのですが、結構細かく
 書いたのでこのまま捨てるのももったいない、ということでアップします。
 アンチエイリアスでは困っている方が多いようなので、参考にしていただければ
 幸いです。

 あ゛、そうそう、これは私の考えに基づいたものなので本当のアンチエイリアスが
 どういうものだかは私はよく分かってません。(^_^;)
 知ってる方は教えていただけるとうれしいです。はい。

------------------------------------------------------------------------------
>> パレットの中間の色でAAもどきのことをするのは逆効果なのでやめておいた方が
>> よいと思います。実際、まともにAAするには最低でも別に2色は必要です。
> AAっていうのは、ギザギザ取りの事ですよね?
> やはり何か一定の法則があるのでしょうか?

 法則、という表現は変ですが、セオリーがあるのは確かです。
 具体例を以下に示しましょう。

 簡単のために、1ドットのラインを例に挙げて説明します。
 これが分かれば、太さのあるラインでも大丈夫です。

 ふつう、ちょっと傾いている直線は以下のように表します。

 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■■■■2
 □□□□□□□□□□□□□□□□□□□□□□□□■■■■■■■■□□□□□
 □□□□□□□□□□□□□□□□■■■■■■■■□□□□□□□□□□□□□
 □□□□□□□□■■■■■■■■□□□□□□□□□□□□□□□□□□□□□
 ■■■1■■■■□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 傾きは斜め1/8、すなわち横に8ドット行ったら上に1ドット上がるわけです。
 曲線の場合、この傾きが順次変わっていきますが、まあそれはこの応用なので
 あとで考えていただくとして、このラインを構成ドットを無視して、1と2の点を
 太さ1のラインで本当の直線で直結したらどうなるでしょうか?
         ^^^^^^^^^^^^
 まあここにはちょっと表現できないので(^_^;)、言葉で説明しますと、
 □の中にもちょっと白い部分ができて、■は全部が全部白い部分ではなくて、
 上か下がちょっと削られたりすることになります。

 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□■■■■■
 □□□□□□□□□□□□□□□□□□□□□□□□■■■■■■■■□□□□□
 □□□□□□□□□□□□□□□□■■■■■■■■□□□□□□□□□□□□□
 □□□□□□□2■■■■■■■■□□□□□□□□□□□□□□□□□□□□□
 ■■■■■■■3□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 上の図の2のところは、下半分ぐらいが白く、3のところは上半分ぐらいが白く
 なる、というのが本当は正しいはずです。
 と考えれば、本来のアンチエイリアスというのは以下のようなものであるべきです。

 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□11223344■
 □□□□□□□□□□□□□□□□□□□□1122334455667788□
 □□□□□□□□□□□□1122334455667788□□□□□□□□□
 □□□□1122334455667788□□□□□□□□□□□□□□□□□
 ■■■■55667788□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 1は下20%が白、2は下40%が白、3は下60%が白、4は下80%が白。
 5は上80%が白、6は上60%が白、7は上40%が白、8は上20%が白。

 当然ドットを超えた表現はできませんから、ここでちょっとした小細工をします。
 つまり下20%が白、というかわりに元の20%の光度の色で代用するわけです。
 こうすれば、上は次のようにすればいいことになります。

 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□AABBCCDD■
 □□□□□□□□□□□□□□□□□□□□AABBCCDDDDCCBBAA□
 □□□□□□□□□□□□AABBCCDDDDCCBBAA□□□□□□□□□
 □□□□AABBCCDDDDCCBBAA□□□□□□□□□□□□□□□□□
 ■■■■DDCCBBAA□□□□□□□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 Aは光度20%、Bは光度40%、Cは光度60%、Dは光度80%。
 こうすると、見事なまでにジャギーは消え去ります。(嘘じゃないです。)

 むろん、実際にはRGB指定で20%、40%、ではないです。この辺は目で見て
 調節します。

 さて、ここで問題なのは、上では4パレット使いました。実際には4パレットも
 使えません。ではどうするかというと、BとCを同じ色にしてDは元の線の色を
 90%の色に変更して設定し、Aを5%ぐらいの色で指定します。こうすると、
 2パレットでもなんとかAAすることができます。

 がしかし、元の線の色+1パレットではアンチエイリアスは不可能です。
 なぜか? 「元の線になにかしら色を付け足す」わけだから、その分、そこの
 線が太くなって見えるのです。
 上の説明だけではBとCを同じ色にし、Aを全部捨ててDが元の色、でも
 アンチエイリアスになりそうですが、実際には人間の目はそうはいきません。
 やはり、きれいに見えるためには最低でも元の色+2色は必要です。

 もう一つ。以上では黒地に白のラインを引く話をしましたが、実際には当然
 逆ですよね。(^_^;) しかも色つきの上にラインを引く。
 もし、髪の毛をアンチエイリアスするのであれば、使う色は当然、「ラインの黒と
 髪の毛の色を混ぜ合わせた色」にならなければならないわけです。

 でも実際には色境界はたくさんあるわけで、それぞれについて別々にアンチエイリ
 アスをするにはパレットが絶対に足りない。ということは、「見せたい部分だけ
 アンチエイリアスをする」か、「アンチエイリアス用のパレットが確保できる
 ようなうまい(絵全体の)色配分を考える」か、どちらかをするしかないわけです。
 それができなければ、やらない方が不自然にならなくてよい、というわけです。

------------------------------------------------------------------------------

                       MAP641 まちばりあかね☆