FBXをエクスポートするとマテリアルが分割される(増える

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/6/9 2:01
まさかみ  常連 居住地: Tokyo  投稿数: 58
こんにちは

ゲーム用にBlenderからFBXを出力したら
マテリアルが分割されて出力されました。
また名前が変わって出力されたマテリアルもあります。

送付ファイル内にblendファイルとFbxファイルがあります。
FbxInfoViewerなどで確認すると分割されていることがわかります。

正しくマテリアルを出力するにはどうしたらよいでしょうか?
よろしくお願いします。

Blender2.49b
Windows Vista home basic
:download:pc001_azusa_02_test.lzh

投票数:7 平均点:2.86
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/6/26 12:11
kikori  新米   投稿数: 10
誰も書き込みをしなさそうなので書き込みます

たしかに名前などがおかしいですが、
たぶんゲームプログラミングには影響が無いと思いますよ

FBXファイルの大本のオートデスクにFBXビュワーがありますので、
それで確認して正しく表示されていればゲームでも使えます
BlenderがエクスポートするFBXファイルをメモ帳などで開くと解りますが、
Xファイルと同じような構造で、番号で管理しているみたいなので
名前は殆ど意味が無いので、大丈夫だと思いますよ
自身はありませんが・・・・

開発言語がC#(XNA)かC++(DirectX / OpenGL)なのか解りませんが
C++であればFBX SDKを詳しく説明している
「マルペケつくろーどっとコム」さんが便利です
紹介しているFBX SDKのバージョンがちょっと古いですが、基本的な流れは最新バージョン大体同じです
FBX SDKにサンプルやHELPも付いているので、英語が出来なくても何となく解るはずです

XNAは「ソーサリーフォース」さんが便利ですが、ちょっと情報が古いですので
他のサイトも併用することをお勧めします

勘違いまたは間違っていたら済みません
投票数:4 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/7/2 23:37
まさかみ  常連 居住地: Tokyo  投稿数: 58
返信ありがとうございます!

unityで読み込んだところちゃんと表示されモーションも再生できました。
マテリアルが増えてるので若干パフォーマンスに影響するくらいです。

BlenderのFBXエクスポーター調べてないので原因はまだわかりませんが
ゲーム作業の方は進められそうです。
何か分かったらここに書き込みます。
(Blender2.5系のエクスポータもできるといいなぁ
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/7/3 2:19
まさかみ  常連 居住地: Tokyo  投稿数: 58
原因わかりました。

UV Image/EditorでUVとかの歪み確認のために作ったImageでした。

export_fbx.py 1907行目あたり

if me.faceUV:
	uvlayer_orig = me.activeUVLayer
	for uvlayer in me.getUVLayerNames():
		me.activeUVLayer = uvlayer
		for f in me.faces:
			tex = f.image
			textures[tex] = texture_mapping_local[tex] = None
			
			try: mat = mats[f.mat]
			except: mat = None
			
			materials[mat, tex] = material_mapping_local[mat, tex] = None # should use sets, wait for blender 2.5

ここで おそらくmat と tex (=f.image)をキーにしてmaterialsを作っているんだと思います。
UV展開作業の過程でFaceに歪み確認のためにImage作り、割り当てました。
そしてFace Hand LegにSkin Materialを割り当てました。
materials[ mat(==SkinMaterial) , tex(==Image)] = None
materials[ mat(==SkinMaterial) , tex(==None?)] = None
という風にスクリプトがキーが異なると判断して
マテリアルを増やす結果になりました。

Untiledという名前もImageにつけられたものでした。
変な名前はmaterial.name + image.name のせいでした。

ともあれ 3Dプレビューでテクスチャ表示にして
貼り付けた歪みテクスチャを剥がしたら直りました
投票数:6 平均点:6.67
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/7/3 10:42
kikori  新米   投稿数: 10
原因がわかってよかったですね

あと、unityがバイナリ形式のFBXファイルに対応していれば、
オートデスクにあるコンバータでASCII形式からバイナリ形式へ変換すると、
多少は読み取りが速くなるはずです
注意点としては変換時にFBXのバージョンの指定があるのですが
新しいバージョンを指定すると読み取れない事があると思います
投票数:5 平均点:6.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki