今回は LightWave で FBX 化した際に起きた問題と対策についてやっていきます
FBX ファイルは Blender やメタセコなど他のソフトとのデータのやり取りに使われたり、ゲームエンジンとのやり取りでよく使われています
もちろん LightWave にも当たり前のように備わっています
ただ、LightWave で FBX ファイルを扱ったとき、ある問題に直面しました
それはレイヤー名などの名前が勝手に変わる問題です
具体的には名前の末尾に _1 などが勝手についてしまうものです
他にもサーフェイス名が増殖したり、モーフが消えたりする問題もありました
少し調べた結果、これはバグというより FBX の仕様のようでした
回避策は同じ名前にしなければ大丈夫
今回は問題点の洗い出しと対策についてやっていきます
問題点
名前が勝手に変わったり消えたりする
まずは FBX を再読み込みした際、どんな問題が起きてしまったのか整理しました
- モーフマップが消える
- ボーン名が勝手に変わる
- ウェイトマップが消える
- ウェイト名が勝手に変わる
- レイヤー名が勝手に変わる
- サーフェイス名が勝手に変わる
- サーフェイスがたくさんできる
などなど、FBX 化したときに問題がでてきました

じゃっく
おかげで名前の書き直しが発生しちゃった
問題が起きる条件
一致する名前があると問題が発生する
この問題たち、一体どんな条件下で発生するんだろうと思い、いくらかテストしてみました
その結果、名前が一致している箇所があるとダメだったようです
- 同じサーフェイス名が割当られている:
複数できる - ボーン名=サーフェイス名:
ボーン名が強制変換する - レイヤー名=ファイル名:
レイヤー名が強制変換する - レイヤー名=サーフェイス名:
レイヤー名が強制変換する - ウェイトマップ名=モーフマップ名:
どちらかが消える - ウェイトマップ名=ファイル名:
ウェイトマップ名が強制変換する
こうやって並べると、気を付けなければならないところがいっぱいありますね

じゃっく
LWO ファイルの時は気が付かなかった
回避策
とにかく名前が重ならないようにする

問題を回避するには、とにかく名前が重ならないようにすること
- ボーン名
- ファイル名
- レイヤー名
- UV マップ名
- モーフマップ名
- サーフェイス名
- ウェイトマップ名
たくさんありますが、文字の先頭に S_ や MT_ を付けて差別化したり、似たような意味の単語の組み合わせで名前が重複しないようにします
ただし、例外もありました
ボーン名とウェイトマップ名は、同じでも OK です
むしろ同じにしておけばウェイトマップが勝手にボーンに割り当てられますので、ここは積極的に使っていきたい
割り当てるサーフェイス名はオブジェクトごとにする

新しいオブジェクトを作り出すとデフォルト(Default)のサーフェイスが割り当てられます
「色・質感編集」を開くと一つのサーフェイスしか作られていないように見えますが、内部的には複数のデフォルトサーフェイスが作られているようです
なので、FBX 化した時に重複していると見なされて、大量のサーフェイスが作られてしまうらしい

回避するには、画像のように 1 レイヤー 1 オブジェクトのようにハッキリとしておく必要があります
デフォルトのサーフェイス残っていると問題が起きるので統合して消します
まとめ
それでは簡単にまとめを
- 名前が重複するとFBX化で問題が出る
- 基本的には名前が重複しないようにする
- ボーン名とウェイト名は重なっても大丈夫
今回は FBX 化する際に名前が勝手に変わる問題と原因について書き残してみました
初めての現象だったので、最初は LightWave のバグかと思っていましたが、FBX の仕様であることが分かりました
よくよく考えたら同名だと人間でも混乱します
ついめんどくさがって同じ名前にしてしまうのが、良くないですね
他のソフトにデータを持っていくときは、FBX 化することが多いので、より一層気を付けます
それでは、お疲れさまでした
おまけ
FBX の入出力はレイアウトの方が良い

LightWave はモデラーとレイアウトに分かれているせいもあってか、両方に FBX のインポート・エクスポート機能があります
ざっくり違いを出すと
- モデラー側:ボーンは吐き出せない
- レイアウト側:ボーンなども吐き出せる
モデルやマップ系だけなら、モデラー側の FBX 入出力で十分だと思います
ですが、ボーンの情報も吐き出そうとしたらレイアウトの方が情報量が多いので、他のソフトに移す場合はレイアウト側の FBX エクスポートから吐き出すようにします
1 レイヤーしかないと強制的にファイル名になる

これは FBX というより LightWave 側の問題と認識しています
どうゆうことかと言いますと
- モデラーで 1 レイヤーだけ作る
- レイアウトに読み込む
- レイヤー名がファイル名になっている
こんな感じの現象が起きます
当然のように FBX 化してもその状態は維持されるので、1 レイヤー名はファイル名になっているわけです
最初バグとも思えました
ただ、ver2015 でも確認してみたところ、同じ結果になったので仕様かもしれません
AI にも確認してみたのですが、どうやらモデラーとレイアウトが別れている結果こうなっているようです
回避策は今の所
- 1 レイヤー:普通にモデルを作る
- 2 レイヤー:ダミーモデルを作る
こんな感じで複数のレイヤーが存在するように認識してあげれば回避できます
これならレイアウトでレイヤー名が強制的にファイル名にならずに済むのですが、もう少し何とかならんかったかな、とちょっとモヤモヤ
今後改良されることを願っています
使用ツール
- 3DCG
- LightWave3D
- 動画
- Bandicam
- ScreenToGif
- 画像
- CLIP STUDIO PAINT PRO
