人生ゲーム漬けなダメ人間のBlog


ここなのHOMEページ
ここなのプロフィールページ
昔の日記:fUteiKi_niKKi(old)
【threejs】MechaStudioからthreejsへの受け渡しまとめ

この件についてのまとめです。


FBX形式の出力後読み込みなのですが、
現行のMechaStudioだけでは実現できないことが幾つかあります

このエントリではその辺りのポイントをまとめてみます


はじめに


現行のMechaStduioではFBXのバージョンは2010までしかサポートされていません
また、threejsではFBXのバージョンは2012以降でないと FBX Loader で認識されません


そこで今回は MechaStudio で FBX 出力後にコンバータを経由してFBXのバージョンアップを行い
Blenderの介在なしに threejs でレンダリングを可能にしていきます

FBX のコンバートには Unwrap 3D を使います。老舗のコンバータでライセンス料も買い切りでお安いです
サイトは ココ です


コンバートしてみよう


読み込みに成功すると、モデルが表示されます。
自分のときは以下の設定を再設定する必要があったので、これは手作業で対応しています

・マテリアルのテクスチャ設定(パスが消失してる)
・光沢色(デフォルト設定の黒にされてしまう)
・反射度(値を引き継げずに最大値で設定されている)

※この辺はコンバータによって扱いが変わると思うので、読み込み時にしっかり確認しておきましょう


threejsでレンダリングしてみる


これらを設定してFBX Loader( exsample )を使ってthreejs側で再生してみましょう
多分、反射設定がすっぽり抜けていると思います

これを解消するには、反射度が1/128されてしまっているので解消しないといけません
しかし困ったことに forEach Materials は FBX Loader内では使えません

自力で探し出して設定させる必要あるんですが、コンバータを経由したFBXの構造は、
割と安定しないことがあるので考慮したコードを用意してあげないといけないのです…

というわけでサンプルコードはこちら、
//fbx shininess is smoller. Multiply shininess by 128 //マテリアルの shininess を128倍する //console.log(object.children[0]); //デバッグ用 var group_length = object.children[0].parent.children.length; var group_skin_id = null; if(group_length){ //fbxの構造は常に一緒とは限らない for(var i = 0; i < group_length; i++) { if(object.children[0].parent.children[i].type == "SkinnedMesh") { var mtt_length = object.children[0].parent.children[i].material.length; group_skin_id = i; } } } if(mtt_length) { for(var i = 0; i < mtt_length; i++) { object.children[0].parent.children[group_skin_id].material[i].shininess *= 256; } } //console.log(object.children[0].parent.children[group_skin_id].material); //デバッグ用
FBX読み込みの処理のなかにこれを含めます

ここまで設定すると殆どプレビューと変わらない見た目で表示されるはずです


プレビュー環境もあわせておこう


さて、ここまで設定できたら作業はサクサク進みますが、MechaStudio側のプレビュー環境も
threejsのレンダリングに合うようにしておきましょう

MechaStudio 側でマテリアル設定する際の注意事項はこんな感じです

・MechaStudioの環境光はthreejsでは無視される(AmbientLightがあるから)
・これを逆手にとってマテリアルの環境光をthreejs側の想定にあわせておくと作業が楽になる

書いてある通りなのですが、threejsではAmbientLightの設定は無視されます
出力したときにマテリアルの質感に差異が出やすい要因はこれかなと思っています


なので、それを逆手に取った設定をしておくとプレビューの状態を
最終レンダリングに限りなく近づけられると思うので確認してみてください


|д゚)ノシ オワリダヨ


| ここな | サンデーぴーぽー | comments(0) | trackbacks(0) |

Comment










Trackback
url: http://kurobee.kokona.lomo.jp/trackback/1038086

new | top | old


累計 本日 昨日

無料ブログ作成サービス JUGEM
(C) 2018 ブログ JUGEM Some Rights Reserved.
-Paging Navigation-

new | old

▲PageTopへ▲