[リストへもどる]
一括表示
タイトルDiffuseRGBとDiffuseFactorに関して
記事No682
投稿日: 2013/09/07(Sat) 01:03:10
投稿者sygh
koi様

いつもお世話になっております。

標題の件ですが、MQOをFBXエクスポートする際に、どうも
FbxDiffuseRGB = MqoDiffuseLevelF * MqoMaterialColorRGB;
FbxDiffuseFactor = 1;
として出力されてしまっているように思われます。
本来であれば、
FbxDiffuseRGB = MqoMaterialColorRGB;
FbxDiffuseFactor = MqoDiffuseLevelF;
としなければならないのではないでしょうか?
当方FBXローダーを書いているのですが、エクスポーターで出力する際にMqoDiffuseLevelFとMqoMaterialColorRGBを乗算してしまうと、
読み込むときに各々の情報が失われてしまいます(不可逆変換)。

Metasequoia公式のLightWave Object用LWOエクスポーターはマテリアルカラーと拡散レベル(拡散光成分)を正しく可逆変換できるように出力してくれているので、
この動作に合わせていただけると助かるのですが……
他の成分に関しても、
FbxAmbRGB = {MqoAmbLevelF, MqoAmbLevelF, MqoAmbLevelF};
FbxSpecularRGB = {MqoSpecularLevelF, MqoSpecularLevelF, MqoSpecularLevelF};
FbxEmissiveRGB = {MqoEmissiveLevelF, MqoEmissiveLevelF, MqoEmissiveLevelF};
ではなく、
FbxAmbFactor = MqoAmbLevelF;
FbxSpecularFactor = MqoSpecularLevelF;
FbxEmissiveFactor = MqoEmissiveLevelF;
とするのが妥当かと思われます。
検証に使用したエクスポーターのバージョンは1.2.8、
読み込みに使用したFBX SDKバージョンはVC 2012用の2014.1です。

それでは、よろしくお願いいたします。

P.S. エクスポーターの開発は停止になったのかと思っていましたが、再開されて嬉しく思います。お忙しいとは存じますが、これからもがんばってください。
ちなみに英単語の「アンビエント」がどうもBBSの禁止ワードに引っかかるようなのですが……

タイトルRe: DiffuseRGBとDiffuseFactorに関して
記事No683
投稿日: 2013/09/07(Sat) 18:27:05
投稿者koi
syghさま

エクスポーターをColorとFactor別々に出力できるように修正しました。
「マテリアルカラー設定」の「ColorとFactorを分離する」をチェックして出力してみてください。

エクスポーターがこのような仕様になっていたのには理由があったはずです。
・たぶんMaxのDiffuseにはFactorに対応するものがなかった
・XNAで使用する際にFactorに対応するものがなかった
といった理由で事前にDiffuseとFactorを掛け合わせることにしたのだと思います。
うろ覚えですみません。

また、禁止ワードの件ですが、申し訳ございませんでした。
一応Ambientで引っかからないようにしてみました。

タイトルRe^2: DiffuseRGBとDiffuseFactorに関して
記事No684
投稿日: 2013/09/08(Sun) 16:26:10
投稿者sygh
koi様

お世話になっております、syghです。

お早いご対応ありがとうございます。
出力オプションによる対応の件、了解いたしました。
禁止ワード対応もありがとうございます。

DirectXのXフォーマットも確かMaterialColorRGBに相当するものがなく、
DiffuseRGBAがFactor * ColorRGBとAlphaを兼ねているフォーマットなので、
XNA組み込みのFBXコンテンツパイプラインも同様の読み込み仕様になっていたのかもしれませんね……

現時刻でまだDLページのバージョンが1.2.8のようなので、バージョンアップ版の公開をお待ちしております。

タイトルRe^3: DiffuseRGBとDiffuseFactorに関して
記事No685
投稿日: 2013/09/08(Sun) 17:37:18
投稿者koi
syghさま

> 現時刻でまだDLページのバージョンが1.2.8のようなので、バージョンアップ版の公開をお待ちしております。

こちらではページが更新されていることは確認したのですが、見えていないようですね・・・・

一応、こちらにもダウンロードリンクを書いておきます。
http://www.horsetail.sakura.ne.jp/mqplugin/fbxexporter_1_2_9.zip

よろしくお願いします。

タイトルRe^4: DiffuseRGBとDiffuseFactorに関して
記事No686
投稿日: 2013/09/08(Sun) 19:10:33
投稿者sygh
koi様

お世話になります、syghです。

ブラウザのキャッシュをクリアしたらちゃんと見えるようになりました、お手数をおかけしました。

Ver.1.2.9にて、
・DiffuseColorRGBとDiffuseFactor
・AmbientColorRGBとAmbientFactor
・EmissiveColorRGBとEmissiveFactor
がそれぞれ分離されていることを確認いたしました。

なお、SpecularColorRGBとSpecularFactorは分離されていないように見受けられます。
また、「ColorとFactorを掛け合わせる」「DiffuseのみColorとFactorを分離する」を選択すると、
TransparencyFactorが常に1になってしまうようです(「掛け合わせる」を選んでも、Ver.1.2.8とは異なる結果になる)。
ちなみに「ColorとFactorを分離する」を選択すると、Ver.1.2.8までとは違って、
TransparencyFactorの出力仕様が(正しい方向に)変わっている(FBX SDKマニュアルの
FbxSurfaceLambert::TransparencyFactorの解説通り、
0 = opaque、1 = transparentになっている)ので、
readmeにその旨記載されておいたほうが良いかもしれません。

以上、よろしくお願いいたします。

タイトルRe^5: DiffuseRGBとDiffuseFactorに関して
記事No687
投稿日: 2013/09/08(Sun) 21:12:44
投稿者koi
syghさま

Specularの件申し訳ございません。
修正しましたので、Ver1.2.10をお試しください。

また、TransparencyのFactorについてですが、
「ColorとFactorを掛け合わせる」、「DiffuseのみColorとFactorを分離する」
を選んだ場合Ver1.2.8と同じ動きをしています。
Ver1.2.8ではTransparecyのFactorはいつでも1.0が設定されています。

Transparencyのこのような仕様は、FBXの解説とは違うのかもしれませんが、
過去にMayaからFBXを出力した際の結果をもとにしているためです。
Mayaの場合Transparencyはカラーアトリビュートなので、
Factorにまとめてしまうと元に戻せなくなってしまうことを考慮しているのだと思われます。

タイトルRe^6: DiffuseRGBとDiffuseFactorに関して
記事No688
投稿日: 2013/09/08(Sun) 23:53:51
投稿者sygh
koi様

お世話になります、syghです。

Ver.1.2.10にて、SpecularFactorも正しく対応されていることを確認いたしました、ありがとうございました。

TransparencyFactorに関しては、仰るとおりVer.1.2.8以前でも常に1.0でした、どうも勘違いしていたようで申し訳ありません。お騒がせいたしました。
また、MaxやMayaなどの仕様に関しても勉強になりました、ありがとうございました。

今後ともよろしくお願いいたします。