検索

After Effects エクスプレッションのモジュロ演算子 (%) について詳しく説明します

剰余演算子としても知られるモジュロ演算子 (%) は、式の作成に非常に便利なツールですが、初心者にとっては理解するのが簡単ではないかもしれません。この記事ではその機能と使い方について説明します。

% は、方程式の剰余を計算するために使用されます。例:

<code>10 % 3</code>

10 を 3 で割った商は 3、余り は 1 であるため、この式は 1 を返します。

これは、時間変数を操作するときにループを作成する場合に便利です。

ループ式

After Effects 式を初めて使用するほとんどのデザイナーは、loopOut() 式に精通しています。これにより、「サイクル」(開始から終了までのサイクル)、「ピンポン」(開始から終了、開始に戻るサイクル)、「オフセット」(キーフレームを繰り返しますが、毎回 のオフセットを使用します)を使用できます。 > 値を使用してアニメーションを構築する)、または「続行」(最後のキーフレームの速度を使用してモーションを継続する) を選択して、キーフレームのプロパティを循環します。これは非常に包括的で、キーフレーム アニメーションに必要なすべてをカバーしています。

ただし、

をループしたい場合、loopOut は実行可能な解決策ではありません。キーフレームを使用したくない理由はたくさんありますが、主な理由は、値を動的かつ継続的に更新する必要がある場合です。一連のキーフレームを更新するよりも、スライダーにアタッチされたエクスプレッションを更新する方がはるかに簡単です。

モーションが連続的な場合は、Linear または Ease で十分です。ただし、ループを必要とする複雑なアニメーションの場合は、時間モジュロ演算子を使用してループを実装できます。

これがどのように機能するかを確認するには、次の式をコピーしてテキスト レイヤーのソース テキスト プロパティに貼り付けます:

<code>Math.floor(time % 5)</code>
レイヤー数が 1 秒ごとに 0 から 4 まで表示され、5 秒ごとに 0 に戻ります。これは、式の残りの部分が時間の経過とともに毎秒変化するためです。

Math.floor 関数は、引数を整数に丸めます。

After Effects: The Modulo Operator (%)

これから、特定のパラメータ間の数値をアニメーション化する必要がある場合の使用方法が簡単にわかります。

例: デジタル時計

%を使ってデジタル時計を作ってみましょう。

秒は 0 ~ 60 の間でカウントする必要があり、分は 60 間隔ごとに増加する必要があります。これをテキスト レイヤーのソース テキスト プロパティに再度貼り付けてみましょう:

<code>10 % 3</code>

式を分解すると、sec 変数は 0 から 60 までカウントされ、min 変数は 60 の倍数ごとに増加します (ここでも数値を四捨五入するために Math.floor を使用します)。続く if ステートメントは、秒変数が 10 未満の場合にその前に 0 を追加し、秒変数が常に 2 桁になるようにします (必要に応じて、これを分についても繰り返すことができます)。次に、時刻区切り文字を使用してそれらを結合します。

After Effects: The Modulo Operator (%)

カウンターを時間とは独立して動作させる必要がある場合は、時間をスライダーに置き換えてその値を設定することで、同じ効果を得ることができます。

モジュロ演算子と After Effects テキスト式セレクターを使用して、時間区切り文字を点滅させることもできます。

テキスト レイヤーに移動し、不透明度アニメーション オプションをテキスト レイヤーに追加します (これを行う方法がわからない場合は、この記事で詳細を確認できます)。次に、式セレクターを追加し、範囲セレクターを削除します。

After Effects: The Modulo Operator (%)

アニメーターの不透明度を 0 に設定し、次の式を Amount プロパティに追加します:

//デジタルクロックセパレータが点滅します //式セレクターに追加

分 = Math.floor(時間 / 60);

分 = 10 && textIndex == 3 ? Math.floor(時間2 % 1.5) 100 : 0;

分変数の桁数が固定されていないことを踏まえて条件文を書きました。まず、ソース テキスト プロパティから minutes 変数をコピーします。次に、これを使用して時間区切り文字の textIndex 値を計算します。分表示が 1 桁の場合は 2 になります。分表示が10を超えると3になります。以下に示すように、条件ステートメントを if ステートメントとして記述して、その内容をさらに説明することもできます。

if (分 = 10 && textIndex == 3) Math.floor(時間

2 % 1.5) 100 それ以外の場合は 0

分が 10 未満で、textIndex が 2 に等しい場合、Math.floor(time

2 % 1.5) 100 はテキスト レイヤーの 2 番目の文字に影響します。これにより、モジュロ演算子のおかげで文字が点滅します (オン/オフ比 2:1)。 Math.floor 関数は数値を四捨五入し、最終的に式全体に 100 を乗算して、式セレクターの範囲である 0 と 100 の間で切り替えます。

ただし、分が 10 以上で、textIndex が 3 の場合、効果はテキスト レイヤーの 3 番目の文字に適用されます。これは分表示の余分な桁について説明しています。分の表示を 99 より長くする必要がある場合は、別のパラメーターを追加して、時間区切り記号が 4 番目の位置にあるときの表示に影響を与える必要があります。

ただし、分表示が一定の桁数に設定されている場合、このステートメントははるかに単純になります。

dividerIndex = 3; textIndex == ディバイダーインデックス ? Math.floor(time2 % 1.5) 100 : 0

After Effects: The Modulo Operator (%)

それで、デジタル時計を手に入れました!

モジュロ演算子がループの作成にどのように役立つかを示した後、それを他のプロパティにどのように適用できるかを検討できます。

例: アナログ時計

それではアナログ時計を作ってみましょう。ポインタがカチカチと動くとき、それは通常、継続的な動きではなく、突然停止したり、突然始まったりします。これは、モジュロ演算子が解決に役立つタイプのループです。

時計の針レイヤーの回転プロパティに貼り付けることができる次の式を見てみましょう:

//秒針が回転します フレーム = thisComp.frameDuration;

ループ時間 = 1; dur = フレーム * 6; 強さ = 6;

カウンター = Math.floor(time/loopTime); t = 時間 % ループ時間;

ease(t, 0, dur, strength counter, strength (counter 1))

まず、いくつかの変数を設定します。フレームはコンポジション内のフレームの継続時間であり、複数のフレーム レートで動作することができます。

loopTime をループしたい時間に設定します。ループを 1 秒継続したいので、1 に設定します。 dur はループ内のアニメーションの長さなので、フレーム * 6 に設定して、6 フレーム続くようにします。強度はアニメーション値の変化です。時計の針をアニメーション化しているので、時計の針が 60 ティックで 1 回転するように 6 に設定しました。

次に、値をオフセットするのに役立つカウンター変数を作成します。 Math.floor(time/loopTime) を使用して作成し、Math.floor を使用して数値を四捨五入し、ループに一致するようにカウンターの速度を設定しました。最後に、 t は、エクスプレッション駆動のアニメーションの時間を測定するために使用できる変数です。これは時間 % ループタイムなので、時間がループタイムに格納されている数値に達すると、時間がループします。

その後、アニメーションを作成できます。この例では、ease 式を使用します。最初のパラメータを t に設定することで、回転値をループ時間変数に再マップします。次の 2 つのパラメータは 0 と dur で、アニメーションの開始点と終了点です。最後の 2 つのパラメーターは、Strength カウンターとStrength (カウンター 1) で、これは回転プロパティの値です。強度とカウンターを乗算することで、各ループの値をオフセットし、強度 * (カウンター 1) で終了し、次のループに備えることができます。

After Effects: The Modulo Operator (%)

この場合、キーフレームではなくエクスプレッションを使用してモーションを駆動する利点は、時間の変化に合わせて時計テンプレートを構築する必要がある場合です。式の静的な値をスライダーに接続できるため、継続的な更新が容易になります。

より高度な式を使用したり、独自の関数を構築して、よりカスタマイズされたアニメーションを作成したりできます:

//秒針が回転します フレーム = thisComp.frameDuration;

ループ時間 = 1; dur = フレーム * 6; 変更 = 6;

カウンター = Math.floor(time/loopTime); t = 時間 % ループ時間;

関数easeInOutBack (t, b, c, d, s) { if (s == 未定義) s = 1.70158; if ((t/=d/2) (tt(((s=(1.525))) 1)t - s))b; return c/2((t-=2)t(((s=(1.525)) 1)t s) 2) b; }

easeInOutBack(t, 0, change, dur, 1.70158)

After Effects: The Modulo Operator (%)

最後に、開始値を設定する変数を作成し、if ステートメントを使用して分針 (場合によっては時針) アニメーションの最初の繰り返しをスキップできます。

//分針の回転 フレーム = thisComp.frameDuration;

ループ時間 = 60; dur = フレーム * 6; 強さ = 6; startValue = 180;

カウンター = Math.floor(time/loopTime); t = 時間 % ループ時間;

関数easeInOutBack (t, b, c, d, s) { if (s == 未定義) s = 1.70158; if ((t/=d/2) (tt(((s=(1.525))) 1)t - s))b; return c/2((t-=2)t(((s=(1.525)) 1)t s) 2) b; }

if (カウンター > 0) { easeInOutBack(t, startValue 強度 * カウンタ, 強度, 期間, 1.70158) } それ以外 { 開始値 }

After Effects: The Modulo Operator (%)

ここからは、スライダーを startValue 変数に接続するだけです。このようにして、スライダーの値を変更するだけで更新できるアナログ時計が得られます。

結論

モジュロ演算子は、他の方法がプロジェクトのニーズに適していない場合に、動的表現を支援するループを作成する場合に便利です。

独自のプロジェクトでテストしてみてください。

何かコメントはありますか?何か不明な点はありますか?以下にコメントを残してください。

以上がAfter Effects: モジュロ演算子 (%)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PythonとJavaScriptの未来:傾向と予測PythonとJavaScriptの未来:傾向と予測Apr 27, 2025 am 12:21 AM

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

Python vs. JavaScript:開発環境とツールPython vs. JavaScript:開発環境とツールApr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScriptはCで書かれていますか?証拠を調べるJavaScriptはCで書かれていますか?証拠を調べるApr 25, 2025 am 12:15 AM

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptの役割:WebをインタラクティブでダイナミックにするJavaScriptの役割:WebをインタラクティブでダイナミックにするApr 24, 2025 am 12:12 AM

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScript:接続が説明しましたCおよびJavaScript:接続が説明しましたApr 23, 2025 am 12:07 AM

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

Webサイトからアプリまで:JavaScriptの多様なアプリケーションWebサイトからアプリまで:JavaScriptの多様なアプリケーションApr 22, 2025 am 12:02 AM

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Python vs. JavaScript:ユースケースとアプリケーションと比較されますPython vs. JavaScript:ユースケースとアプリケーションと比較されますApr 21, 2025 am 12:01 AM

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

JavaScript通訳者とコンパイラにおけるC/Cの役割JavaScript通訳者とコンパイラにおけるC/Cの役割Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。