背景と目的
筆者はテストパターンを作成している時、Rectangle Mask を使った際のアンチエイリアシングが非常に気になった (図1 参照)。
以前にブログで書いた通り、DCTL を使えばこうしたトラブルは防げるのだが Rectangle Mask は地味に使用頻度が高いので、筆者は回避方法を欲していた。
少し試行錯誤したところ、比較的簡単にアンチエイリアシングの発生を防ぐことができたので、備忘録として記事を残すことにした。
Rectangle Mask を使った際のアンチエイリアシングを防ぐ方法
はじめに前提条件を3点述べておく。
1点目。Rectangle Mask の Width、Height は整数のピクセル数であるとする。 例えば (Width, Height) = (7px, 1px) や (Width, Height) = (8px, 2px) であるとする。
2点目。ノードは図2 のように接続されているとする。
3点目。本記事ではプロジェクトの解像度は 1920x1080 であるとする。この後に 1920 や 1080 がマジックナンバーとして出てくるが、それは解像度情報であることにご留意頂きたい*1。
それでは、具体的な方法を以下で述べていく。Width、Height が偶数ピクセルの場合と奇数ピクセルの場合とでやり方が異なるので、以下で別々に説明する。
Width、Height が偶数ピクセルの場合
Rectangle Mask の Center, Width, Height パラメータを 図3 のように設定する*2。 この例では中心座標を (X, Y) = (976, 506)、大きさを (Width, Height) = (16px, 4px) としている。
ポイントは Center の X, Y 値がピクセルの端に来るように 1920 と 1080 で割っている点である。 こうすることで Width、Height がピクセルからはみ出すことが無くなり、結果としてアンチエイリアシングの発生を防ぐことができる。
Width、Height が奇数ピクセルの場合
Rectangle Mask の Center, Width, Height パラメータを 図3 のように設定する。この例では中心座標を (X, Y) = (976, 506)、大きさを (Width, Height) = (15px, 3px) としている。
ポイントは Center の X, Y 値がピクセルの中心に来るように、0.5 を加算した後に 1920 と 1080 で割っている点である。 こうすることで Width、Height がピクセルからはみ出すことが無くなり、結果としてアンチエイリアシングの発生を防ぐことができる。
参考情報
図3 や 図4 のビューアーのように Nearest Neighbor 拡大および Pixel Grid の表示を行うには、ビューアで右クリックし 図5 の設定をすれば良い。
- Smooth Resize -> Off
- Show Pixel Grid -> On
考察というか感想
ビューアーの Pixel Grid 表示が大変便利だった。マニュアルを読んでいたら偶然に見つけることができた! マニュアルも少しずつ読み進めて知識を蓄えていきたいところである。