virt_flyのブログ -23ページ目

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑機体の表示の不具合を修正したYak-3

 

作業は簡単!

 

フライトシミュレータ−のFlightGearでは、飛ばそうとする飛行機によっては機体が表示されなかったり、動かない、パーツの動きに異常がみられる、などということが時折見受けられます。

 

機体の作者のプログラミングや3Dモデリングのミスと思われるものの他、FlightGearなどのバージョンアップに伴うと見られるものがあるようです。

 

それにしてももったいない話です。せっかく苦労してつくられた機体なのですから、ちゃんと動くようにしてやりたいものです。

 

前回は、機体が表示されないというとんでもな前進翼機のSu-47を直してやりましたが、今回はYak-3の不具合を直そうと思います。

 
青と黄の飛行機様の物体が表示されてしまう
 
FlightGearのYak-3は、コクピットや計器パネルがつくられておらず作成途上といった感じで、塗装も一種類しかないのですが、第2次世界大戦当時のソ連軍戦闘機の大胆で派手なペイントを再現してみるには絶好の機体とばかりに利用させてもらい、すっかり気に入っていました。
 
ところがいつごろからか、起動すると飛行機様の青と黄の積み木細工のようなものを背負って表示されるようになりました。お気に入りですから、こんな不具合は御免被りたいものです。
 
↑FlightGearでYak-3を飛ばそうとしたら…
 
↑外部ビューに切り替えたら青と黃の飛行機様のものが機体にかぶさっている
 
ファイルを調べたところ、bf109やp51D、f4uなどの文字が見られ、他の機体ファイルからプログラムを読み込んで利用しているようにみられるところから、そうした機体のバージョンアップで齟齬が生じたものかとはじめは思いました(注1参照)
 
しかし、実際は青と黄の飛行機様の出現は実際にはロゴ表示にかかわる部分が悪さをしていたようです。
 
xmlの当該部分に関する記述にあるRGBファイルは存在せず、acファイルでは別のpngファイル名が指定されているにもかかわらずこれまた存在しないことがわかりました。結局xml上の当該記述をコメントアウトすることで解消しました。
 
一見、プログラミングのミスに思えますが、FlightGearのバージョンもかなり違う以前にはなんの不都合も生じていなかったのですから、原因はよくわかりません。
 
具体的な対処法は以下の通りです。それほど難しい作業でもないと思いますから、みなさんも挑戦してみてください。
 
●yak3-set.xml内の一部ロゴに関する記述の修正
 
問題のxmlファイルは、yak3フォルダ直下のyak3-set.xmlです。
Yak-3など機体ファイルのある場所はAircraftフォルダです。ただし、いくつか存在します(注2参照)ので自分でさがしてもらう必要があります。
 
yak3-set.xml内の修正は、赤色で示した文字の挿入です。
 

   

   ・
   ・
   ・
              <lbs>270.0</lbs>
              </opt>
    </weight>

<!-- Logo and Number -->
   <!-- <model>
       <corsair>
           <front>logos/skull.rgb</front>
           <number>logos/224.rgb</number>
      </corsair>
  </model> -->
</sim>
   ・
   ・
   ・
 
 

機体側面の一部が四角く白くなってしまう

 

まだロゴの問題が残っています。青と黄の飛行機様の出現は解消されましたが、Yak-3の機体左側のロゴ表示が予定されていた箇所が四角く白くなっています。

 

↑ロゴ用の画像ファイルがないため機体側面に白い箇所が…

 

機体の3Dモデルから、一部ロゴ表示用のオブジェクトを削除する必要があるのです。

 

●機体の3Dモデルファイルであるyak3.acからの一部ロゴ表示用オブジェクトの削除

 

機体の3Dモデルであるyak3.acファイルは、yak3フォルダー内のModelsフォルダー内にあります。変更がなければ、削除するオブジェクトの名称はCube.009のはずです。

 

3Dモデリングソフトをお持ちの方は、それを使って当該不要なオブジェクトを削除してください。

 

お持ちでない方は、acファイルをテキストエディターで開き、該当箇所の文字列を削除します。ただし、Cube.009と書かれた箇所が複数ありますので気をつける必要があります。

 

削除すべきはname "Cube.009"と書かれた部分でなければなりません。少し下にtexture "logo.png"と書かれていればOKです。したがって、当該箇所を探す際はlogo.pngで検索することをおすすめします。

 

削除はlogo.pngと書かれた箇所より少し戻ったところで最初にでてくるkids 0から次のkids 0までの間を削除します。念のためacファイルの当該箇所を赤字で示します。長いので途中を略しています。

 

※この方法は推奨されるべきものかわかりませんので、自己責任でということになります。間違いやすそうですのでacファイルはバックアップしておくか、最悪ダウンロードからやりなおしてください。

 

   ・
   ・
   ・
173 0.774267137051 0.589726448059
21 0.767654061317 0.602030873299
kids 0
OBJECT poly
name "Cube.009"
data 8
Mesh.005
texture "logo.png"
texrep 1 1
crease 30.000000
numvert 42
3.739363 -0.395016 0.448286
3.733666 -0.404075 0.45839
3.738456 -0.404075 0.457649
3.491275 -0.404075 0.210468
3.570505 -0.404075 0.476374
3.491275 -0.404075 0.485597
3.816545 -0.320048 0.385637
4.237527 -0.320048 0.385637

   ・
   ・
   ・
41 0.362098872662 0.00362525507808
SURF 0x10
mat 3
refs 4
40 0.387029916048 0.00362525507808
0 0.334938645363 0.0156930498779
2 0.333730876446 0.00362525507808
41 0.362098872662 0.00362525507808

kids 0
OBJECT poly
name "Cube.010"
data 8
Cube.010
texture "yak-3-1.png"
texrep 1 1
crease 30.000000
numvert 86
0.945076 0.046339 0.383238
0.996502 0.085071 0.4083
0.996502 0.110007 0.349716
   ・
   ・
   ・

 

ようやく機体外観は問題なく見えるようになりましたが、パイロットがいなくなっています。ドローンが幅を利かす時代になりつつありますから、操縦士は乗っていなくてもいいか…。
 
 
注1)今のところ関係する他の機体のバージョンアップが何らかの不都合を生じさせている様子はみられません。不都合が生じるのは、関係する他の機体がインストールできていない場合です。具体的にはプロペラの高速回転時の再現が表示されないのがその例です。インストールしなくてもBf-109の機体から関係する3Ðモデルをコピペし、3Ðモデル設定xmlを若干修正すれば解消されることからも明らかです。
なお、Yak-3の最新のファイルパッケージのrevisionは20170405で、以前から私が使ってきたファイルパッケージにはrevisionがなかったので、版が違うようです。機体ファイル側のバージョンの違いにもとづく違いがあるかもしれませんので、ここで修正の対象にするのは最新版にしています。
 
注2)FlightGearでは、使用したい機体を置く場所は、通常Aircraftを冠したフォルダーです。自分でこしらえることもでき、便利になった反面、目的の機体がどこにあるのか探さなければならないことにもなりました。
Ubuntuでの主なAircraftディレクトリーの場所は、①/usr/share/games/flightgear/Aircraft、②/Home/.fgfs/Aircraft、③さらにその下位の/Home/.fgfs/org.flightgear.fgaddon.trunk/Aircraft、④あるいは自分でこしらえたディレクトリー(例:/Home/ユーザー名/flightgear/Aircraft)。
Windowsでの主なAircraftフォルダーの場所は、①もともとはデフォルトの/Program Files/FlightGear 〇〇〇(バージョン)/data/Aircraft、②/Users/ユーザー名/FlightGear/Downloads/Aircraft/org.flightgear.fgaddon.trunk/Aircraft、③あるいは自分でこしらえたフォルダー(例:/Users/ユーザー名/Documents/FlightGear/Aircraft)。
 

↑保存のたびに勝手に繰り返される法線の逆転への対処の次善の策が功した改変T-38機

真似される方は自己責任で

Blenderで保存した3Dモデルのの不具合

 

3Dオブジェクトのファイルをテキストエディターで開き書き換えるなんて、大丈夫なのでしょうか。禁じ手のような気もしますが、背に腹は変えられません。

 

もっぱらBlenderを3Dモデリングソフトとして使い、フライトシミュレータソフトのFlightGearで使用する航空機の3Dモデルをいじっていますが、ときどき困ったことが起こるのです。

 

理由は不明ですが、Blenderで修正した3Dオブジェクトをacファイルに出力してみると、法線の方向が逆になっているのでしょう、ポリゴン面が透けて背景が見えることがあるのですが、法線の向きを修正して保存したacファイルを、再びBlenderで開いた後にacファイルに保存すると、法線の向きがまた逆に戻ってしまい、しかも保存するたびに繰り返し発生するという鬱陶しいケースがあります。

 

なかには、法線の向きを修正して保存したら、他の箇所で法線の向きが変わってしまうというケースもあり、うんざりです。

 

そこで考えたのが、不具合のある箇所に正常なacファイルの対応箇所からコピーしてきた文字列を貼り付けるという次善策です。あるいは、逆に何か変更した箇所の文字列を正常なacファイルに貼り付けることも考えられます。不都合のある箇所を勘案して使い分けすればよいのではと考えます。

 

HelijahさんのサイトにあったNorthrop-T38-Talonを例にとると、3Dモデルをいじる度に機種の脚のドアとエアブレーキの箇所が一部透けてしまうのですが、この次善策をとれば不具合が解消されます。

 

運良くfuselage部分に不都合が生じないことから、外観を似せるために機体に変更を加えて作成したT-38CやThunderbirds用に塗装を再現するため追加を加えた機体にも、この方法が使えました。

 

次善策の要点

 

次善作として採用した文字列をコピペするこの方法の要点は、次のとおりです。

 

●正常なファイルから文字列をコピペする場合

正常なacファイルから変更を加えたacファイルに、テキストエディターを使って正常部分の文字列をコピーしてきて上書きコピーする場合は、関係する箇所のkids 0以降次のkids 0手前までを選択してコピーします。それだけでOKです。

 

●正常なファイルへ文字列をコピペする場合

 

↑テキストエディターで開いたacファイルを模した図を掲載します 波線は省略部分を示します

 

①変更を加えたacファイルから変更や追加舌部分の文字列をコピーしてきて元の正常なacファイルに貼り付ける場合は、変更や追加部分それぞれについてkids 0以降次のkids 0手前までを選択してコピペします(図の①の赤枠内)。

 

②3Dオブジェクトに追加した部分がある場合には、最初のkids部分の数値を追加した部分の数だけ増やすこと(図の②の赤線の箇所)。

 

③ファイル冒頭のMATERIAL部分に変更が見られる場合は、この部分をまるごと上書きコピーします(図の③の赤枠内)。

 

ケースによって使い分けが必要になるかと思いますが、前者の方法をとることができれば断然楽です。

 

真似される方があるようでしたら、自己責任でお願いします。不具合が発生することも考えられますので、バックアップをとってから実施してください。

 

↑SFの世界を彷彿させる異形の機体 前進翼機のSu-47

ありえない凡ミスをのぞけばグッド

 

前回は、フライトシミュレーターソフトのFightGear用の航空機であるGrumman F-29を試しましたが、今回は同じ前進翼機であるロシアのSu-47を試すことにします。

 

いずれも英国のサイトであるFGUKの機体ですが、F-29が現ハンガーに収載されているのに、Su-47は収載されておらず、GitHubからダウンロードしました。

 

ちなみに、F-29のファイル中一番古いものは2014年1月、Su-47は2015年3月となっているので、作られたのはF-29の方がわずかに古いのかもしれません。

 

実機の方は、初飛行がF-29は1984年12月、Su-47が1997年9月となっており、見た目もSu-47があたらしく見えます。また、Su-47は大型で垂直尾翼も2枚です。

 

いずれにしても第5世代戦闘機には入れてもらえない、「時代遅れ」の機体にされていることは、前回述べたとおりです。実証機としての成果は、その後に開発の機体に生かされているということです。

 

実際に飛ばしてみましょう。

 

機体が表示されない!

 

↑黒色のペイントがシックなSu-47 ライブラリーは全6種

 

ダウンロードしてきたファイルを解凍して該当ディレクトリにコピペしても、そのままではFightGearでスタートさせても機体が表示されません。

 

それもそのはず、調べてみたら3Dモデル設定xmlファイル(Su-47.xml)中のacファイルパス指定の箇所のacファイル名が、Su-47.acであるべきところを誤ってSU-47.acとしているではありませんか。

 

小文字のuに書き換えるだけで、無事機体が表示されました。ここだけの話、アップされている様々な機体のうちには、ファイルに誤りが結構含まれています。多くは作者が、正式版をアップロードするために、テスト版ファイルを書き写し再度動くか確認しているうちに、整形前後のファイルが入り混じり取り違えるという犯しやすいミスのあるあるです。

 

簡単な修正で済みますから、Su-47を飛ばせて前進翼機を楽しみましょう。