【Simutrans Advent Calendar 2022】きたすみ式・乗算レイヤーを用いた鉄道車両アドオン作画法

一般記事
この記事は Simutrans Advent Calendar 2022 の2日目の記事です。
アドカレのリンクはこちら→ https://adventar.org/calendars/7489

こんにちは。毎度お世話になっております。きたすみです。
この記事では私流の鉄道車両アドオンの制作方法について、乗算レイヤーの軽い解説と一緒に紹介します。

1.注意

アドオンの作画法やその考え方は無数に存在します。この記事はあくまでもきたすみの考え方について述べたものです。
レイヤー機能及び乗算レイヤー機能のある画像編集ソフトを前提に解説します。
各種用語はソフトによって表記揺れがある場合があります。
レイヤーそのものについての解説は割愛します。

2.乗算レイヤーとは

正直なところ、他の解説サイト等を見たほうが早い気がしますが、一応ここでも解説しておきます。

ここに2枚のレイヤーがあります。1枚は青一色(RGB=0,0,255、不透明)、もう1枚は白(RGB=255,255,255、不透明)と灰色(RGB=128,128,128、不透明)の市松模様です。
市松模様のレイヤーの上に青一色のレイヤーを通常レイヤーとして重ねます(画像編集ソフトで特に操作をしなければ通常レイヤーとなると思います)。上にあるレイヤーが不透明なので、重ねた結果は青一色になります。
では、上にある青一色のレイヤーを「乗算レイヤー」に設定します。
下のレイヤーの市松模様が透けて見えるようになりました。

乗算レイヤーの各画素のRGBの計算式は次の通りです。

任意の画素について、
上のレイヤー(乗算レイヤー)は RGB=( R1 , G1 , B1 )、
下のレイヤー(通常レイヤー)は RGB=( R2 , G2 , B2 )とする。
乗算結果は RGB=( R1×R2/255 , G1×G2/255 , B1×B2/255 )

今回の例では、
上のレイヤー(乗算レイヤー)は RGB=( 0 , 0 , 255 )、
下のレイヤー(通常レイヤー)は RGB=( 128 , 128 , 128 )or( 255 , 255 , 255 )。
乗算結果は RGB=( 0×128/255 , 0×128/255 , 255×128/255 )=( 0 , 0 , 128 )or( 0×255/255 , 0×128/255 , 255×255/255 )=( 0 , 0 , 255 )

下のレイヤーに、上のレイヤーの255を分母としたときの割合を掛け算していることになります。上か下のどちらかor両方が黒( RGB=( 0 , 0, 0 ))だと乗算結果も黒になります。
また、計算式から察した方もいると思いますが、上下のレイヤーを交換しても結果は同じになります(上のレイヤーを乗算レイヤーに、下のレイヤーを通常レイヤーに置き換えることをお忘れなく…)。

下の画像は、先ほどの青一色(乗算レイヤー)の下にグラデーション(左端はRGB=(255,255,255)、右端はRGB=(0,0,0)、通常レイヤー)を組み合わせた例です。
左端はRGB=(0,0,255)の鮮やかな青、右端はRGB=(0,0,0)の真っ黒、その間はグラデーションになっています。
と、ここまで長々と乗算レイヤーの解説をしましたが、ここからようやく本題です。

3.きたすみ式鉄道車両アドオン作画法

3.1 概要

きたすみの鉄道車両アドオンの多くは、モノクロで車体の陰影を描いたレイヤー(通常レイヤー)の上に、陰影を無視して車体の塗装を描いたレイヤー(乗算レイヤー)を重ねて作られています。さらに上にレイヤーを重ねていることが多いですが詳しくは後述。
画像は上から順に100系の車体形状レイヤー(通常レイヤー)、100系の塗装レイヤー(乗算レイヤー)、両者を重ねたレイヤーです。

車体形状レイヤーの色ですが、100系の場合は
屋根の一番上はRGB=(240,240,240)
南向き側面・前面はRGB=(224,224,224)
東向き側面・前面はRGB=(160,160,160)としています。128系のアドオンとしては明暗差がきつめの設定です。

3.2 長所

a.塗り分け線と陰影の線を分けて考えられる
車体形状による陰影を描く際には塗り分け線を無視でき、塗り分け線を考える際には車体形状による陰影を無視できます。一度に塗り分け線と陰影の線を同時に考える必要がなくなります。

b.カラーバリエーションを作る時に省力化できる
塗装のレイヤーを差し替えるだけでカラバリを制作できます。

b.の長所を生かした例です。先ほどの100系の塗装レイヤーだけを差し替えてフレッシュグリーンにしてみました。車体形状が複雑なほど、この工法での作業量の削減効果が大きいですね。

3.3 短所

a.レイヤーが増えて管理が面倒
この作画法の場合、最低でも2レイヤーが必要です。ドットを打つ作業量もファイルサイズも当然増加します。また、pak化に使うのはpngファイルですが、これはレイヤーに非対応であるので、レイヤーに対応したファイル形式からpngファイルへのエクスポートも必要です。

b.予約色との相性が悪い
窓や灯火の色やプレイヤーカラーなどの予約色を通常レイヤーと乗算レイヤーの2レイヤーのみで作る場合、乗算結果が予約色のRGBと一致するように計算する必要があります。しかし流石に面倒なので、別の通常レイヤーを上に重ねてそこに特殊色のみを描き込んで対処しています。

4. アドオンのレイヤー構成の実例

国鉄100系です。
上から順に
車体形状レイヤー(通常レイヤー)
エアコンレイヤー(乗算レイヤー)
塗装レイヤー(乗算レイヤー)
窓・前照灯レイヤー(通常レイヤー)
パンタグラフレイヤー(通常レイヤー)
以上を全て重ねた完成画像
となっています。
国鉄マニ36 2001号車です。
上から順に
車体形状レイヤー(通常レイヤー)
荷物室扉レイヤー(通常レイヤー)
塗装レイヤー(乗算レイヤー)
窓・尾灯レイヤー(通常レイヤー)
屋上機器レイヤー(通常レイヤー)
以上を全て重ねた完成画像
となっています。

7.あとがき

以上、私流のアドオン作画法について長々と解説しました。皆様のアドオン作成のヒントとなれば幸いです。
ここまでご覧いただきまして、ありがとうございました。

以上

投稿者

user avatar

きたすみ

主にpak128用のアドオンを作っていましたがpak64に転向 主に日本語化wikiに投稿しますが、たまにこちらにも投稿するかもしれません