Shadeで出力したFBX形式ファイルのスキンが崩れる【UUJ】

質問:
あるFBX形式のファイル(ボーンつき)を取り込み、スキンメッシュレイヤーのMeshとRootBoneにそれぞれを設定しています。(この時点では正常)
そのFBXファイルをShade14というソフトでインポートし、少し変更したのちエクスポートで上書きしました。Unity上のFBXで変更した箇所が反映されているのを画面右下のプレビュー画面で確認しました。(これも正常)
しかし、いざスキンメッシュレイヤーのプレビュー画面を見ると、表示が崩れてしまいます。
Shade側の処理以降おかしくなるため、インポート・エクスポートを色々触ってみたのですが、どうも結果に変化がないため、Unity側で何とかできないものかとご相談させて頂きました。
Unity ver.4.3.4f1 (Win)
Proライセンスではありません。

回答:
ボーン自身が変な方向を向いてしまう、ということでよくあるものなら
fbxとしてのボーンのスケールにマイナス値が付いている、ボーンに不要な回転が入ってしまった、というのが考えられます。
Shade14の場合、ボーンの「自動で軸合わせ」というのがOnになっていると、ボーンの位置を変更すると自動で行列のほうの回転が入ってしまいます(これはOffのほうがいいです、というかボーンの姿勢/行列としてのスケールと回転は入れないようにしたほうがよいです)。
UnityのPreviewで配置が変/シーンに配置すると問題なし、という現象は起きたことがありましたが、投稿ではその逆ですね。
<これはボーンの行列としてスケールと回転が入っている、が原因でした。この場合は、個人的な経験ではUnity側では回避できなかったです。

現象としてはスキンの崩れとなります。ボーンの方はアニメーションの動きを見る限りでは正常そうです。FBXプレビュー(正常)、SkinnedMeshRenderer(不正)、シーンに配置したもの(不正)、といった状態です。

Autodesk さんが公式で配布しているFBXViewerでShadeから出力したFBXデータが正常に表示されているか、まずご確認いただいた方がよいかと思います。

Fbxビューワーでは正常表示でした。人体モデルなのですが胸から下のスキンが壊れています。頭と胸だけ正常なのが気になります。「パートの変換をリセット」という機能があるようなので、試してみます。

人体モデルですと、
頭は胴体のメッシュとは別形状になっていて、ボーンの先に頭がついているような構造になってますでしょうか?
これに加えて、ウエイト値の割り当てが頭(ボーンの先端にあるメッシュ)にある、といった組み合わせだと、スキン変形が変になったことが過去ありました。
(この場合はFBXViewerでも変になるのですが)
Shadeで言う、パートの変換行列も気になりますね。
こちらでも確認しましたが、メッシュとボーンが完全に分離された構造(スキンがバインドされてボーンで稼動する)だと問題は起きないですね。

上記の内容も含めて色々試してみましたが状況は変わらず同じ壊れ方のままでした。
人体モデルは1つのオブジェクトとなっており+ボーンのFbxファイルです。

1オブジェクト+ボーンだと標準的ですね。
もう少し元のfbxとShadeで行った作業の情報を教えていただけると調査しやすくなるかもしれません。
こちらでもその現象が起きるルートがあるか調べてみることにします。

元のFBXはAssetStoreより落としたものなのですが、人体モデル+小道具モデル+ボーンのFBXが1つ、アニメ+ボーンのFBXが1つの2ファイルです。そのうちモデルのFBXファイルをImport、なにも変更せずExportしました。頭と胸以外のスキンの表示が崩れる他は小道具もテクスチャもアニメーションも正常です。Import結果はいたって正常に見えるためShade側の設定は特に変更していません。Exportについては、あれこれ試しましたが、上記の状態です。

先ほど、Shadeの開発元より状況の詳しい説明を求めるメールが来ました。上記のような説明の文章とともに、元ファイル・Export後のファイル・画面のエビデンス一式を添付し返信しました。FBXExploreで比較すると確かに違う箇所が散見されるのですが、専門家ではないのでどうも手詰まりです。

開発元より回答がありました。
1:Shadeより出力したFBXはFBXファイルとしての不備はない。
2:インポート・エクスポートしたファイルは同一であることを保証はできない。
3:対応する可能性があるとしても約束するものではない(努力義務的な形)。
4:Unity側の問題である可能性が高いのでこちらでは対応できない。
とのことです。
元のFBXは3dsMax2011の出力ファイルみたい(ファイル内に記載あり)なのですが、ソフトを持って無いので試せないし詰んだ気がしてきました。

MeshとSkinnedMeshRendererでボーンの順番が一致してないんじゃないかなと思うのですが、FBXを再インポートする前にSkinnedMeshRendereをプレハブ化していますか?
プレハブ化しているとFBXでボーンの順番が変わったときにモデルが崩れてしまいます。

頂いたコメント通りでした。
手動でShadeより出力されるFBXファイル内でのボーンの順番は変更方法がわからなかったため(できない?)、Unity内でアニメーションが設定してある全オブジェクトを再プレハブ化することで対応できました。ボーンはつけている名前が使われるだけかと思い込んでおり、順番が影響しているとは思っても見ませんでした・・・

Comments

comments

スポンサーリンク
336*280px