BVE Trainsimのアドオンデータ(東西線)の更新状況や、ちょっとしたコラムなど
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
BVETrainsimのテクスチャはBMPのみです。
BMPは圧縮を行わないため、綺麗な画質を保てます。
しかしながらそのまま使うとファイルサイズが大きくなってしまうので、公開する時は24bitを8bitに変換するとファイルサイズを抑えることが出来ます。
BVE2,4ではこのように軽量化を行うのが一般的でした。
openBVEではBMPのほかに、PNG、JPG、GIF、TIFFの圧縮ファイルを扱えるようになりました。
それぞれ圧縮方法が違うため、圧縮率が違うほか、用途が変わってきます。
例えばPNGの場合、アルファチャンネルを使って下の絵のように窓を半透明にした上でそこに色を付ける、などの演出ができます。もちろん透過はSetDecalTransparentColor構文を使わずに透過することができます。
PNGは透過に関しては非常に都合が良いファイルです。
ただ、圧縮率はさほど良くありません。
次にJPGですが、BMP同様にレイヤーを考慮せず、なおかつ透過色も圧縮してしまうので透過には向いてません。(というより、透過できないファイルと思って構わない)
ただし、JPGは圧縮率が非常に高いファイルです。
また、GIF、TIFFなども扱えますが、こちらはアニメーションなどの機能は使えないのと、ファイルサイズが膨大になるためオススメしません。
という訳で実用のある画像ファイルはBMP,PNG,JPGかなと思います。
ただ、軽量化をするときはBMPと同じ作業をすれば良いかというと・・・そうではないようです。
bmp,24bit = 48.0kbを元画像とすると、
bmp,8bit = 17.0kb
png,24bit = 25.1kb
png,8bit = 11.4kb
jpg,24bit = 10.7kb
jpg,8bit = 11.0kb
という結果になりました。
注目すべき点は
・png,24bitより、bmp,8bitの方が軽い
・jpgは8bitより24bitの方がサイズが小さくなる
という点です。
特にpngについてですが、pngは実際に読み込んでみるとこのように透過レイヤーがおかしくなってしまう欠点があります。
これは3Dを描画する際、中距離<==>遠距離をより綺麗に表示させようとする描画方法(アンチエイリアス)によって、透過部分もスムーズにさせてしまうので個人レベルでは対処法できません。(以前の記事では全然違うこと言ってました^^;)
なのでPNG8bitかbmp8bitで圧縮方法を迷うならbmp8bitを選びたいところなので、あえてpng,24bitとbmp,8bitを比較しました。
どうしても透過したいとき、または窓を再現するときにPMGを使い、透過する必要の無いファイルはJPG or BMPを使うのがよさそうです。
それぞれの特徴とストラクチャを置く場所を考慮しながら使用すると良いでしょう。
BMPは圧縮を行わないため、綺麗な画質を保てます。
しかしながらそのまま使うとファイルサイズが大きくなってしまうので、公開する時は24bitを8bitに変換するとファイルサイズを抑えることが出来ます。
BVE2,4ではこのように軽量化を行うのが一般的でした。
openBVEではBMPのほかに、PNG、JPG、GIF、TIFFの圧縮ファイルを扱えるようになりました。
それぞれ圧縮方法が違うため、圧縮率が違うほか、用途が変わってきます。
例えばPNGの場合、アルファチャンネルを使って下の絵のように窓を半透明にした上でそこに色を付ける、などの演出ができます。もちろん透過はSetDecalTransparentColor構文を使わずに透過することができます。
PNGは透過に関しては非常に都合が良いファイルです。
ただ、圧縮率はさほど良くありません。
次にJPGですが、BMP同様にレイヤーを考慮せず、なおかつ透過色も圧縮してしまうので透過には向いてません。(というより、透過できないファイルと思って構わない)
ただし、JPGは圧縮率が非常に高いファイルです。
また、GIF、TIFFなども扱えますが、こちらはアニメーションなどの機能は使えないのと、ファイルサイズが膨大になるためオススメしません。
という訳で実用のある画像ファイルはBMP,PNG,JPGかなと思います。
ただ、軽量化をするときはBMPと同じ作業をすれば良いかというと・・・そうではないようです。
bmp,24bit = 48.0kbを元画像とすると、
bmp,8bit = 17.0kb
png,24bit = 25.1kb
png,8bit = 11.4kb
jpg,24bit = 10.7kb
jpg,8bit = 11.0kb
という結果になりました。
注目すべき点は
・png,24bitより、bmp,8bitの方が軽い
・jpgは8bitより24bitの方がサイズが小さくなる
という点です。
特にpngについてですが、pngは実際に読み込んでみるとこのように透過レイヤーがおかしくなってしまう欠点があります。
これは3Dを描画する際、中距離<==>遠距離をより綺麗に表示させようとする描画方法(アンチエイリアス)によって、透過部分もスムーズにさせてしまうので個人レベルでは対処法できません。(以前の記事では全然違うこと言ってました^^;)
なのでPNG8bitかbmp8bitで圧縮方法を迷うならbmp8bitを選びたいところなので、あえてpng,24bitとbmp,8bitを比較しました。
どうしても透過したいとき、または窓を再現するときにPMGを使い、透過する必要の無いファイルはJPG or BMPを使うのがよさそうです。
それぞれの特徴とストラクチャを置く場所を考慮しながら使用すると良いでしょう。
PR
えー大変お久しぶりです。
少し放置する予定が、だいぶ伸びてしまいました・・・。
その間に色々と変化があったようで、アニメーションの拡張やらサウンドの改善やらでopenBVEもとうとう0.955まできたようです。
国内でも少しずつ浸透し出してきたかなって感じ。
いくつか構文も新しくなってたので、さっそくドアを動かしてみました。
なんという
壊れかけのエレベーター\(^o^)/
でもこういうエレベーター、たまに遭遇しません?w
古いマンションのエレベーターとか、ドアとカゴの動きが挙動不審でなかなか怖かったりします。
そんなドアを再現できました\(^o^)/ひゃっほう
さて、作り直すかorz
少し放置する予定が、だいぶ伸びてしまいました・・・。
その間に色々と変化があったようで、アニメーションの拡張やらサウンドの改善やらでopenBVEもとうとう0.955まできたようです。
国内でも少しずつ浸透し出してきたかなって感じ。
いくつか構文も新しくなってたので、さっそくドアを動かしてみました。
なんという
壊れかけのエレベーター\(^o^)/
でもこういうエレベーター、たまに遭遇しません?w
古いマンションのエレベーターとか、ドアとカゴの動きが挙動不審でなかなか怖かったりします。
そんなドアを再現できました\(^o^)/ひゃっほう
さて、作り直すかorz
今回は透過について語っていきます。
透過の処理についてというよりも、ストラクチャの構成仕様が
BVE TrainsimとOpenBVEでは若干違います。
その仕様の違いを例えてみると
例:)------------------------------------------------
CreateMeshBuilder,
AddVertex,x,y,z,
(中略)
SetTextureCoordinates,n,x,y
SetDecalTransparentColor,0,0,255
Setcolor,200,220,240,
GenerateNormals,
------------------------------------------------
このように書かれたcsv(ストラクチャ)があるとします。
BVE Trainsimの場合、色に関しては構文を読み取る順番を意識しません。
一方で、OpenBVEの場合はストラクチャを読み込む時に書かれている順番を意識します。
要するに、上から書かれている順に読み込んで生成していくようなのです。
なので、次のような場合
------------------------------------------------
SetDecalTransparentColor,0,0,255
Setcolor,200,220,240,
------------------------------------------------
と、
------------------------------------------------
Setcolor,200,220,240,
SetDecalTransparentColor,0,0,255
------------------------------------------------
この場合では、OpenBVEだと前者が正常に透過されません。
ここで
・・・んー?
と思えれば上出来!
透過してから色を付けるのがダメで、
色をつけてから透過するのはOK。
…
つまり透過されない理由が矛盾しているのです。
これが仕様なのです。
SetDecalTransparentColor,
よりも前に
Setcolor,
を書かなければ透過されないという作りなのがOpenBVEなんだ
と思い込むしか解決案がないのが現状です^^;
また"色"そのものに関して
BVE Trainsimは
------------------------
SetDecalTransparentColor,0,0,255
SetDecalTransparentColor,0,0,254
------------------------
を"近似値"として同一に扱う。つまりどちらでも透過されます。
しかしOpenBVEは全ての色を正確に読み込むため、
------------------------
SetDecalTransparentColor,0,0,255
SetDecalTransparentColor,0,0,254
------------------------
このような場合でも255と254をきちんと分けて生成されます。
なのでBVE Trainsimでは本当のテクスチャの色と一つ違う色を取っていても
平気だったのに対して、OpenBVEではそこに気を払わなければいけなくなりました^^;
OpenBVEを作る上での注意する点はこのくらいかな。
あとの細かいことは一言で解決するので、ついでに載せときます。
「見上げた時、空が真っ黒!」
→Fog構文が原因。
Fogを運転視野から程遠い値(8000など)をとって
背景テクスチャの色に近い色を記入すると綺麗になる。
ex:).Fog 0;8000;r,g,b,
「車両がドリフトしてる」
→車両ストラクチャの中心位置が0でないのが原因。
がんばってずらして0が基準になるようにすることで解決。
*OpenBVE専門に作るなら「TranslateAll」で一発。
「RouteViewerで路線見たらストラクチャの一部が点滅してる」
→Setcolor,r,g,b,αとAddFace2の競合が原因。
透過されたストラクチャの上にストラクチャを置くと、上に置いたストラクチャ表示がおかしくなります。
よくあるパターンとして、海の上に橋を置いたときに、橋の一部のFaceが点滅してしまいます。
「AddFace2」を「AddFace」に直しましょう。
このくらいかな?製作に関して他にあったら是非とも^-^
決して不具合を起こさないBVE Trainsimの魅力は、
こうした良い意味での"曖昧さ"があるからこそなのかもしれませんね。
以上、もう検証はおなかイッパイ(-ρ-;)
なので次からは普通に製作日記になると思います!w
透過の処理についてというよりも、ストラクチャの構成仕様が
BVE TrainsimとOpenBVEでは若干違います。
その仕様の違いを例えてみると
例:)------------------------------------------------
CreateMeshBuilder,
AddVertex,x,y,z,
(中略)
SetTextureCoordinates,n,x,y
SetDecalTransparentColor,0,0,255
Setcolor,200,220,240,
GenerateNormals,
------------------------------------------------
このように書かれたcsv(ストラクチャ)があるとします。
BVE Trainsimの場合、色に関しては構文を読み取る順番を意識しません。
一方で、OpenBVEの場合はストラクチャを読み込む時に書かれている順番を意識します。
要するに、上から書かれている順に読み込んで生成していくようなのです。
なので、次のような場合
------------------------------------------------
SetDecalTransparentColor,0,0,255
Setcolor,200,220,240,
------------------------------------------------
と、
------------------------------------------------
Setcolor,200,220,240,
SetDecalTransparentColor,0,0,255
------------------------------------------------
この場合では、OpenBVEだと前者が正常に透過されません。
ここで
・・・んー?
と思えれば上出来!
透過してから色を付けるのがダメで、
色をつけてから透過するのはOK。
…
つまり透過されない理由が矛盾しているのです。
これが仕様なのです。
SetDecalTransparentColor,
よりも前に
Setcolor,
を書かなければ透過されないという作りなのがOpenBVEなんだ
と思い込むしか解決案がないのが現状です^^;
また"色"そのものに関して
BVE Trainsimは
------------------------
SetDecalTransparentColor,0,0,255
SetDecalTransparentColor,0,0,254
------------------------
を"近似値"として同一に扱う。つまりどちらでも透過されます。
しかしOpenBVEは全ての色を正確に読み込むため、
------------------------
SetDecalTransparentColor,0,0,255
SetDecalTransparentColor,0,0,254
------------------------
このような場合でも255と254をきちんと分けて生成されます。
なのでBVE Trainsimでは本当のテクスチャの色と一つ違う色を取っていても
平気だったのに対して、OpenBVEではそこに気を払わなければいけなくなりました^^;
OpenBVEを作る上での注意する点はこのくらいかな。
あとの細かいことは一言で解決するので、ついでに載せときます。
「見上げた時、空が真っ黒!」
→Fog構文が原因。
Fogを運転視野から程遠い値(8000など)をとって
背景テクスチャの色に近い色を記入すると綺麗になる。
ex:).Fog 0;8000;r,g,b,
「車両がドリフトしてる」
→車両ストラクチャの中心位置が0でないのが原因。
がんばってずらして0が基準になるようにすることで解決。
*OpenBVE専門に作るなら「TranslateAll」で一発。
「RouteViewerで路線見たらストラクチャの一部が点滅してる」
→Setcolor,r,g,b,αとAddFace2の競合が原因。
透過されたストラクチャの上にストラクチャを置くと、上に置いたストラクチャ表示がおかしくなります。
よくあるパターンとして、海の上に橋を置いたときに、橋の一部のFaceが点滅してしまいます。
「AddFace2」を「AddFace」に直しましょう。
このくらいかな?製作に関して他にあったら是非とも^-^
決して不具合を起こさないBVE Trainsimの魅力は、
こうした良い意味での"曖昧さ"があるからこそなのかもしれませんね。
以上、もう検証はおなかイッパイ(-ρ-;)
なので次からは普通に製作日記になると思います!w