BGAの作り方 初級篇 (レイヤー機能)

まず、このページを読むための前提条件として、「BGAとは?」とか、「クリップ画像(1枚絵)の表示のしかたは?」?といったところを理解している必要があります。そこが分かっていれば、このページの説明はまったく難しくありません。


  • レイヤー機能の使い方について?
    • BGAつきDTX作成用のレーンスクリプトの準備(GDAC2のみ)?
    • 複数のBGAレイヤーの使い方?
    • BGAレイヤーの使い方、補足?
  • 黒色の指定方法を教えてください。?

 ? レイヤー機能の使い方について

レイヤー機能とは、簡単に書くと「複数枚の画像を重ねて表示する」機能です。 学校で使うOHPのようなものですね。窓の杜の説明が分かりやすいと思いますので、参考にしてみてください。

DTXManiaは、 BGA描画用に8枚の層(レイヤー)を持っており、 8枚まで画像を重ねることができます。 要するに、8枚のBGAを重ねて表示できる、ということです。


? BGAつきDTX作成用のレーンスクリプトの準備(GDAC2のみ)

さて、具体的なレイヤー機能の使い方を説明する前に、まずGDAC2の「BGAつきDTX作成用レーンスクリプト」について説明します。 DTXCをお使いの場合は、この章は読み飛ばしてください。?

普通にGDAC2でBGAつきDTXを作成すると、 BGAのレイヤーは1枚しか使えません。

これは、GDAC2に追加インストールしている、通常のDTX編集機能 (DTXレーンスクリプト?)が、 レイヤーを1枚しか使えないように (その分わかりやすく使えるように) 作られているためです。 しかし、ここではBGAをレイヤー8枚でフルに使いたいわけですから、 このままでは困ります。 BGAを8枚使うためには、 「BGAを8枚使えるDTXレーンスクリプト」 を追加でインストールする必要があります。

実は、この「BGAを8枚使えるDTXレーンスクリプト」は、DTXViewerの Release 017 (DTXV017(061)) 以降にオマケで付属しています。 DTXVのアーカイブの中には、さらに xtras.zip というアーカイブが含まれており、その中に入っている、 dtxbga_dtxv.gsc もしくは dtx_dtxv_bga_jp.gsc というレーンスクリプトがそれです。(どこからダウンロードしたかで名前が異なりますが、中身は同じものです。)

このレーンスクリプトをGDAC2のフォルダにコピーしてから、もう一度GDAC2を開いてください。 すると、新規作成時に出てくる選択肢に、「DTXMania BGA(DTX)」が追加されます。これを使うと、BGAのレーンを8本(BG1〜BG8)使用することができます。

1つ下の DTXMania Data(DTX) だと、BGAを1枚しか使えません。

DTXMania BGA(DTX)を選ぶと、8枚のBGAをGDAC2から簡単に使えるようになります。

DTXMania Data(DTX)を選ぶと、従来通り、BGAレーンが1本だけの構成になります。 クリップ画像を1枚表示する程度なら、これで十分でしょう。

DTXMania BGA(DTX)を選ぶと、 BGAレーンが BG1〜BG8レーンの計8本になり、 全BGAレイヤーをレーンとして扱えるようになります。

以下、「DTXMania BGA(DTX)」を使用する前提で、説明を進めます。


? 複数のBGAレイヤーの使い方

さて、準備ができたところで、 早速実際に複数のBGAレイヤーを使ってみましょう。
・・・といっても全然難しくはなくて、 [BGA]レーンの代わりに [BG1]〜[BG8] レーンを使うだけです。 例えば、レーンを4本使えば、4枚の画像を重ねることができます。

BG1〜BG8の内、数字の小さいレーンに置いた画像が下にきて、 数字の大きいレーンに置いた画像が上にきます。

BG1にこの画像を置く。(stars.png)

BG2にこの画像を置く。(circles.png)

BG3にこの画像を置く。(rectangles.png)

BG4にこの画像を置く。(triangles.png)

BGAとしてはBG1〜BG4が重なったこのような画像が表示される。

BG1〜BG4の重なり方のイメージ。

GDAC2の使用例。BG1〜BG4に画像を配置しただけ。

DTXCの使用例。GDAC2とほとんど同じ。


? BGAレイヤーの使い方、補足

一つ前の章で説明できなかった部分について、補足します。

まず、先ほどは何も考えずに画像を重ねていましたが、 通常は「一番上の画像に覆い隠されて」下の画像が全く見えなくなります。 しかし、完全な黒 (RGB=(0,0,0)) の色に限り、 下の画像が透けて見えます。 つまり、完全な黒色は「無色透明」として扱われます。

RGB=(1,1,1)など、ちょっとでも違う色になると、 それは「ほとんど真っ黒に近い黒」になりますので、透けません。(「ほとんど真っ黒に近い黒」については、後ほど補足説明します。?)

このように、色の微妙な違いで、 透けるか透けないかが180度変わってしまいますので、 このような画像にはjpegを使うべきではありません。 なぜなら、jpegは非可逆圧縮で、境界線やべた塗りのところの色が微妙に変化するからです。? 代わりに、可逆圧縮?であるpngを使いましょう。

なお、無色「ではない」透明 (色つきセロハンのようなもの) も使うことができます。ただし、その画像を作るのがちょっと難しいです。 詳細は「BGAの作り方 超上級篇 (透過画像の使い方)」をご覧ください。

次に、ここで表示したBGA画像は、 放っておくとそのまま演奏が終わるまで表示されっぱなしになります。 別の画像に切り替えるには、別のチップを置き直してください (下図) 。

特定のレイヤーの表示を消したいときも同じで、 「表示を消すための画像」に切り替えてください。 つまり、「真っ黒の画像 (RGB=(0,0,0)でべた塗り)」 をあらかじめ用意しておき、 その画像に切り替えるのです。 ただし、278x355の真っ黒画像を用意する必要はなく、 1x1の真っ黒画像で十分です。

BG1の画像は変えずに、 BG2の画像を 10 から 11 に切り替える例。

BG1(の[01])にこの画像。

BG2(の[10])にこの画像。

BG2(の[11])にこの画像。

ページ qa_bga_bas に BGA_layers09_4_.png は添付されていません。

すると最初このようなBGAが表示されて、

3拍目でこの画像に変わります。

最終更新 2006.8.20

 ? 黒色の指定方法を教えてください。

一つ前の項目で説明があるとおり、?「透ける黒」は、RGB=(0,0,0) になります。では、「透けない黒」は?

結論から書くと、お勧めは RGB=(0,0,8) です。 以下そのワケがつらつらと記されていますが、 小難しい話になりますので、興味がなければ読み飛ばしていただいて結構です。 (ただ、知っておいて損はない話です)

RGB=(0,0,0) よりちょっとだけ違う、 例えば RGB=(1,1,1) なら 「かなり真っ黒」な色として使えそうだと考えがちですが・・・

Config.ini の Fullcolor が 1 な人 (つまり32bitもしくは24bitのフルカラー表示をしている人) については、RGB=(1,1,1) でも問題ありません。 しかし、Fullcolor が 0 な人 (16bit colorな人) の場合は、 24-16=8なので、 24bitな人に比べてRGBトータルで8bit分、色数が少なくなります。 つまり、(8=3+3+2なので) RGB個別に見ると 3bitもしくは2bit分、 指定できる要素がが少なくなります。

どういうことかというと、たとえば R(赤成分)は、 通常0, 1, 2, ... , 254, 255の、256個=8bit分の色数が使えますが、 16bitの人はここから3bit削られて5bit分しか使えません。 具体的には、0, 8, 16, 32, ... , 240, 248, 255 の32個=5bit分しか使えません。

ここで注目してほしいのは、0の次が8になっている点です。 つまり、R(赤成分) として 0〜7 のどれを指定しても、 16bitな人のところでは全部0と見なされてしまいます。 (これを、「0に丸め込まれる」と言います。) そして、「0と見なされてしまう」ということは、 この色は「かなり真っ黒」ではなく、 「真っ黒=透過色」として扱われてしまいます。

上下どちらも、赤だけ0〜255の範囲で変化させている図ですが、 上がフルカラー(32bppもしくは24bpp)、下が16bppの場合の見え方です。 (もっとも、現在お使いのパソコンの「画面の色」が 「中(16ビット)」になっている場合は、 上下の図どちらもほとんど変わらない(赤い短冊がたくさんある)ように見えると思いますが・・。)

このように、狭いながらも特定の範囲で、 フルカラーでは別の色でも16bppだと同じ色、ということがあります。

注: bpp = bits per pixel, 1ピクセルあたり(の色)に使えるビット数です。16bpp = 16bit color だと思ってください。

以下蛇足ですが、

「1本1本の短冊の両端(境界)が若干明るく浮いて見える」 そんなあなた。 それはいわゆる「マッハバンド効果」というヤツです。 これを回避するには、階調(色の段階数)を増やす必要があります。 16bit環境のようにそもそもの色数(色の段階)が少ない場合は、 ディザパターンを使うなどして擬似的に階調を増やす対応が有効です。

説明がかなり長くなってしまいましたが、このような理由から、 「黒」として使えるのは、「R,G,B いずれかが8以上の色」となります。 同じ理由から、8, 9, 10, ... , 15 の値はいずれも8に丸め込まれてしまいますので、 結局はR,G,Bいずれかを8にすることになります。

それでは、R, G, B どの成分を8にすればよいのでしょうか。

一般に、人間は青の知覚感度が鈍いと言われています。 つまり人はB(青成分)の大小差を判別しづらく、 Bが多少強くても黒にしか見えない、ということです。

ここまで書けばおわかりでしょう。結論はこうなります。 (透けない)黒色としては、 RGB=(0,0,8) がオススメです。

左から、「Rだけ8」「Gだけ8」「Bだけ8」「RGB全部0」とした色です。あなたには、一番右を除いて、どれが一番黒く見えますか?

最終更新: 2006.6.24

DTXMania Q&A