アンチエイリアス部分にアルファチャンネルを適用する

最終更新:2016/09/06

3DCGモデルのエッジ・ラインの抽出について書いた2013年5月14日の記事では、エッジ・ラインだけを残してそれ以外を透明にするためにGIMPの「色域を選択」機能で一括選択してざっくり削除していたけど、アンチエイリアシングで生じた暗い色のピクセルもそのまま残ってしまい、あまり綺麗にはできていなかった。

そこで、8ビット256階調のアルファ・チャンネルを利用してピクセルが暗くなるほど透明度が増すように設定し、背景に溶け込ませることができないだろうかと考えた。画像処理を得意とするソフトウェアを開発する企業の中には当然同様のことを考える人はいて、誰もが知っているAdobe Photoshopはもちろん、フリーライセンスのGIMPでも「レイヤーマスク」という機能で実現されている。モノクロ256階調のレイヤーマスクが黒に近いほどレイヤーの表示は透明に近づき、白に近いほど不透明度が増していく。

マスクを使うとなれば、グレースケールとしても使える画像のほうが何かと都合がいいので、前の記事では、背景色やサーフェース色を暗い青 RGB=(0,0,32) に指定していたけど、これを黒 RGB=(0,0,0) に設定しなおす。エッジ・ラインの色は白 RGB=(255,255,255) で同じ。前回はLightWaveの出力をアルファ・チャンネルとともに32ビットPNG形式で保存していたけど、あえてアルファ・チャンネル情報を破棄して24ビットPNG形式で保存する。

今回用意したのは次の画像(モデルは前回のものとは若干異なる)。

Alpha005

Adobe Photoshopによる方法(Photoshop CC 2015)

Photoshopで対象となる画像を開き、レイヤーパネルの下に並んでいるアイコンの中の左から3つめの「レイヤーマスクを追加」ボタンをクリックする。メニューからでは、「レイヤー」-「レイヤーマスク」-「すべての領域を表示」を順に選択する。すると真っ白なレイヤーマスクのサムネイルが当該レイヤーの隣に追加される。

Alpha000

次に、対象画像のレイヤー(カンバス)を全選択(Ctrl+A)し、コピー(Ctrl+C)しておく。レイヤーマスクのサムネイルをクリックして選択状態にして、更にAltキーを押しながらクリックすると、レイヤーマスクの編集画面になる(この辺はちょっとわかりにくかった)。コピーしておいたレイヤーをペースト(Ctrl+V)する。選択状態になっていてペーストできない場合は、いったんカンバスの外をクリックするなどして選択を解除しておく。

LightWaveでの画像保存でアルファ・チャンネルを破棄したのは、コピーしたレイヤーの余白に透明部分があると普通にペーストするだけでは同じ位置に貼り付けられないことがあるのと、透明だった部分のマスクは真っ白のままで変わらないので、あらかじめ黒で塗りつぶしておかなければならないから。位置については「編集」メニューから「特殊ペースト」、「同じ位置にペースト(Shift+Ctrl+V)」を順に選べばいいんだけど、1ピクセルでもズレると結果が大幅に変わってしまうので、余計な手間はないに越したことはない。

なお、今回は白い実線部分を残しておきたいので、「階調の反転」は行わない。

Alpha003

再びレイヤーのサムネイルをクリックすると、元は黒かった部分が透明になっている。わかりにくければ、背面に何か色のついたレイヤーを一時的に差し入れてみる。エッジ・ラインに隣接するアンチエイリアスのピクセルもレイヤーマスクの階調に従って半透明状になっているので、これを「ファイル」メニューから「別名で保存」を選択してPNG形式で保存する。

GIMPによる方法

GIMPの場合はPhotoshopよりもシンプル。レイヤーなどが表示されているパネルで対象画像のレイヤーを右クリックすると、「レイヤーマスクの追加」というメニューがある。メニューからでも「レイヤー」-「レイヤーマスク」-「レイヤーマスクの追加」で実行できるけど、右クリックのほうが操作は直感的。

Alpha001

クリックすると、どのようにレイヤーマスクを生成するのか「レイヤーマスク追加」ウィンドウで聞いてくるので、「レイヤーのグレースケールのコピー」を選択して「追加」ボタンをクリックする。これだけでいい。GIMPのインターフェースに慣れてさえいれば、レイヤーマスクの編集の手間がない分、Photoshopよりも手軽ではある。

Alpha002

対象画像を「可視部分」と「不可視部分」に分けて重ねているだけで、特殊なアルゴリズムを用いているわけではないのでソフトウェア間の性能差は生じにくく、Photoshopでやっても、GIMPでやっても基本的に結果は変わらない(はず)。

レイヤーマスクを利用して加工したものが次の画像。白い実線以外の部分は透明になっているのがわかりやすいように、ウェブサイトの背景画像の上に表示されているもののスクリーンショットをとった。元の画像よりもエッジが細くなった印象はあるけど、従前の方法よりシャープさが増し、不自然な段差も少ない。エッジの太さについてはLightWave側でなんとでもできる。全体的には綺麗にできていると思うけどいかがだろうか。

Alpha004

関連記事

参考記事

タイトルロゴ改訂版

最終更新:2016/09/06

現在のロゴを拡大して改めて眺めていたら、当時は技術的に拙かったこともあってあちこち角がはみ出してたり、色彩がいまいちなのが気になってきた。そこで、Inkscape(0.48.1)を使ってSVG形式で作り直してみた。

Inkscapeはフリーライセンスのソフトウェアながら、座標の指定が厳密にできたり、マウスなどのポインティングデバイスでは指定しにくい細かいところはXMLエディタ編集機能で直接数値入力できるのが3DCG屋の私には性に合っている。CADのようなオブジェクトの整列機能も強化されて使いやすくなった。なお、現在安定版とされている0.48.4はGUIのライブラリに問題があるようで、メニューバーのフォントがおかしかったり、座標の指定に妙な挙動があってストレスがあるので、個人的には、0.48.1がおススメ。

以前のロゴは別のドローイング・ソフトウェアで作ったんだけど、古かったのもあって操作性が私には合わなかった(予備知識なしでいきなり作ったので、そもそも勉強不足だったっていう指摘は、まぁ、ごもっともなんだけど。細かいところを気にしていられるほどPCのパワーもなかった)。

VF_Logo_official_revised_compare

基本的なデザインは踏襲しているので、ほとんど自己満足の世界。

  • 前は縦の線と斜めの線の太さが同じになっていなかったので、三角関数を使って厳密に計算して太さを同じにしてみた。綺麗に揃ったようにも見えるし、太さに変化がなくて凡庸な感じになったような感じもする。サンセリフ(ゴシック体)風ってことで、これはこれでいいことにしよう。
  • 前はロゴの縁の処理が角張っていていかにも素人っぽかったので、角を少し丸めた。あまりやりすぎるとポップな感じになってしまうので、本当に「角を取った」くらい。「パス」ツール群にある「ダイナミックオフセット」機能はかなり使える。マウスでオフセット半径を大雑把に指定して、XMLエディタで丸め半径をキリのいい値に指定すれば綺麗に仕上がる。
  • 「VANGUARD FLIGHT」の語頭の「V」と「F」はもともと縦幅が大きかったけど、太さは他の字と同じで弱々しい感じがしたので太さを10%増しにした。あまり太くしすぎるとバランスが悪くなるので「測ってみたらわかるくらい」にしておいた。中学校の美術で習った、レタリングは「完全に太さや大きさを揃えてしまうと字によっては細く小さく見える」的なアレを思い出して参考にしてみた。
  • グラデーションがいまいちメタリックな感じになっていないので、もう一段深い色を追加した。全体が引き締まった。赤色の二つの「G」のグラデーションも見直して彩度を上げてみた。それから、下の行のグラデーションの位置がちゃんと中央になっていなかったので、中央にグラデーションの中心を揃えた。
  • 「R」のデザインがいまいちだったので見直してみたんだけど、やっぱりイマイチ。改善案が思いつかなかったので適当なところで妥協。「R」難しいよ、「R」。
  • 「Δ」はオマケ。ウェブサイトのトップページには採用しない予定。

GIMP2.8のメニューバーのフォントの戻し方

最終更新:2016/09/30

以前に、Inkscape 0.48.2以降のメニューがWindowsの設定値に従ってくれず、明朝体風のフォントになってしまうので、Inkscapeのメニューバーのフォントの戻し方という記事を書いた。

GIMP2.8.10より古いバージョン

最近、GIMPもバージョンアップして2.8になっていたので、アップデートしてみたところ、Inkscapeとまったく同じ問題が発生した。どうも、中国語のフォントが選択されているらしいんだけど、クロスプラットフォーム用のフリーライセンス・ライブラリを使用して開発しているソフトウェアではほぼ共通の問題があるらしい。

しかも、設定の変更の仕方が異なるという不親切さ(笑)。

次のgtkrcファイルをテキストエディタなどで開く。

C:\Program Files\GIMP 2\share\gimp\2.0\themes\Default\gtkrc
style "gimp-default-style"
{
  stock["gtk-dialog-error"] =
    {
      { "images/stock-error-64.png", *, *, "gtk-dialog" }
    }
(略)
}

上記の部分に、次のように1行追加する。

style "gimp-default-style"
{
  font_name = "Meiryo 9"
  stock["gtk-dialog-error"] =
    {
      { "images/stock-error-64.png", *, *, "gtk-dialog" }
    }
(略)
}

とりあえず、「gtk-2.0」というモジュールと「gtkrc」という設定ファイルが深く関与していることは両者に共通していたので、次にこういうことがあったらまずそこを疑えばいいということだね。

GIMP2.8.16/18

実際に試すことができたのがGIMP2.8.16とGIMP2.8.18だけだったのでこれら2つのブランチについてはほぼ確実だと思うけど、他のウェブサイトを見る限りでは、GIMP2.8.10以降であればおそらく以下の方法でメニューバーのフォントを変更できる。

最近のGIMP2.8ブランチでは変更方法が変わった。PCのユーザーごとに設定ファイルが独立したため、カスタマイズしやすくなった。次のパスにファイルが存在していれば、gtkrcファイルを開く。存在していない場合は、新規作成する。普通のテキスト・ファイルでいい。

C:\Users\[USER NAME]\.gimp-2.8\gtkrc

次の一節をgtkrcファイルの末尾に追加するか、新規作成したファイルの先頭に記述する。

style "gimp-default-style"
{
  font_name = "Meiryo 9" 
}

GIMP2.8がこのファイルを参照しているとする根拠は、次のパスにあるthemercというテーマ設定ファイルで上のgtkrcファイルをインクルードしているから。

C:\Users\[USER NAME]\.gimp-2.8\themerc

themercファイルには次のように記述されている。

# GIMP themerc
#
# This file is written on GIMP startup and on every theme change.
# It is NOT supposed to be edited manually. Edit your personal
# gtkrc file instead (C:\Users\Taku Oshino\.gimp-2.8\gtkrc).

include "C:\\Program Files\\GIMP 2\\share\\gimp\\2.0\\themes\\Default\\gtkrc"
include "C:\\Users\\[USER NAME]\\.gimp-2.8\\gtkrc"

# end of themerc

もし、インクルードしているファイルが異なる場合は、themercに記述されているパスをよく見て新規gtkrcファイルを作成する。

参考記事

Inkscapeのメニューバーのフォントの戻し方

最終更新:2016/09/06

だいぶ前に、Inkscapeをバージョン0.48.2にアップデートしたらメニューバーのフォントが突然明朝体風になってしまって気持ち悪かったんだけど、戻し方がわからなくて困ってた。コンフィギュレーション系のファイルを開いてみてもどこをいじればいいのかサッパリ。

手に負えそうにないので、ネットで調べてみた。要約すると次のようにコードを少し編集する。

次のgtkrcファイルをテキストエディタなどで開く。

C:\Program Files (x86)\Inkscape\etc\gtk-2.0\gtkrc

gtkrcファイルの末尾に次の2行を追加する。

# UI font
gtk-font-name = "sans 10"

次のpango.aliasesファイルをテキストエディタなどで開く。

C:\Program Files (x86)\Inkscape\etc\pango\pango.aliases

pango.aliasesファイルの「sans」行の「arial,」の直後に「meiryo,」を追加する。

tahoma = "tahoma,browallia new,mingliu,simhei,gulimche,ms gothic,kartika,latha,mangal,raavi"
<span style="background-color: lemonchiffon; padding: 3px;">sans = "arial,browallia new,mingliu,simhei,gulimche,ms gothic,kartika,latha,mangal,raavi"</span>
serif = "times new roman,angsana new,mingliu,simsun,gulimche,ms gothic,kartika,latha,mangal,raavi"
mono = "courier new,courier monothai,mingliu,simsun,gulimche,ms gothic,kartika,latha,mangal,raavi"
monospace = "courier new,courier monothai,mingliu,simsun,gulimche,ms gothic,kartika,latha,mangal,raavi"

これはクロスプラットフォームのソフトウェア開発の素人にはわからないね。世の中にはすごい人がいるものだね。感謝感謝。

いつの間にかバージョン0.48.4が安定版になっていたけど、せっかくメニューバーが直ったことだし、アップデートはまた今度にしよう。(0.48.4はGUIに座標や各種数値を入力できない不具合があるので、バグフィックスされるまでは0.48.1以下が無難。)

gtkrcに次のコードを直接書いてやってもいけそうな気もするけど、今は0.48.1に落として使っているので試してみてはいない。

gtk-font-name = "Meiryo 10"

参考記事