日々適当

hibitekitou

Instance Shape

xsi |2011-05-16
ICEのノード、Instance Shapeについて。
そこにグループを指定した時、グループ内のオブジェクトがどのような順序でインスタンス化されているのか、です。



こんなICE Treeを用意しました。PointCloudに対して適用してあります。
ポイントのIDを1.5倍した値がポイントのX座標に入るようになっていますね。つまり、1.5おきにID順に並ぶ事になります。

そして、Instance Shapeに1から19までの数字の形になったオブジェクトが入ったグループが適用してあります。
1から19までのオブジェクトは、秩序のある名前を付けてあります。すなわち、Aグループ内では

text001_objA
text002_objA



text019_objA

という3桁で桁がそろえられた状態になっており、Bグループ内では

text1_objB
text2_objB



text19_objB

というように、数字部分の桁をそろえることなく書かれています。この数字がオブジェクトの形状と一致しています。

こうした時、エクスプローラ上ではこんな感じで表示されます。



そして、結果はこんなふうになります。上がA。下がB。オブジェクトの下の青枠内の数字はポイントのIDです。





Aは狙い通りで、ツリーの順番通りに並んでいますが、Bは、ちょっと「?」という結果ですね。

マニュアルを読むと、エクスプローラ上で、ソートの順序をNoneにした状態での並び順になっているのだそうです。



こうすると、エクスプローラではこうなります。



というわけで、エクスプローラでこの設定にした上で、Instance ShapeノードのIndexに割り当てられた数字は、グループ内の上から何番目のオブジェクトを指定するのか、という事を意味している事が確認できました。

いや、たぶんそうだろうとは思っていたのだけど、ソート順をNoneにしての順番って事は知らなかったものでね…(^^;
コメント ( 0 )|Trackback ( )

AfterEffectsにてコンポのスタートフレームの値を設定する

mac |2011-05-16
AfterEffectsに対して、AppleScriptからコンポジションのスタートフレームの値を設定するテスト。
AppleScript側で指定した値で、AE側の値を書き換えます。



しかし、AppleScriptからAEのJavaScriptに値を渡すことが出来なさそうなので、中間ファイルを作成し、それを介してやり取りすることにします。

まず、AppleScript。

-----------------------------------------------
set startTime to "01;15;15;10" --開始タイムコードを指定

set tempFile to ((path to desktop folder) as string) & "temp.dat"

open for access file tempFile with write permission
write startTime to file tempFile
close access file tempFile

set jsFile to ((path to desktop folder) as string) & "test.js"
tell application "Adobe After Effects CS5"
DoScriptFile file jsFile
end tell
-----------------------------------------------

でもって、デスクトップに保存してあるtest.jsは以下の通り。

//-----------------------------------------------
function setDisplayStartTime(tcValue){
var selectComp = app.project.selection;
if (selectComp.length == 1){
var frameRate= selectComp[0].frameRate;
var timeValue = currentFormatToTime(tcValue,frameRate);
selectComp[0].displayStartTime = timeValue;
}
}

var filePath = "Macintosh HD:Users:[user name]:Desktop:temp.dat"
var fileObj = new File(filePath);
flag = fileObj.open("r");
if (flag == true)
{
tcSetting = fileObj.read();
fileObj.close();
setDisplayStartTime(tcSetting);
}else{
alert("ファイルが開けませんでした");
}
//-----------------------------------------------

var filePath行の位置を、AppleScriptで指定したパスと同じにする必要があります。
ファイルの読み込みについては、AfterEffects CS4自動化作戦 [OpenSpace]を参考にしました(そのままだよ…)。
同様に、AE側でファイルを書き込んでAppleScript側でそれを読み込めばAEからAppleScriptへ値を渡せますね。

いまいちスマートじゃないけど、とりあえずこれで対処かなー
コメント ( 0 )|Trackback ( )
  ・