[MAYA] Animation Key Shift


ex).
Frameの入力画面にて、 += 30 など。

[MAYA]アニメーションカーブをオートで延長させる。



[AE_script] 3Dレイヤーを2DのXY座標として置き換えたい。


■3Dレイヤーを2DのXY座標として置き換えたい。
L = thisComp.layer("Light 1");
L.toComp([0,0,0]);


[AE_scripts] ひとつ上のレイヤーを親としてペアレント設定する例


参考HP:

ex). ひとつ上のレイヤーを親としてペアレント設定する例

http://aejsx.hiroshisaito.net/layer-object/attributes/parent

[AE_scripts] 選択したレイヤに対してのマルチ処理


参考HP:

ex). 選択しているレイヤーそれぞれのひとつ上の階層にヌルレイヤーを追加する

http://aejsx.hiroshisaito.net/home/after-effects-scripting-examples/example2_addnulls


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

■ Modify code
1, コンポジションの1行名に複製元の素材を準備
2, 選択レイヤーの下に複製したレイヤーを配置
3, 複製レイヤーを選択レイヤーに親子付
4, 複製レイヤーを3Dレイヤー化
5, 位置、回転値に初期値を代入 


--



//変数宣言&初期化
//(コード内に散在させてもいいのですが、個人的には各変数スコープの最初で宣言するようにしています)
//例文ではすべてグローバルスコープになっています。

//現在アクティブになっているコンポジションを取得。何もアクティブでない場合はnullが取得されます。

var activeComp= app.project.activeItem;
var newLayers = new Array();
var selectedLayers= new Array();
var tempLength, i, j;


//まず処理を加える前にactiveItem(アクティブになっているコンポジションの値)がnullでないことを確認します。
//同時にそのアイテムがCompItemであることを確認します。
//2つの条件が揃わない場合は、最後のアラートを表示してスクリプトは終了します。

if(activeComp&&(activeComp instanceof CompItem)){

    //アクティブなコンポジションで選択されているレイヤーの数を取得します。

    tempLength = activeComp.selectedLayers.length;


        //選択されているレイヤーの数が1以上の場合そのレイヤーの上にNullを追加します。

        if(tempLength > 0){

            //選択されているレイヤーを別の配列に一時的に格納します。

            for(i=0; i < tempLength; i++){
                        selectedLayers[i] = activeComp.selectedLayers[i];
                    }


            //複製したレイヤーを選択レイヤーの下に配置+初期設定

            for (j=0; j < tempLength; j++) {
                        newLayers[j] = activeComp.layer(1).duplicate();
                        newLayers[j].moveAfter(selectedLayers[j]);
                        newLayers[j].parent = selectedLayers[j];
                        newLayers[j].threeDLayer  = true;
                        newLayers[j].position.setValue([0, 0, 0]); 
                        newLayers[j].transform.orientation.setValue([0, 0, 0]); 
                        newLayers[j].transform.xRotation.setValue([0]); 
                        newLayers[j].transform.yRotation.setValue([0]); 
                        newLayers[j].transform.zRotation.setValue([0]); 
                        
            }


        } else {

            //レイヤーが選択されていない場合アラートを出すようにしています。

            alert('レイヤーが選択されていません'); 
        }

} else {

    //アクティブになっているアイテムが存在しない、あるいはアイテムがコンポジションでない場合はアラート表示

    alert('現在アクティブになっているコンポジションがありません');
}




参考、


//レイヤーを複製
//app.project.item(index).layer(index).duplicate();



//親子付
/*
for (var i=1; i<=app.project.item(1).layers.length; i++) {
    if(i !== 1) {
        app.project.item(1).layer(i).parent = app.project.item(1).layer(i-1);
    }
}
    app.project.item(1).layer(i).parent = app.project.item(1).layer(i-1);
*/


[Reference] How the Gatling Gun Works?


追加情報、弾丸の速度

防弾規格N.I.J / National Institute of Justice
http://www.securico.co.jp/jbl/guns/nij.html

--------------------
■Gatling Gun Model 1865 Animation
https://www.youtube.com/watch?v=9h_bbMvApCg

■Gatling 1874

https://www.youtube.com/watch?v=t9qEToARkIM

■How the Gatling Gun Works

https://www.youtube.com/watch?v=kmgYsuISDsk

■Terminator Weaponry - Future Weapons

https://www.youtube.com/watch?v=ClEo2OfA2Zs

(夜間にガトリングガンの軌道を確認できる。)


Reference HP: http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1288519632

簡単に説明すると 
M134等の多銃身の機関銃は大きく分けて3つの装置が存在します
1つ目が弾薬を連結している金属製リンクと弾薬を分離しす弾薬を前に押し出す装置
2つ目が弾薬を発射装置に送り込むための装置
3つ目が弾薬を発射する装置
弾薬の流れは1~3の流れになりますね
これを1つの原動力で行います
引き金を引くと3つの装置がほぼ同時に稼働します
しかし射撃を辞めるときは1つ目と2つ目の装置が先に停止をし3つ目の装置が最後に停止します
理由は発射装置に弾薬が入っていると危険だからですね

それと砲身を一定方向以外に回してはダメと言われるのは構造自体が一方通行で弾薬が引っかかってしまって分解しないと取り出すことができなくなってしまうからです

http://www.youtube.com/watch?v=9h_bbMvApCg

中途半端ですが1つ目から2つ目に弾薬が移動している動作をアニメーションで見ることができます

[Reference] Nukemap


■Nukemap

Google map上にnuclear bombの影響範囲をシュミレートします。過去の核爆弾のデータを元に計算してるようなので、割と正確らしいです。
ターミネータジェネシス、核爆弾破裂のショットで、シュミレーションにこの情報を活用したそうです。(監督がリアルにこだわったため。)

http://nuclearsecrecy.com/nukemap/