XSI Foundation 【初級者 カモーンщ(゚Д゚щ)】 Part 6
(Dim n)
n = Null
で正解みたいだな。
Nothingはオブジェクトの参照を解除するものらしいからちょっと違う。
If Typename(n) = "Null" Then みたいな判定をしたいんだろうと推測すると、
>>931では文字列だからダメだな
ヌルヌルがたまらない!
タイムリーに知ってそうな人がいるので質問させてください。
TransformUVs内でりんぷるさんのUValignスクリプトの機能が使えたら理想的だと思い
JAVAに直してみているのですが、うまくいきません。
下記の部分なのですがこんなにわからねーのかとあきれずに助けて頂けると幸いです。
If typename(oUV) = "Nothing" then
ActivateObjectSelTool
msgbox "select sample point again",,"Error"
Exit sub
End if
aUV = oUV.elements.Array
maxPos.set round(aUV(0, selectedIndices(0)), 7), round(aUV(1, selectedIndices(0)), 7), 0
minPos.set round(aUV(0, selectedIndices(0)), 7), round(aUV(1, selectedIndices(0)), 7), 0
for i = 0 to Ubound( selectedIndices, 1 )
sampleU = round(aUV(0, selectedIndices(i)), 7)
sampleV = round(aUV(1, selectedIndices(i)), 7)
よろしくお願いしますorz
どう上手く行かないのか、自分の書いたコードを晒した方が良くない?
質問の答えになってないけど
機能がおなじでいいなら単純にExecuteScriptかExecuteScriptCommandで
スクリプトを呼び出すようにしてみては
function TransformUVs_align_OnClicked( )
{
ExecuteScriptCommand("********");
}
vbscriptの中からjavascriptを実行させ、そこからvbscriptを呼び出すと。
これは色々応用利くな。
ところで、TransformUVsの中にUValignを組み込むのはできないのか?
レンズシェーダのtoon_inkで同じオブジェクトのある部分だけ線を表示させないことは可能ですか?
目の部分に穴をあけていてそこだけ線を消したいんですが別な作り方じゃないとだめなんでしょうか
>>938 「線を消したいところを白」「線を残したいところを黒」のテクスチャを作って
Toon_Paint_and_HostのInkタブにあるBypassに貼る。
クロスやソフトボディーなどシュミレーションで変形させたモデルを保存することはできますか?
UIの色ってグレーにしかできないの?
例えば、maxみたいに黒にしたりとか
>>940 フリーズ or Geometry Duplicateかな?
Set oSel = Selection(0)
Set oSubComp = oSel.Subcomponent
Set oObj = oSubComp.Parent3DObject
Set oUV = oObj.Material.CurrentUV
Set oNewSubComp = oSubComp
Dim sel_minU, sel_maxU
flag = 0
aUVW = oUV.Elements.Array
selectedIndices = oNewSubComp.ElementArray
sel_maxU = -10000
sel_minU = 10000
For Each sIndex In selectedIndices
u = aUVW(0, sIndex)
If flag Then
If sel_minU > u Then
sel_minU = u
ElseIf sel_maxU < u Then
sel_maxU = u
End If
Else
sel_minU = u
sel_maxU = u
flag = 1
End If
Next
LogMessage sel_minU &" minU" &" ," & sel_maxU &" maxU"
あ あれ? タブが・・・
var oSel = Selection(0);
var oSubComp = oSel.Subcomponent;
var oObj = oSubComp.Parent3DObject;
var oUV = oObj.Material.CurrentUV;
var oNewSubComp = oSubComp;
var sel_minU, sel_maxU;
flag = 0;
aUVW = oUV.Elements.Array;
selectedIndices = oNewSubComp.ElementArray;
sel_maxU = -1000;
sel_minU = 1000;
for( sIndex in selectedIndices)
{
u = aUVW(0, sIndex);
if (flag != "null" )
{
if (sel_minU > u )
{
sel_minU = u;
}
else if (sel_maxU < u )
{
sel_maxU = u;
}
}
else
{
sel_minU = u;
sel_maxU = u;
flag = 1;
}
}
LogMessage (sel_minU +" minU" +" ," + sel_maxU +" maxU" );
947 :
名無しさん@お腹いっぱい。:2007/08/30(木) 01:52:06 ID:UrgzMdGi
たびたびすみません。ご助言ありがとうございました。
力不足を痛感し必要機能(選択UVの平均最大最小座標の取得)だけを移そうとしているのですが
やはり分かってないようです。
943は選択UVの最大Uと最小Uをログに出すVBです。正しく出ます。
これを945と946でJsで直そうとしています。for内に入っていないようです。oUV.Elements.Array??このあたりで失敗してるような・・・
ご教示よろしくお願いします。
forの書き方がいかんのでは
foreachジャマイカ
それはともかく、選択しているサンプルのindexを表示するjs
あとはまかせた
oSelList = Selection(0);
var oSub = oSelList.SubComponent;
var samppnts = oSub.ComponentCollection;
for (var i=0; i<samppnts.Count; i++) {
Application.LogMessage( samppnts(i).Index);
}
>>947 UVの配列はVBArrayだから、変換しないとJSではアクセスできない仕様。
ここら辺はMSのスクリプトリファレンスに目を通した方が良いかも。
以下、ウチで使ってるやつから引っこ抜いて弄ったやつです。
記述がちょっと違うけど機能は同じなんで、参考にどうぞ。
//------------------------------------------
aUVBB = UVBounding();
logmessage( "[U] min:" +XSIRound( aUVBB[0], 3 ) +" / max:" +XSIRound( aUVBB[1], 3 ) );
logmessage( "[V] min:" +XSIRound( aUVBB[2], 3 ) +" / max:" +XSIRound( aUVBB[3], 3 ) );
function UVBounding() {
var oSel = Selection(0);
var oSubComp = oSel.Subcomponent;
var oObj = oSubComp.Parent3DObject;
var oUV = oObj.Material.CurrentUV;
var oNewSubComp = oSubComp;
flag = 0;
aUVW = new VBArray( oUV.Elements.Array ).toArray();
selectedIndices = new VBArray( oNewSubComp.ElementArray ).toArray();
umax = -100, umin = 100;
vmax = -100, vmin = 100;
for( n = 0; n < selectedIndices.length; n++ ) {
indx = selectedIndices[n] * 3;
u = aUVW[indx];
v = aUVW[indx+1];
if( flag ) {
if( umin > u ) {
umin = u;
} else if( umax < u ) {
umax = u;
}
if( vmin > v) {
vmin = v;
} else if( vmax < v ) {
vmax = v;
}
} else {
umin = umax = u;
vmin = vmax = v;
flag = 1;
}
}
return( Array( umax, umin, vmax, vmin ) );
}
>>945 >aUVW = oUV.Elements.Array;
aUVWの実体が無いのでは?
あと
>if (flag != "null" )
ここは正しいの?
単にif(flag == 1)かif(flag != 0)が確実かと
953 :
949:2007/08/30(木) 12:37:38 ID:JlE9rzj+
今見たらちょっと間違ってたので訂正。
>>949のLogmessageの "min" と"max"が逆ですた。
UVのある1ポリゴンを、UVから削除ってどうやるか知ってる方いますか?
>>954 テクスチャエディタで、問題のポリゴンだけ動かしゃええんちゃうの?
インテリア、人物を作るのに参考になる海外のチュートリアルサイトってどの辺ですか?
DVD販売なら沢山見つけたのですが、他にもあるらしいので教えていただけると幸いです。
>955
それでもいいんですけど、消すことが出来るなら消しちゃいたいな、っと思いまして
>956
これがよく分かりません。
不正な引数指定ですって出て、UVはなくなりませんよね?
961 :
947:2007/09/02(日) 02:14:55 ID:hKtTcruc
みなさんありがとうございます。特に>949さん。どんぴしゃの関数でした。
おおよその機能を載せ終わりました。
現在UIの設定をしているのですがまた詰まりました。
ttp://recon.hp.infoseek.co.jp/cgi-bin/img-box/img20070902020815.jpg ・ボタンにビットマップを使用する方法があれば教えてください。siControlIconListだと使えるようなのですが。
・ボタンを十字になるように配置したいのですが、うまく動かすことはできますでしょうか。
AddSpacerを試してみましたがうまくいきませんです。
・プロパティの横幅を決める方法があれば教えてください。デフォルトでは少し大きく感じます。
siUICXで個々の大きさを指定すればいいかなと思ったのですが駄目でした。
・UIを変更したときにプラグインをアップロードをしてもXSIを立ち上げなおすまで変更が反映されないのですが、
何か上手い方法ないでしょうか。
よろしくお願いします。
少しはSDKガイドに目を通せよ
すみません。小僧の手習いなもので。
このところずっとSDKガイドを読んだりコピペ試しているのですが、なかなか…。
ボタンを十字に配置は自己解決しました。SpacerをRowで挟んでませんでした。すみません。
残りはまだわかりません。
ビットマップをカスタムプロパティで扱えるのはSPDLで書く、ビットマップウィジェット、siControlIconListのみという認識であってますか?
カステムプロパティ関連のSDKはすべて読んだと思うのですが。
要らないポリゴン選んで別のマテリアル割り当てるとか。
v5.11なんですが、
>>700のLSCM Unwrappingのインストールってどうやるんですか?
dllの他にsoファイルってゆうのがあるんですが、これはどうすればいいんでしょうか?
ボタンにビットマップ
できない アイコンリストに一つだけ表示させるのはスマートじゃないか
プロパティの横幅
できない 横幅変えるのそんな面倒か?
UI変更反映
プラグインに入れてると駄目 通常のプロパティならいくらでも新規で出せるからトライアンドエラーして本番に持ち込む
えー 俺もいまいち自身がない
970 :
967:2007/09/02(日) 18:28:15 ID:tXG7Tqn9
XSI道場の見かたがよくわからないです
諦めてください
僕もよくわからないですから安心してください
>>969 ありがとうございます。ためになります。
SDKガイドしっかり読み込んでみます。
みんな、何見て覚えてんの?付属の本だけでも一通り出来る様になりまつか?
そろそろゴーゴーキャンペーンで買ったfndを触らないと。
俺も。
説明書設計してる本人もわかってないらしいので
どうしたら良いかご意見くださいとのこと。
じゃあ、付属の本見ても使えるようになれんの?みんな一体何で覚えてん?
学校行ってんの?んな金ないぞ?
体で覚えてん・・・
冗談 マニュアルとヘルプと作りたいものがあれば普通に使えるようになると思うよ 最近は本家のビデオやyoutubeなんかもあるし
道具は使えるように作られているんだし見てればなんとなく分かるよ
>>979 ソフトの操作覚えるためにわざわざ学校行くわけないだろ