トップ | puarts.com
ロゴ
「After Effects」に関連する記事一覧
0  

After Effects CC 2015 の mpeg2 書き出しで最後の方の音声が正しく書き出されない問題にはまりました。

具体的な症状としては、最後の 1 秒くらいの音声が、最後から 2 秒くらいの音声で上書きされてしまうような症状です。

映像をなくして音声だけを書き出してみると正常に書き出されたので、映像があることが関係しているようです。

ネットで調べたり、色々と試行錯誤してみましたが、根本的な対処方法は見いだせず、最終的に 5 秒程度の無音映像を入れることで対処しました。

ほんと最後の書き出しでこういったトラブルはつきものですね。

今更という感じもありますが、古い After Effects のプロジェクトを After Effects CC 2015 で開いたら、スライダー制御エフェクトの名前が「スライダ」から「スライダー」に変更されたことにより、軒並みエクスプレッションがエラーになり、うぅっ..となりました。手動置換つらすぎ。

本来はプロジェクト読み込んだ時に互換性が失われるものについては自動更新されてほしいですが、Adobe のローカライズしている人は気づかなかったのかな..

今後はさぼらずに下記ページに記載のような書き方をしておくようにします。

http://www.da-tools.com/AE/exp/jisen/matchName.html

こちらのページだとエフェクト名を変更すれば、下記のように書けると書いてありますが、


effect("WiggleStrength")

After Effects CS2 だとエラーになりました。


effect("WiggleStrength")(1)

こちらのように書くことはできたので、古いバージョンのプロジェクトではこのような書き方にしておこうと思います。

Javascriptでは変数をvarで宣言し(省略可)、明示的に変数の型を宣言しませんが、内部的にはちゃんと変数にも型があります。この型の違いにより計算結果が予想と違うものになってしまう場合があります。

私もある程度いろいろな言語でのプログラミングには慣れているつもりなのですが、それでもこのような型の違いによる間違いに陥って気づかない場合があります。

例えば、After EffectsのExperssionではtimeを使って時間を取得できますが、これはfloat型(浮動小数点数型)になるので剰余などを求める際は型をparseInt()という型変換用の関数を使ってint型(整数型)にキャスト(型の変換)する必要がでてきますので注意が必要です。

この型の違いによる間違いの具体的な例を挙げます。以下の例ではtimeがfloat型なのに型をキャストしなかったために、自動的に変数frameもfloat型になってしまい、剰余の計算が正しく行われなくなってしまいます。

間違いの例
var widthFrame=4;
var frame=time*24;
if(frame%widthFrame==0){
    100;
}else{
    0;
}

上の例を正しくしたもの(frameをint型にキャスト)
var widthFrame=4;
var frame=parseInt(time*24);
if(frame%widthFrame==0){
    100;
}else{
    0;
}

三角関数から擬似的なバウンドモーションを作るAfter Effectsの簡易エクスプレッションを作りましたので載せておきます。

下のようなロゴアニメーションを作るときなどに応用できます。

ロゴアニメーションの画像

以下がソースコードです。バウンドをつけたいレイヤーのpositionにコピペしてエクスプレッション内のパラメータ(r, offset, sh)を調整して使って下さい。


var r=1.7; // バウンドするときの抵抗力の強さ
var offset=120; // 接地点
var sh=200; // 全体の高さのスケール

var y=-Math.abs(Math.cos(2*Math.PI*time))
      *sh*Math.exp(-time*r)+offset;
[position[0], y];

0  

0.0229 sec
にほんブログ村 ゲームブログ ファイアーエムブレムへ にほんブログ村 デザインブログ コンピュータグラフィックスへ

Copyright(C)2006-2018 wsp All Rights Reserved