myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | FBX エクスポートした後にイメージクリップが表示されない問題

最近Mayaユーザーとデータ共有するために良くFBXを使ってSoftimageからMayaに持って行ったり来たりしています。

そこでこの問題が出てきました。
ずっと前からあった気がしますが、最近までそんなに気になっていませんでした。

SoftimageでFBXにエクスポートすると、イメージクリップが表示されなくなってしまう問題です。エクスポートしているのに、現在のSIデータが変わっちゃうってどういう事ですか?!

ビューア上ではちゃんと表示されますが、イメージクリップのプレビューとテクスチャエディターには表示されません。そしてテクスチャエディターがめっちゃ重くなってしまいます。

こんな感じです: (一応仕事のモデルなのでUVはUniqueUVで適当に作り直した)

clipproblem02.jpg

イメージクリップを作り直すと直ります。

となるとイメージクリップに問題があるという事ですね、面倒だからイメージクリップを作り直すスクリプトを作ってみました。

//JScript
//選択取得
var oSel = getvalue("selectionlist")

//選択にはイメージクリップがあった場合は、選択されたオブジェクトだけで実行
//イメージクリップがないと、全イメージクリップを取得する
if (!oSel.Filter("ImageClip")) var oClips = ActiveProject.ActiveScene.ImageClips
else var oClips = oSel

for ( var i=0; i < oClips.Count; i++ ) {
//イメージクリップをリネーム
var oClip = oClips(i);
oClip.name = oClip.name + "_temp"

//イメージクリップが繋がっているシェーダーのパラメーターを取得
var oClipTargets = oClip.GetShaderParameterTargets()

//新しいイメージクリップを作り直す
var sourceFile = oClip.parameters('SourceFileName').value
var oNewClip = SICreateImageClip(sourceFile)(0);

//新しいイメージクリップをパラメーターに接続
for ( var j=0; j < oClipTargets.Count; j++ ) {
SIConnectShaderToCnxPoint(oNewClip, oClipTargets(j), false);
}

DeleteObj(oClip)
}


パラメーターのコピーはしないスクリプトだから、パラメーターコピー機能も追加しようと
・・・

表示されません。

ま、おかげで原因が分かりました。パラメーターですね。

表示されるやつとされないやつのパラメーターをループで比べてみたら2つだけが異なっていました。
両方はCropのパラメーターでした。

以下のスクリーンショットを見てお分かりでしょうか。

clipproblem01.jpg

X最小 と 最大 は 同じ0 そして、 Y最小 と Y最大は 同じ1 になっています。

最小値と最大値は同じ数値だから通りで表示されるわけないじゃん!


FBXエクスポーターが使用されているイメージクリップのCropパラメーターのXMax と YMin を勝手に変えてしまいます。
FBX形式にはそれが必要か分からないけど、元に戻せよ!

意外と簡単でした。この原因が分かったら解決方法は簡単ですね。

//JScript
var oClips = ActiveProject.ActiveScene.ImageClips
for ( var i=0; i < oClips.Count; i++ ) {
oClips(i).Xmax=1; oClips(i).Ymin=0;
}


以上

Comments

こんにちは。
適当に履歴コピペのスクリプトで何とかしてました(爆)
個人的にはFBXで吐き出したデータがSI2011と古いバージョンのせいか再度FBXを読み込むとテクスチャ剥げて読み込まれるのが残念です。MAYAちゃんだとちゃんと表示されるのですが…(ヽ´ω`)

  • 2015/07/31(金) 01:15:45 |
  • URL |
  • ミゲル #-
  • [ Edit ]

Re: No title

パスが切れている時に以下のスクリプトでテクスチャのパスを直せます。
現在のプロジェクトのPicturesフォルダにテクスチャが入っているのは条件です。

これもJScriptなので、.js という拡張子のファイルで保存して、ツールバーなんかにボタンを作れば使えます。

//JScript
var fs = new ActiveXObject( "Scripting.FileSystemObject" );
var oProject = ActiveProject;
var oScene = oProject.ActiveScene;
var ImageClips = oScene.ImageClips;
var folder = fs.GetFolder( oProject+"\\"+"Pictures" );

for(var i = 0; i<ImageClips.count; i++)
{
var oImageClip = ImageClips(i);
var oSource = oImageClip.Source;
var oName = oSource.Name;
var oFileName = oSource.Parameters("FileName").Value;
var OriginalPath = oSource.Parameters("Path").Value;
if(oSource.Name != "noIcon_pic")
{
var strtemp = OriginalPath.lastIndexOf("\\")+1;
var NewRelativePath = "Pictures\\" + OriginalPath.substring(strtemp,OriginalPath.length);
oSource.Parameters("FileName").Value = NewRelativePath;
}
}

  • 2015/07/31(金) 01:40:03 |
  • URL |
  • myara #-
  • [ Edit ]

至れり尽くせりありがとうございました。
明日試してみます。

  • 2015/07/31(金) 01:56:22 |
  • URL |
  • ミゲル #-
  • [ Edit ]

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/196-0e512597
Use trackback on this entry.