« 俺の Next Keyframe 2。 | トップページ | ガッデムMatLib。 »

2013年11月 1日 (金)

複製レンダ真っ裸(ぱ)。

レンダマッププロパティって、複製できないんですね。 Ctrl + D しても Unsupported Input Parameters などというエラーが出やがる。 なんですかそのはしたないエラーメッセージの言い方は。 意味不明ですよ。 出来ないなら出来ないで、「レンダマップの複製は出来ないんです」 という言い方で警告を出しなさいよ XSI 様。






なのでカッとなって書きました。 今書きたてホヤホヤ。 ひとつのシーンでしか実験してません。




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

// レンダマッププロパティを複製するスクリプト。
// Rendermap プロパティ(複数可)を選んで実行。
oNewRenderMaps = XSIFactory.CreateObject( "XSI.Collection" );
for ( var i=0; i<Selection.count; i++ )
{
 if ( Selection(i).Type == "rendermap" )
 {
 var oRenderMap = Selection(i);
 var oObj = oRenderMap.Parent3DObject;
 var oNewRenderMap = oObj.AddProperty( "rendermap" );// 新しいレンダマッププロパティ降臨
 
 //新しいレンダマッププロパティにパラメータをコピー
 for ( var j=0; j<oRenderMap.Parameters.count; j++ )
 {
 if ( oNewRenderMap.Parameters(j).Name == oRenderMap.Parameters(j).Name )
 {
 //Logmessage( (j) + " :: " + oRenderMap.Parameters(j).Name + " : " + oRenderMap.Parameters(j).value );
 if ( oRenderMap.Parameters(j).value != undefined )// undefined の場合はじく
 {
 oNewRenderMap.Parameters(j).value = oRenderMap.Parameters(j).value;
 }
 else Logmessage( oRenderMap.Parameters(j).Name + " -->  undefined なのでスッ飛ばす", siWarning );
 }
 else
 {
 Logmessage( "パラメータ名不一致くさいっス。 --> " + oNewRenderMap.Parameters(j).Name + " : " + oRenderMap.Parameters(j).Name, siError );
 }
 }
 oNewRenderMap.Name = oRenderMap.Name + "_dup";
 oNewRenderMaps.Add( oNewRenderMap );
 }
}
if ( oNewRenderMaps.count != 0 ) SelectObj( oNewRenderMaps );
else Logmessage( "なんもしてねえっス。", siError );

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

↓複製レンダ真っ裸 のダウンロード
HookSayRenderMappa.js



複製できないなら、新規でプロパティ出してパラメータ全部コピーしてやればいいじゃねえかというアレです。

でも XSI のパラメータって、何かのパラメータのオンオフをトリガにしてパラメータの構成が変わってしまったりとか、ありますよね。 Rotoscope とかだっけ。 なのでこのスクリプトのように総当りせずインデックス順に名前の一致だけを見てコピーしてしまうってのが常に安全かどうかは分かりませんが、まあとりあえず動いているからいいんじゃねえの。


レンダマップに限らずそもそもプロパティって、複製できないもんだったっけ? そのオブジェクトにとって1つしか持てない種類のプロパティはもちろんそれでいいけど、レンダマッププロパティのように複数持てちゃうものは、普通に複製できて欲しいですよねえ。 嘔吐デスクさま?


2013.11.06 追記:

Ctrl + D で複製はできなくとも、Ctrl + C と Ctrl + V のコピペで複製できるということを教えて頂きました。 コメント欄参照。

こうしてこの記事のスクリプトは、ちっとも要らないスクリプトになりますた orz
いつものことです。

今後も、どなた様でも、どうかこのようなツッコミをガンガンお願いします。


\(^ω^\)イエーイ

.

|

« 俺の Next Keyframe 2。 | トップページ | ガッデムMatLib。 »

コメント

こんにちは。
他のオブジェクトに同一のレンダマップを持たせたい場合は
Ctrl+ドラッグでやることが多いです。
複製先が複数ある場合は、レンダマップパラメータ選択しCtrl+Cでコピーして、複製先のオブジェ全て選びCtrl+Vで複製しています。
同じオブジェクト内に同じ内容のレンダマップ複製したい場合は(今回これでしょうか?)
Ctrl+Cでコピーして、オブジェクト選択しCtrl+Vでペーストで複製できます。

Mayaもですが、Ctrl+Dの複製と、Ctrl+CとCtrl+V連携での複製って、挙動が違うんですよね。
ややこしや。

投稿: 肉だんご | 2013年11月 5日 (火) 13時12分

肉だんごさん御無沙汰しております。

ほんとだーーーー Σ(゚口゚ !!!!

なんだこれでいいじゃないですか。何スクリプト書いてんですか俺は orz

ありがとうございました。いつでも何度でも激しくツッコミ入れて下さい。
っていうか、いつもツッコミ入れて欲しくてブログ書いてるようなもんです。
いつもひとりで試行錯誤ですから、俺流ばかりで、新しい風が吹いてこなくて、どん詰まりの日々です。ツッコミがないと打開できません。ほんと、ガンガン突っ込んで欲しいです。

投稿: 潤樹 | 2013年11月 6日 (水) 00時45分

そういえば、コメントご無沙汰でした。
今も拝見させて頂いてますm(_ _)m

意図していたものだったようで良かったです!
自分もツっこんで欲しいと思いつつブログやろうと何度か考えたものの
筆不精を言い訳にやらずにいます。。

投稿: 肉だんご | 2013年11月 6日 (水) 12時02分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/58494539

この記事へのトラックバック一覧です: 複製レンダ真っ裸(ぱ)。:

« 俺の Next Keyframe 2。 | トップページ | ガッデムMatLib。 »