画像のパスの仕組み

 MODOのシーン (LXO) が使用している画像へのパス(相対パス絶対パス)の仕組みがややこしいようだ。

 ややこしすぎて全文を読む人はほとんどいないと思うので結論を先に書くと、相対パスにしたかったら、画像は同階層か子階層に置いた方がいい。できれば子階層。
 それ以外の場合は絶対パスになってしまうおそれがある。

 LXOをバイナリエディタで開くと、パスが確認できる。


〈検証結果〉

▼画像が同階層にある場合は、パスはファイル名のみになる。
 [Image.tga]

--

▼子階層にある場合は、相対パスになる(4階層まで確認)。
 [FolderB/Image.tga]

  D ─FolderA ┬Scene.lxo  
      └FolderB ─Image.tga

--

▼1つ上の階層にある場合は、パスは書かれずファイル名のみになる。
 [Image.tga]

  D ┬Folder ─Scene.lxo
    └Image.tga  

 #つまり同階層と1つ上の階層は同じものとして扱われる。
 #上の階層を示す「..」は使われない。
 #同階層と1つ上の階層に同名のファイルがある場合は、同階層の画像が優先される。

--

▼1つ上に上がり、そこから子階層に行く場合は、1つ上の階層からの相対パスになる。
 [FolderC/Image.tga]

  D ─FolderA ┬FolderB ─Scene.lxo
      └FolderC ─Image.tga

 #この場合も上の階層を示す「..」は使われない。

--

▼2階層以上上がる場合は、絶対パスになる。
 [D:Image.tga]

  D ┬FolderA ─FolderB ─Scene.lxo
    └Image.tga    

 #上がるのが1階層でも、ドライブ名に到達したら絶対パスになる。


 絶対パスだと、他人にデータを渡すときにパスが通らなくなる。

 HDD内のあちこちから画像を読み込んでいて、おそらく絶対パスだろうという場合は、[ファイル>シーンの統合]を行うと画像が一ヶ所に集められて相対パスに直る。

 ちなみに画像が見つからないとき、画像のある場所を指定すると、場所のわからない他の画像も同じ場所にあれば自動的に見つけてパスを修正するようだ。

 しかし大きいプロジェクトになると、離れた位置から画像を読み込むなんていう場合は避けられないだろう。こんな仕様じゃ、MODOをアニメーション制作には使えない。
 コンフィグとレイアウトの仕様のおかしさといい、やはりMODOは設定周りが甘い。