忍者ブログ
BVE Trainsimのアドオンデータ(東西線)の更新状況や、ちょっとしたコラムなど
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

BVETrainsimのテクスチャはBMPのみです。

BMPは圧縮を行わないため、綺麗な画質を保てます。
しかしながらそのまま使うとファイルサイズが大きくなってしまうので、公開する時は24bitを8bitに変換するとファイルサイズを抑えることが出来ます。

BVE2,4ではこのように軽量化を行うのが一般的でした。



openBVEではBMPのほかに、PNGJPGGIFTIFFの圧縮ファイルを扱えるようになりました。

それぞれ圧縮方法が違うため、圧縮率が違うほか、用途が変わってきます。

例えば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
今回は透過について語っていきます。

透過の処理についてというよりも、ストラクチャの構成仕様が
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
OpenBVEでは、「GenerateNormals」の代わり?に
「SetEmissiveColor」というのが登場しました。今回のテーマはコレ。

前の記事で紹介しましたが、感覚的に言ってしまえば
BVE2の「GenerateNormals」に色を付けられるようになったというものにすぎません。
もしくは周りの環境色に左右されないようプロテクトをかける、そんなイメージです。


この「SetEmissiveColor」を使った時、アレっ!?と思わせるような現象があったので記述しておきます。

実例:
看板を100mに設置
ビルを120mに設置
したときに起きた摩訶不思議現象。

「SetEmissiveColor」を使った2つのストラクチャを近い位置に並べるとき、本来なら





このように看板が手前、ビルが後ろに表示されるべきところが





このように、本来手前に表われるはずのストラクチャが
何故か後方に表われてしまうのです。
もちろん設置場所は正しい位置にあります。

遠くから見るとビルの後ろにあるように感じるけど
近づくとちゃんと手前に置いてある看板…。
おかしい、ここは異次元かっ!?


軽く検証したところ、「GenerateNormals」との競合が原因のようです。

看板:「GenerateNormals」未記入
ビル:「GenerateNormals」記入

ここでビルの「GenerateNormals」を抜いたところ
正常に表示されるようになりました。

もともと「SetEmissiveColor」と「GenerateNormals」は
ほぼ同じ役割のもの。どちらかにした方が良い、という事ですね。

うーん、RouteViewerだとこのような対処をしなくても正常に動作、
つまり「GenerateNormals」構文はちゃんと無視されているのですが、
OpenBVEだとまだ完全に無視されてないようです。

1.0は開発中のようですし、今後に注目です!



2009/02/22
・追記
原因はこれではなく、描画モードによる反作用でした。
→関連記事を読む
デタラメ書いて申し訳ない^^;



次回はもう一つ、「透過」の仕様について検証していきます。
そういえばOpenBVEの記事書いてたのはいいけど
OpenBVEってなんぞや?ってことをまだ述べてませんでした。
ので自分なりに特徴を書いてみることにします。
より詳しく…というより正確に知りたい人はOpenBVEの公式サイトへどうぞ。

プレイヤーの視点からみたOpenBVEの特徴

・windowサイズが自分の好きなように設定できる!
→640x480の縛りが無くなり、大画面など自分のお好みの解像度でプレイできるようになりました。

・カメラワークがスゴイ!
→運転画面のほかに、車外など3種類のカメラから眺めることができるように

・自動で運転してくれる!
→AI運転(Ctrl+A)でコンピューターがダイヤ通り運転してくれます。
ただし運転規則を守りすぎていて乗り心地はあまり良くないようです(^o^)

・自分の運転する車両が動いてる!
→少し設定をすれば自分の運転する列車が見えるようになります。

・前方に先行列車が・・・!
→[PreTrain]を使っていないデータだと先行列車が表示されるようです。

・点数モードの登場
→停止位置、ダイヤの乱れや速度違反など点数で評価されるようになりました。

・その他
脱線、横転、衝突などが再現され、描画距離も自由に。


こんなところですかね。
自由の幅が広がった、というのが大きな特徴ですね。




作者の視点からみたOpenBVEの特徴

・高いフレームレートが出るようになった。
→グラフィックエンジンを頼る作りになり、重さを気にしていたBVE2&4に比べてストラクチャを置きやすくなりました。

・25m縛りが無くなった
→信号やカーブを設定するには25m単位で置く必要がありましたが、好きな単位で置けるようになりました。

・テクスチャがbmp以外のpngを扱えるようになった
→おかげで高解像度でも若干軽くなりました。
例:)
BMP:128x256,8bit=33kb
PNG:128x256,8bit=20kb

BMP:512x256,8bit=129kb
PNG:512x256,8bit=70kb
約4割から5割の減量です。結構大きい。
もちろん同じ画質で劣化してません。

・ストラクチャの新構文、「SetEmissiveColor」の登場
→BVE2の「GenerateNormals」、これの代わりのようなもの。
周りの環境に左右されず、一定の明るさを保つことが出来るので
夜景の再現が楽になりました。
例:)動画を見る

・ストラクチャの新構文、「SetBlendMode」の登場
→遠くから見るとはっきり見えるが近づくにつれて透明になっていく、というもの。
主に光の輝きに使っているようで、信号のライトなどがはっきりと見えるようになりました。

・ストラクチャの新構文、「Translate All」の登場
→そのストラクチャの最後の行に入れることで全ての頂点を一括で移動できるようです。
車両ストラクチャをOpenBVE用に作る時に超ベンリ!
※同じように「Rotate All」もあるようです。

・ストラクチャの新構文、「Scale」の登場
→これはよく分かりませんが、対応する軸に応じて拡大するようです?
例:)[scale,2,1,1,]だとx軸方向に2倍される。

・アニメーションの採用
→Animated Objectという新しい概念ができて動くストラクチャを再現できるようになりました。
今はまだ開発途中のことで一部の命令文しか使えませんが、正式に定義が決まったら製作の幅が広がりそうです!
※この項目は別記事で書いていきたいと思います。

・その他
ATSなども変更点があるようです。未確認なのでノーコメ。


やはりBVE2と比べると大きな変動がありましたね。
その分リスクが出たようで、読み込む時にエラーを吐いたり運転中や製作中に「あれっ!?」と思うようなことも…。

ただほとんどの場合、対処法はあるので
次回はそのお話をしていきたいと思います!
ブログ内検索
プロフィール
HN:
reren(回送)
HP:
性別:
非公開
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新記事
最新TB
最新CM
[01/24 鈴木浩一]
[01/15 つぼやん]
[12/01 お茶漬け]
[10/13 東西線B修車]
[08/22 コイワイ]
開発中

Copyright © [ Localなbve日誌 ] All rights reserved.
Special Template : 忍者ブログ de テンプレート and ブログアクセスアップ
Special Thanks : 忍者ブログ
Commercial message : [PR]