SB3UGUIのメタコの記述
ちょっとしたSB3UGUIのメッシュ読み込み機能をご紹介しようかと(^^)
SB3UGUIなのですが、いくつかの形式でMeshが書き出せると思いますが
アイテム移植などの場合は主にメタセコイア形式で書き出し、
その書き出した物を利用してMeshを埋め戻すという作業をなさっているかと思います。
書き出したmqoファイルを開いて頂くと一目瞭然ですが
Object名に名前以外に記述が追加されている物があると思います。
その画像がこちらです↓
これを見て頂くと解りますが、右側のObject名に
「 O_Water(Scale=1000)[0] 」となっているかと思います。
これらのネームには意味がありまして
O_Water はオブジェクト名(Mesh名)
(Scale=1000) は書き出し時に1000倍 埋め込み時には1000分の1 になるという表記
[0] はMesh内の内包の順番
っということになります。
この項目を上手く編集しますとSB3Uで読み込む際2つのパターンを生み出せます。
その2つとは、
元々は1つしかMeshが存在しないMeshに2つの別Meshを内包させたりとか
SB3Uで読み込んだ場合に1つのmqoファイルなのに2つのMeshが表示されるように出来たりします。
では、とりあえずは次の画像をご覧ください
この画像は適当に立方体を作って複数のオブジェクトにコピーしただけの物ですが
オブジェクト名をSB3Uのルールで記述した物です。
当然ですが画面の右上に3つのオブジェクト名が記載されていますよね、
この記載されているオブジェクト名の「hako_00(Scale=1000)[0]」と「hako_00(Scale=1000)[1]」が
一つのMeshとして扱われ、記述で後ろの[1]が付く方がサブメッシュとして読み込まれます。
一方、その下の「hako_01(Scale=1000)[0]」は、hako_00とは別のhako_01という別Meshとして
SB3Uに読み込まれるようになっています。
この様に記述するとhako_00はサブメッシュ入りの単一MeshとしてSB3Uが読み込み
hako_01は同一mqo内にあるにも関わらず読み込んだ際には別Meshとして
表示に現れ、hako_00とhako_01が個別に埋め込み作業が出来る様になるということなのです。
では、このファイルをSB3Uで開いてみましょう
一つのmqoファイルしか開いていないのに2つのMeshが表示されていますよね
先ほどの記述をしたmqoファイルは読み込んだ場合このようになりますが
これだけだとhako_00にサブメッシュが追加されているかどうかわかりませんよね
それでは適当に埋め込んでみましょう
ちなみにアイテム埋め込みの場合のOption設定ですが下の画像の設定でいいかと
アイテムは基本的にはボーンが無く、SkinnedAnimationしないのでRender設定は
MeshRenderにしておかないとSkinnedMeshRenderで埋め込んだ場合はゲームがクラッシュしちゃいます。
それでは埋め込んだ物をば
上記はhako_00を埋め込んだ結果のSB3U上での表記です。
画像の赤線の所を見て頂くと、マテリアルが2つありますよね
そのマテリアルの左側に数値が表記されていると思います
この様に数値がマテリアルの左側に表示されていますとそこにはMeshが存在しており、
そのMeshに対して設定されているマテリアルが右側に表記されます。
つまりは、この状態だと1つのMeshに2つのMeshが内包されており
この状態を私たちは勝手にサブメッシュ化と読んでおります。
ちなみに埋め込む前の画像も参考のために載せちゃいます
実はこちらもマテリアルが2つあるのですが赤線の所を見て頂くと
左側に数値があるのは赤線を引いた方だけでその下の方には数値は存在していません
この様な表記の場合は赤丸の所のMeshに対し左側全てのマテリアルが貼られることを表しており
つまりは1つのMeshに対して2つのマテリアルが設定されていることを表しています。
実はこういう設定をされているMeshはデフォでも相当存在しており、この方法を使うと
色んな事に応用が出来ますのでお暇があれば色々試すのも楽しいかと(^^)
ってことで~長々と書きましたがSB3Uとmqoファイルの関係性というか仕様を記述してみました。
私も最近少しお暇が出来まして幾つかアイテムを作ってみようかと悪戦苦闘していますが
なかなか自分の思ったような結果にならずどこで妥協しようか悩む羽目になっているんですけどねぇ