カテゴリー「XSI Data Management」の10件の記事

2013年11月 4日 (月)

ガッデムMatLib。

マテリアルライブラリを整理するツールを書きますた。
だいぶ前に書いて、今でもよく使ってます。


複数のマテリアルライブラリを合体させる機能と、空っぽのマテリアルライブラリを削除する機能の2つしかないんですけどね。



マテリアルライブラリ整理ツール
ガッデム MatLib
http://homepage3.nifty.com/jjj/XSIFiles/Plugin/JJJ_XSI_Plugins.html

Goddamnmatlib



人からもらったシーンを整理したり、シーンのマージをしたり、emdl のインポートをしたり、いろんなことするうちにマテリアルライブラリってけっこうぐちゃぐちゃになってガッデーーム! になるじゃないですか。 閣下がお怒りなのも無理もないことです。 だから整理ツールを書いてみたという。



空っぽのマテリアルライブラリを削除する方のスクリプトは、書きたてほやほやの時に一度ブログに書いてましたね。 これ ですね。 その後、合体機能を追加したのかな。

あともうひとつ、なんだっけ、マテリアルライブラリ関係で欲しい機能があったんだけど、忘れちまったよ。 思い出したら機能追加しておきます。







( ´・ω) ガッデーム



.

| | コメント (0) | トラックバック (0)

2013年1月23日 (水)

ビルド番号。

XSI でシーンを開く時にログに出る、あのわけの分からない番号のことですよ。

V


ちょっと過去のシーンを開く必要があって、あれ? あのシーン、どのバージョンの XSI で作ったんだっけ? とか思って、とりあえず開いてみたらこういう番号が出て来やがる。



結局なんなの? 
2011 なの?
2012 なの?
2012 SP1 だっけ?
それとも 2012 SAP SP1 だっけ?
あれ? そんなバージョンはなかったっけ?



というのが分からんのですよこれじゃ。
嘔吐デスク様、氏んで下さい。



で、たしか eX-SI に出ていたよな・・・・と思って探してみたらありました。


 http://xsisupport.com/2012/07/18/softimage-build-versions/


なるほど、これを見れば分かりますね。




・・・・でも、こんな対応表が必要になるくらいなら、なんで最初から分かりやすい表示にしてくれないんでしょうかね。 ビルド番号よりも、わかりやすく 2011 SAP SP1 とか表示してくれればいいじゃないですか。



あるいは、2011 とか 2012 とかそういう馬鹿馬鹿しいバージョン名はもうやめて、昔のように普通に ver9.6 とか ver10 とかそういう言い方にすればいいんですよ。 そうすりゃその意味不明のビルド番号が意味不明じゃなくなるわけです。 最初から 9.6 で作っていたんだ、という意識がありますからね。 何度も言っているでしょう嘔吐デスク様。





上の eX-SI の記事のコメント欄にありますが、ビルド番号というのは、

 MAJOR . MINOR . BUILD

という法則だそうで、メジャーってのは 2011 とか 2012 とかに相当する一番大きなくくりですね。 マイナーってのは SP1 が出ると 0.1 ずつ上がるように見えますね。 SAP が出ると 0.5 上がるように見える。よって SAP に対して SP1 が出ると 0.5 + 0.1 で 0.6 になるように見えます。 合ってますかね?

最後のビルドってのはもう、開発者側の内部的番号というか、コメント欄にあるように、リリースしたかどうかは別問題でバグ修正その他で日々吐き出しているファイルの番号のようですね。 一番最後は必ず .0 なんですか? なんでだろう。



タチが悪いのは、商品の呼称としては 2010 とかそういう呼び名になっていて、ビルドのメジャー番号がそれに近い 10 とか 11 とかになっていて、2010 が 10 なら分かりやすいのですが 2010 は 8 であり 2012 は 10 であるという、どう見ても嫌がらせとしか思えない分かりにくさです。 7.5 から 8 になった時に呼び方を 2010 に変えたので、番号を飛ばすわけにもいかないと思ったのでしょうが、んー、分かりやすいのがいいですよ嘔吐デスク様。 番号飛ばすのがダメというより、2010 とかそういう呼称がダメなのですよ嘔吐デスク様。 今からでもいいから 2014 を ver12.0 という名前にしてくれれば、今後の混乱は避けられます。 さあそうして下さい。 サブス払わねえぞゴルァ




ログの最後に出る compatibility version : 900 とかいうのは、この番号が同じならどのバージョンの XSI でもシーンが開けますよ、という意味の番号ですね。 

例えば 2011 なら、

 2011
 2011 SP1
 2011 SAP
 2011 SAP SP1

という4つのバージョンがありますが、どれも compatibility version は 900 と出るはずです。 なので、これら4つのバージョンの間でデータに互換性がある(どれで作っても、どれでも開ける)ということですね。 シーンファイルだけでなく、EMDL なんかもこの番号で互換性が左右されますよね。 Preset とかは関係なかったかしら? どうだったっけ。






で、冒頭で言った過去のシーンを開いたときに出るビルド番号を見ると 2012 SP1 で作られたものでした。 それを現在の 2012常用バージョンである 2012 SAP で開いてみたんですがね、未使用 Clip/Source の削除を実行すると落ちたり、シーンをセーブしようとすると落ちたり。 なんだか不安定です。 compatibility version が同じで互換性は保証しますよと言っておきながら、確かにファイルのオープンは問題ないけど色々やろうとするとあっという間に落ちるという、実に嘔吐デスク様らしいトラップです。

市んでください。
っていうか XSI を Foundary あたりに売却して下さい。
けけけけけ。



.

| | コメント (0) | トラックバック (0)

2012年10月12日 (金)

シーンの名前とシーンのファイル名。

まあ、今さらどうこうという話でもないのですが、
たまたま今日、親分とそんな話をしたので。


 XSI のシーンの名前というのは、
 シーンのファイル名とは必ずしも一致しない。



という話です。

まあ、だからどうだという話でもないのですが。




XSI からは、HOGE.scn としてセーブしたとします。
でも、OS のファイルシステム上でそれを Hage.scn にリネームしたとします。


このシーンを XSI にロードすると、

Scenename

こうなってますね。

まあ、この不一致がワークフロー上問題がないならば、それでいいですよね。新たにセーブすればその時に一致しますしね。


でも、混乱のもとにはなりやすい。 わかにくい。 間違ったシーンを開いていると勘違いするようなことが起こらないとは言い切れない。 [Scene] トークンで拾ってくるシーン名も、ファイル名と違ってしまっていていいのか。 シーンから Model をぶっこ抜いたりみたいなバッチ処理をする自作ツールを書く場合とかでも、気にする部分が増えてしまう。 etc


なので、ファイル名を変えたいならば、できればもう一度そのシーンをロードして新たな名前で Save As して欲しい。 

ファイルシステム上で気軽に名前を変えんじゃねえ(゚Д゚)ゴルァ


と言いたいのをぐっとこらえて今日も業務に励みます。




一応、それを検出するというか修正するというか、そんなスクリプトを書いてみたり。 便利だというわけではなく、どちらかというと、シーンオブジェクトの Name プロパティと Filename プロパティは違うんだぜという認識を確認するためのスクリプトです。

JScript
------------------------------------------------------------------

//    現在シーンをシーンオブジェクトとして取得

var oScene = ActiveProject.ActiveScene;   


//    シーンオブジェクトが持つ filename パラメータの値(ファイルシステム上のフルパス)を取得
SceneFileFullPath = oScene.Parameters( "Filename" ).value;


//    フルパスを加工してパスを取っ払い最後のファイル名だけを抽出
aSceneFileNme = SceneFileFullPath.split( "\\" );//    バックスラッシュ区切りで分割してアレイにぶち込む
SceneFileName = aSceneFileNme[ aSceneFileNme.length -1 ];
//    アレイの一番最後の部屋がパスを取っ払ったファイル名
SceneFileName = SceneFileName.replace( ".scn", "" );
//    拡張子削除

//    ご報告
Logmessage( "このシーンのファイル名は : " + SceneFileName + "(.scn)" );
Logmessage( "このシーンの Name は : " + oScene.Name );
//   Scene.Name =  シーンオブジェクトが持つ名前(ファイル名とは必ずしも一致しない)

//    もし一致してなかった場合は
if ( SceneFileName != oScene.Name )
{

    //    ご警告
    Logmessage( "一致しねえぞゴルァ", siError );
    Message =    "このシーンのファイル名は : " + SceneFileName + "(.scn)\r\n"+
                "このシーンの Name は : " + oScene.Name + "\r\n\r\n"+
                "ファイル名に合わせて一致させますか? させますよね?";
               
   
//    ご脅迫
    RET = XSIUIToolkit.MsgBox( Message, siMsgYesNo, "当然ですよね?" );
   
   
//    ご改名
    if ( RET == siMsgYes )
    {
        oScene.Name = SceneFileName;
        Logmessage( "スヴァらしく一致させました。っス。 : " +  oScene.Name );
    }
   
//    ご叱責
    else
    {
        Logmessage( "帰って下さい。っス。", siError );
    }
}
else   
//    一致してた場合は、
{

    Logmessage( "一致してます。っス。" );
//    ご終了
}


------------------------------------------------------------------

Scenename2

シーン名とシーンのファイル名が違っていた場合に警告を出し、一致させるよう脅迫します。 そんだけ。

シーンのロードをトリガにしたカスタムイベントに組み込んだら、シーンをロードするたびにシーン名を強制的にファイル名に合わせて変えてしまうということもできますね。





ともかく、まあ、やはり、ファイルシステム上ではあんまり気楽に名前変えない方がいいと思いますよ。  そのデータを扱うのが自分だけならともかく、他所に渡すデータなら、あんまりわかりにくいことはしない方がいいですよ。 わかりましたか。 あなた。 そう、あなたです。 よろしくお願い致します。






と、ここまで書いて、マーティンが全く同じネタで記事を書いていたことが判明しました。 ごめんマーティン、忘れていたよ。 なんかそんな記事あったよなーと今さら思い出して検索したら一発で出てきた。 全く同じじゃないか。 ネタかぶりごめんね。

http://myara.blog.fc2.com/blog-entry-111.html


しかもマーティンは、Model 名とのダブりまで考慮に入れている。スヴァらしい。


しかしほんと、Model 名とシーン名が一緒なのはダメって、不便だよねえ。 キャラやプロップなどを扱うことが多いと思われるマーティンは、さぞかし不便していることでしょう。 1キャラにつき1 Model で、作業中のシーンと、そこから最終的に吐き出す EMDL は、同じ名前にしたいもんねえ。



あ。 そうか。 今手元にあるこの大量の名前不一致シーンは、もしかして、そのためか。 Model と同じ名前にできないから、違う名前でシーンをセーブしておいて、その後で Model の名前に一致させるように手で .scn ファイルをリネームしてるのかな。

ううむ、それもどうかと思いますよ。 Model とシーンで名前を一緒にできない XSI の仕様は気に入らないけど、だからと言って手で変えちゃうのは、その後の不具合や事故が起こりやすい気がするなあ。どうだろうなあ。 あまり賛成しないなあ。



まあいいや。


もういっちょ参考リンク。
http://xsisupport.com/2012/08/29/scene-names-and-scn-file-names/





.



.

| | コメント (2) | トラックバック (0)

2012年10月 5日 (金)

ExportModel こうだったっけ。

あれえ?

今やってみたら、びっくりした。
こうだったっけ。




XSI って、ブツを他のシーンに持っていく時とか、EMDL ファイルに書き出すじゃないですか。そして Model 単位での書き出しになるじゃないですか。 だから書き出すときはいつも Model の子供にしてから Model 階層を選んで File > Export > Model ってやってたんですよ。 そうしなければいけなかった。はず。 ですよね。


でもさっき、手元が狂って、Model ではなく通常の3Dオブジェクトを直接選択した状態で Export Model してみたら、あれれ? できちゃった。


シーン上のブツは、勝手に新規 Model の子供になって Export されるとかではなく、そのままです。 でもディスク上にある EMDL には XSI が勝手に Model を足しているようで、その EMDL をインポートすると XSI が追加したと思われる Model にぶら下がってブツがインポートされます。



あれえ?
昔はこうじゃなかったですよね?
いつから変わったんですか?
これ、2012 SAP です。
あなた、昔からこうでした?



俺なんかわざわざ えくすぽいんぽ という Model の出し入れ系プラグインを書いて、自動で Model を挟んですぐさま書き出し、書き出し後は何事もなかったように元の状態に戻しておく機能を付けたりしてましたからね。 でももう、それ要らないじゃないですか。標準でできるんなら。 あれえ。おかしいなあ。いつからこうだったんだろう。




まあいいとして、
Export Model でもひとつ罵倒したいのですが、
何も選んでいない状態で Export Model を実行するとどうなるか。

マトモに考えれば、「何か選んでから実行して下さい」 だとか、警告を出しますよね。 何がいかんのかをユーザに伝えなくてはいけません。

でも、やってみて下さいよ。
こんな風になってます。

Fuckexportmodel

ええと、日本語版だと、なんていうエラーになるんですか。


もうちょっとマトモなエラー出せや (゚Д゚)


こんなんじゃ、何がいけないのかわからなんではないか。

俺が書くスクリプトの方がよっぽどわかりやすいよ。
さっとエラー処理書けばいいだけじゃない。
警告コメント用意すればいいだけじゃない。
シロートでもできるぜそんなの。


っていうかこれ、もしかして XSI がユーザに出しているエラーじゃなくて、スクリプトエンジンが出している実行エラーですかね?  ユーザが Export Model を実行した時に走るスクリプトが、途中で止まっちゃってるって状態じゃないのかな? 違う?  もしそうだとしたらアホですよね。 ユーザに警告出して終了するならその操作は完結しますが、途中で実行エラーで止まってるとしたら、それ、完結してないというか、操作が終了できなかったということですからね。 まあこんなの、XSI の至るところにありますがね。



.

| | コメント (4) | トラックバック (0)

2012年9月11日 (火)

カスタムプロパティのお名前。

今まであんまり意識したことなかったんですが、カスタムプロパティのネームスペースについてなんですがね。


 1. カスタムプロパティは、別のオブジェクト以下なら、同一 Model 内でも、同じ名前のまま存在できる

 2. カスタムプロパティは、別の Group 以下の場合、同一 Model 内だと、同じ名前で存在できない


1はいいとして、2に気づくのに手間取りまして、あるツール開発でこれのためにまる2日くらいトラブっていた気がします。 今わかりました。 くそ。 なんでそうなんだよ。カスタムプロパティがぶら下がっている場所は 違う Group なんだからさ、同じ名前で存在させてくれよ XSIさま。

同一 Model 以下で同一の名前のオブジェクト(3Dオブジェクト)は許されてませんよね。なので、複数の同じ名前のカスタムプロパティをいろんなオブジェクトにぶら下げてもカスタムプロパティ名のフルパスは同一にならず、だからこそカスタムプロパティは同じ名前のままでいられるのではないかとなんとなく思ってました。

Group も同じく同一 Model 以下で同じ名前が許されてません。なら同じ法則で、Group にぶら下げたカスタムプロパティも同じ名前で複数存在させられる気がしちゃうじゃないですか。ねえ。 俺なんか変なこと言ってますか。そうですか。すいません。


画像:

null も cube も arc も同一 Model 以下だが、カスタムプロパティ Hoge を同一の名前で保持している(赤)

Scene_Root 以下の Group1, Group2, Group3 が持つカスタムプロパティの名前は Hoge, Hoge1, Hoge2 となってしまい、同じ名前で存在できない(青)

Model である Fucker 以下の HageGroup1, HageGroup2 が持つカスタムプロパティの名前は Hoge, Hoge1 となってしまい、同じ名前で存在できない(黄)

Custompropnamespace

| | コメント (0) | トラックバック (0)

2011年5月 6日 (金)

貴様、ダブってるなら失せろ。

クラスタにマテリアルを与えているうちに、同じマテリアルをうっかり複数クラスタに与えてしまうことってあるじゃないですか。

と言うよりも、そのマテリアルを持つクラスタはすでに存在しているから、クラスタにポリゴンを追加すりゃいいだけなのに、ポリゴンにまた同じマテリアルを与えることによってうっかり新規クラスタとして作成してしまうことってよくあるじゃないですか。

そんなことして無駄に増えていったクラスタを整理するスクリプトを書いてみたのですが、一応動いているように見える。


if ( Selection.Filter.name == "object" )
{
    for ( var i=0; i<Selection.count; i++ )
    {
        if ( Selection(i).IsClassOf( siX3DObjectID ) )
        var oClusters = Selection(i).ActivePrimitive.Geometry.Clusters;
        MergeClusters( oClusters );
    }
}
else
{
    Logmessage( "ドルァ" );
}

function MergeClusters( oClusters )
{
    var oMatCol = XSIFactory.CreateObject( "XSI.Collection" );
    oMatCol.Unique = true;   
//    これ重要
    var oMatClsCol = XSIFactory.CreateObject( "XSI.Collection" );

    //    GridParameter にぶち込むための 「クラスタ&そのマテリアルコレクション」 「マテリアルのコレクション」 作成
    for ( var i=0; i<oClusters.count; i++ )
    {
        if ( oClusters(i).type == "poly" )
        {
            var oMat = GetClusterMat( oClusters(i) );
            if ( oMat )
            {
                oMatClsCol.Add( oClusters(i) );
                oMatClsCol.Add( oMat );
                oMatCol.Add( oMat );
            }
        }
    }

    //    oMatClsCol のイメージ
    //    クラスタオブジェクト1, そのマテリアル, クラスタオブジェクト2, そのマテリアル......
    //    Cls1, Cls1.mat, Cls2, Cls2.mat, Cls3, Cls3.mat .....

    //Logmessage( oMatClsCol.count + " : " + oMatClsCol );
    //Logmessage( oMatCol.count + " : " +  oMatCol )

   
   

    //    GridParameter 作成   2次元配列みたいなもん?
    //    行=マテリアル  列=そのマテリアルを持つクラスタ

    var oP = XSIFactory.CreateObject("CustomProperty");
    var oGridParam = oP.AddGridParameter("Grid") ;
    var oGridData = oGridParam.value;
    oGridData.RowCount = oMatCol.count;
    oGridData.ColumnCount = oMatClsCol.count/2;

    //    ここで Row (行)の数(=マテリアルの数)は先に確定
    for ( var i=0; i<oMatCol.count; i++ )
    {
        oGridData.SetRowLabel( i, oMatCol(i).name );
    }

    //    ルックアップテーブル作成
    ClsCounter = 0;
    for ( var i=0; i<oMatClsCol.count; i+=2 )
    {
        var oCls = oMatClsCol(i);
        var oMat = oMatClsCol(i+1);
        for ( var j=0; j<oGridData.RowCount; j++ )
        {
            RowLabel = oGridData.GetRowLabel( j );
            if ( RowLabel == oMat.name )
            {
                oGridData.SetCell( ClsCounter, j, oCls );
  // デバッグ時、この行と次の行を入れ替える
                //oGridData.SetCell( ClsCounter, j, oCls.name );
                //    → GridParameter を目で見るため。 かつ、下の InspectObj を有効にする

                ClsCounter++;
            }
        }
    }

    //InspectObj( oP )

    //    テーブルの Row ごとに(=マテリアルごとに)処理
    for ( var i=0; i<oGridData.RowCount; i++ )
    {

        //    セルの値(クラスタ)をアレイにぶち込み、さらに空白削除して左詰めにした新規アレイを再構築
        var aSafeArray  = oGridData.GetRowValues( i );
        var aValues = new VBArray( aSafeArray ).toArray() ;
        var aClusters = new Array( ); 
//空白削除用の新規アレイ
        for ( var j=0; j<aValues.length; j++ )
        {

               if ( aValues[j] != null )  //元のセルから取った値が null じゃなかったら新規アレイに追加という。
            {
                aClusters.push( aValues[j] );
            }
        }

        if ( aClusters.length != 1 )
        {
            var oDestinationCluster = aClusters[0];
            for ( var j=1; j<aClusters.length; j++ )
            {
                var oSub = aClusters[j].CreateSubComponent( );
                DeletedClusterName = aClusters[j].name;
                DeleteObj( aClusters[j] );
                var oUpdatedCluster = SIAddToCluster( oDestinationCluster, oSub )(0);
                Logmessage( DeletedClusterName + " --> " + oDestinationCluster.name + " に統合しますた!! (;゚∀゚)" );
            }
        }
    }

}

function GetClusterMat( oCluster )
{
    for ( var j=0; j<oCluster.LocalProperties.count; j++ )
    {
        if ( oCluster.LocalProperties(j).IsClassOf( siMaterialID ) )
        {
            return oCluster.LocalProperties(j);
            break;
        }
    }
}




オブジェクト(複数可)を選んで実行します。 ポリゴンとかクラスタを選んでいるとダメです。オブジェクト選択モードでないといけません。

ポリゴンクラスタを探し、見つかったポリゴンクラスタからマテリアルを探し、マテリアルがダブっていたらクラスタを統合し、抹殺します。






たとえばこの状態。
Mergeclsbymat

この sphere には、ポリゴンクラスタが5個ありますね。
そのうち、Cls4 は独自のマテリアルを持っていませんでした。よって Cls4 は無視します。
Cls4 以外のクラスタが持つマテリアルを比較します。
すると Cls3 と Cls5 が mat3 という同一のマテリアルを持っていることがわかりました。


この状態でスクリプトを実行すると、
Mergeclsbymat2

Mergeclsbymat3

こうなります。



1枚目の画像でエクセルのシートのようなものが表示されている PPG がありますが、これがスクリプトの中で内部的に使っているルックアップテーブルです。 スクリプトの中のコメントに従って書き換えると、画像のように表示できます。デバッグ時に表示させて、正しく動いているかどうかの検証に使っていたものです。脳味噌の中でこねくり回しても俺はすぐ混乱してしまうので、XSI の GridParameter を使って可視化しているわけですね。 このように、かき集めたクラスタとそのマテリアルをこの表に一度書き込んでしまい、次に表の頭から順に比較し、処理をしています。

もっと上手い方法もあると思う。アルゴリズム的にあまり美しくない気もする。無駄なことやってる部分もあるでしょう。でもまあ、一応望んだ挙動になっているのでOKです。




マテリアルの中身を比較したりはしません。つまり、例えば mat1 と mat2 の RenderTree 構成や各シェーダのパラメータが全く同一だったとしても、mat1 と mat2 という風にシーン内に別マテリアルとして存在している以上、中身が同一でも別マテリアルと見なします。




クラスタ関係のスクリプトはいずれ整理して、一群のツールセットにしたくなってきました。クラスタマテリアルをたくさん使わざるを得ないタイプのモデリング作業をしていると、この辺のスクリプトが必須です。手でやってたら気が狂います。





ごきげんよう





.

| | コメント (0) | トラックバック (0)

2010年11月 4日 (木)

3ds 再び。

ちょっと実験用にモデルデータが欲しくてインターネットで探したんですが、未だに .3ds 形式のモデルデータ多いですよね。


んで、XSI 2011 SAP にインポートしようとしたら、3ds のインポート機能がないことに気づきました。 そう言えば前にもそんなこと書いたな、と思って探してみたら、2008年に書いてました。



んで、試しに全く同じことをやってみました。

すなわち、7.0 のプラグインフォルダから 3dsImport.dll をかっぱらってきて 2011 SAP のプラグインフォルダにぶち込む。

そしたら、できました。Import メニューに Import 3ds という項目が現れ、実際にインポートもちゃんとできました。 UV も来てます(正しく来てるかはわかんないけど)。 ただし、以前と変わらずすんげえ遅い。大してでかいデータでもないのに数分かかりました。これは元データによるのかもしれないし、UV が無ければ速いとか、そういうのもあるかも知れません。そこまで実験してません。知りません。



ま、とりあえず最新版 XSI でも 3ds を直接インポートする道はある、ということで。
良かった良かった。




しかし、当然これは嘔吐デスク様にとっては想定外の使い方になると思うので、全ては自己責任でやらねばなりません。これに伴うリスクは自分で負いやがり下さい。 特に 7.0 はアビッド様の製品です。アビッド様に帰属する dll ファイルを嘔吐デスク様のソフトウェアにインストールするというのは法規的に問題あるかもしれません。 このおぞましい混血によって危険なキメラを産み出すかもしれません。知りません。



.

| | コメント (0) | トラックバック (0)

2009年9月17日 (木)

地味に便利。

もう弐千拾が出て来ているというのに、今さら 7.5 を使い始めているんですがね。


で、今日気づいたんですが、Explorer が Material の時、右クリックメニューの中に Remove All Unused Materials なんてものができているではないですか。

Delallunusedmat

今までなんでこれがないのかなーと思っていたんですよ。 これで MatLib に関係なく、一気に消せるじゃないですか。 ま、今までも External Files の中にボタンがあったわけですが、普通に右クリックに入ってくれたので、地味に、実に地味に便利です。わーい。



こうして小さな小さな幸せを見つけながらじゃないと、やってられません。ええ、やってられませんとも。




改めて 7.5 の What's new in this version を読んでみると、いやあ、ほんとに地味ですね。本当に嘔吐デスクのライセンスシステムにするためだけのバージョンだったんですね。良いですね。良いですよ地味なバージョンアップは。

今度の弐千拾も、ある意味地味なアップグレードに見えるので歓迎したいところですが、顔ロボット付いたとか、プレイバックスピードが速いとか、大量のデータをイッキに扱っても軽いとか、よく考えてみると実は地味でもなんでもなく、きらーーんと派手なのではないかという悪寒がしています。 だって今さら新機能とか、あればあったでまあ歓迎するけど、基本的にはどうでもいいじゃないですか。そんなことよりもスピード速いとか大量にイッキにいじれるとか、そういうことの方が実務的には一番嬉しいじゃないですか。その意味で、キラリと光ってしまっている悪寒がぬぐえません。過去にキラリと光って良かった試しがありません。最初に喜ばせておいて後から地獄に落とすのが XSI ですから、今回も警戒に警戒を重ねましょう。 

魅力のない女なら最初から見向きもしないのに、実に可愛い顔をして寄ってくるんですよね、XSI は。 小悪魔的な笑顔で俺を誘惑し、最高に官能的な体験をさせてくれるんです。

そしてこっちがメロメロになった頃合を見計らって、
Akujo1
ほんと悪い女です。


一応謝ってきたりはします。
Akujo2
謝るくらいなら、最初から俺を誘わないでくれよ。


失意のまま、未練を捨て切れずにまたこの女を起動すると、
Akujo3
えっ、ヨリを戻せるの? ほんと?

「はい」をクリックすると、
Akujo4
ほんと、悪い女です。




ところで、XSI 8 とかじゃなくて、Softimage 2010 なんて名前は嫌だなあ、などと最初は思ってたのに、何ヶ月か前からその名前を、幾度となく目にしているうちに、もはやどうでも良くなってますよね。 つまり慣れたってことですよね。 ほら、あれだけ嫌だと思っていたあなた、今は にせんじゅう って発声するのに、なんのためらいもないでしょう? 慣れって恐ろしいですね。 嘔吐デスクの思う壺ですね。 ほんと悪い野郎ですね。

ああ、どうでもいいけど起動画面はどうなっているんだろう。
できれば苦笑しない程度のものであって欲しいな。

フード男復活してたら殺すぞゴルァ




.

| | コメント (4) | トラックバック (0)

2008年12月 9日 (火)

畳めるCustomPset。

どってことない小ネタなんですがね。

カスタムパラメータセットを作るときに、パラメータがやたら多いと、PPG がでかくなりすぎてうざったいじゃないですか。よくある顔のシェイプのスライダとかで、スライダがずらっと並んでいるために目的のシェイプを探すのに苦労したり。

なので、カスタムパラメータを入れ子構造にすると、畳めて便利ですね。

Customp

上の画像では、AAA というカスタムパラメータセットの子供に BBB があります。さらに CCC が BBB の子供になってます。

画像の左側の PPG は、AAA を表示させた状態です。右側は全く同じ PPG の、BBB を畳んだ状態。それぞれ三角アイコンで畳めるし、線も入ってわかりやすいですね。

AAA のパラメータが不要なとき、つまり BBB と CCC のパラメータだけ表示したいときは、BBB の PPG を表示させればいいわけですね。

AAA だけ表示させたいときは、普通に Explorer からクリックすると子供である BBB と CCC まで表示させてしまうので、スクリプトで制御しましょう。例えば、

  InspectObj(Selection(0),siViewingKeyword);

というスクリプトを書いて走らせると、現在選んでいるものだけが表示されます。これをボタン化するとか、ショートカットでも作っておけばなお便利でしょう。


ま、そんだけです。わりとよく知られた tips だと思うんですが、メモ的に書き留めただけ。 自分の場合、職場の後輩が発見したのを教えてもらいました。


.

| | コメント (0) | トラックバック (0)

2008年12月 5日 (金)

3ds。

XSI Base の記事ですがね。

7.01 では .3ds のインポートが無くなっているとのことで、さっそく見てみたら、なるほど、たしかに Import のメニューにありません。7.0 ではあるのにね。


復活させるには、7.0 のインストールディレクトリのプラグインフォルダから 3dsImport.dll をコピーして、7.01 のプラグインフォルダにぶち込むだけだそうで。はい、簡単に復活しました。


7.0 で廃止になったのならともかく、7.01 というバグフィックスリビジョンでこういう変更があるのは不自然なわけで、そうなると何か事情があるんだろうと勘ぐるわけで、そうなると 7.0 と 7.01 で方針が変わる原因と言えば嘔吐デスク様しかないわけで、そうなると .3ds の本家であった嘔吐デスク様が、いいかげんもう古すぎるこのフォーマットを撲滅しにかかっているのではないかという気がするわけで。どうなんでしょう。

でも別になくすことないじゃんね。3ds というフォーマット自体を撲滅させる必要もないし、XSI のインターフェースから取っ払う必要も特にないと思うんですがどうですか。インターネット上に死ぬほど 3ds のフリーモデルが転がってるからたまにテスト用に使うこともあるし、他のフリーツールでコンバートできるとは言え、残しておいて別に損はないでしょ。



まあ復活できたのでいいんですけどね。
テストに、3DTotal からこのファイルをダウンロードして読み込んでみましたが・・・。

Import3ds

わおう、すげーシュールw 押井守さんの映画とかに出てきそうだな。
まあ、昔から 3ds のインポートは問題ありましたね。1ポリゴンごとにオブジェクトが分かれていたこともあったような気がする。元ファイルが悪いのか XSI のインポータが悪いのか知りませんが。やたらと時間かかるし。 このシュールおねいちゃんの読み込みも数分かかりましたよ。


.

| | コメント (0) | トラックバック (0)