モーション

UIモーフィングアニメーションのデザイン

コードだけで作った14秒の映像。ひとつの図形がプレーヤー、タブ、コマンドパレットへと変形し、すべての変化が120 BPMのカーソル操作で起こります。

OpenDesignコード化と制作
公式
UIモーフィングアニメーションのデザイン14s · モーション
グラデーションのアルバムタイル、プログレスバー、再生アイコンが付いた黒いミュージックプレーヤーのカード。
モーションデザインの1フレーム

想定される用途

  • プロダクトモーションのティザーデザイン画面を切り替えずに、複数のインターフェース状態を見せる短いループ。
  • マイクロインタラクションのショーリールトグル、スライダー、タブ、パレットを、ひとつながりの物語として見せるシーケンス。
  • 音楽同期のインターフェースアニメーションカーソル操作が固定されたビートグリッドに合う作品。

モーションのポイント

  • カットされないひとつの図形各状態は場面転換ではなく、同じコンテナの変形です。
  • カーソルが引き起こす変化すべての遷移は、見えるポインター操作から始まります。
  • 閉じるループ最後のフレームが最初と一致するので、きれいに繰り返し再生されます。

ひとつの図形が映像全体を担う仕組み

映像は120 BPMで14秒間続き、ソースのメモではこれを7小節に分けています。ひとつの図形がGenerateボタンから始まり、ローダー、チェック、ダイナミックアイランド、ミュージックプレーヤー、音量スライダー、トグル、タブインジケーター、チャート、コマンドパレット、トーストへと変わり、再びボタンに戻ります。

トレードオフとして、すべての状態は、同じ本体のサイズと角丸を変えるだけで、直前の状態から到達できなければなりません。その形の変化に合わない内容は、削るか作り直す必要があります。

ビートマップの各ステージと見せるもの
ステージ見える変化デザイン上の意味
ボタンからローダー、チェックへGenerateボタンが進行状態になり、続いて完了の確認に変わります。リクエスト、待機、結果が3つの画面ではなく、ひとつのオブジェクトとして読めます。
ダイナミックアイランドからミュージックプレーヤーへコンパクトなピルが、アルバムタイル、タイトル、スクラブバー、再生コントロールを備えた暗いカードに広がります。ピルからカードへの拡大は、ひとつのコンテナが一目で分かる状態と詳細な状態の両方を持てることを示します。
スライダー、トグル、タブ音量スライダーが最大値を超えて伸び、続いてトグルとDay / Week / Monthのタブピルが現れます。小さなコントロールも同じ角丸の言語を使うため、変化はスタイルよりも動きで感じられます。
チャート、パレット、トーストチャートが自ら描かれ、パレットが「frame」と入力し、トーストがループを閉じます。最も情報量の多い状態は、視聴者が図形のロジックを理解した後の終盤に置かれます。

プレーヤー、タブ、パレットのフレームを読む

キャプチャした3つのフレームは、同じ図形がいかに違って見えるかを示しています。プレーヤーでは、黒い角丸のカードにグラデーションのタイル、「motion study 02」、0:49の位置のスクラブバーと残り−2:09、前へ・再生・次へのアイコンが載っています。タブのフレームでは、白いピルにDay、Week、Monthが並び、Dayの背後に黒いインジケーターがあります。

パレットでは、入力された「frame」という単語から「Frame rate · 60fps」と「Every frame is code」の2件の結果が導かれ、最初の結果がハイライトされています。

ミュージックプレーヤーの状態。経過時間と残り時間がスクラブバーの下にあり、カーソルがコントロールに近づいています。
ミュージックプレーヤーの状態。経過時間と残り時間がスクラブバーの下にあり、カーソルがコントロールに近づいています。

読み取りやすい再生状態

経過時間と残り時間のラベルはプログレスバーの下にあります。これらは14秒の映像内のイラスト的なインターフェース内容であり、ショーケース動画の再生時間ではありません。プレーヤーを小さなキャンバスに合わせる際も、両方のラベルを読みやすく保ってください。

タブインジケーターは動くオブジェクト

カーソルがMonthの上にある間、黒いDayのピルは白いトラックの中にあります。インジケーターは独立した図形なので、ハイライトを入れ替えるのではなく、ラベルの間をスライドしたり伸びたりできます。

パレットのテキストは映像に合わせる

結果の「Frame rate · 60fps」と「Every frame is code」は、作品自体について語っています。この考え方は再利用できますが、文言は自社プロダクトの語彙に置き換えてください。

時間駆動の構築とそのトレードオフ

ソースのメモでは、マスタータイムラインの時間からフレーム全体を描く単一のrender(t)関数が説明されています。表示されるすべての値は、イージング、スプリング、キーフレームを用いたtの純粋関数で、フレーム間で状態は引き継がれません。そのため、後方へシークしても同一のフレームが再現されます。

これによりエクスポートは予測しやすくなりますが、制作者にはより多くが求められます。ホバーや入力など、イベントハンドラーなら簡単な操作も、時間指定のキーフレームとして書かなければなりません。

  1. 時計はひとつに保つ

    GSAPのマスタータイムラインが唯一の時計です。各レイヤーは独自のタイマーを動かさず、その現在時刻を読みます。

  2. 変化ごとにスプリングを合算する

    翻案メモでは、変化ごとにスプリングを合算するよう求めています。これにより、重なった動きは再始動せずに混ざり合います。

  3. すべてをカーソルに引き起こさせる

    各状態の変化の前にはポインター操作が必要です。このルールがないと、モーフィングはインタラクションではなく装飾に見えてしまいます。

出典と範囲

これは、X上の@twoclippingが最初に投稿したモーション作品を、OpenDesignが公式にコードで作り直し、翻案したものです。公開された作品を基にコードで再構築しており、14秒のサウンドトラックは元の音源ではなくオリジナルのスコアです。クレジットは事実としての参照であり、原作者による推奨を示すものではありません。

これはレンダリングされたモーションスタディであり、使えるインターフェース製品ではありません。映像内のプレーヤー、チャート、パレットは入力に反応しません。このテンプレートはOpenDesignの動画ワークフロー案に由来し、利用可否はインストールされているバージョンによります。

モーフィングを自社プロダクトに合わせて応用する

メモでは、SHAPE定義の状態とその内容を差し替えつつ、3つのルールを守ることを提案しています。カットされないひとつの図形、変化ごとに合算するスプリング、すべての変化の背後にあるカーソルです。まず、最も見せたいプロダクトの状態を5つ挙げ、コンテナの小さいものから大きいものへ並べてください。

ループさせたい場合は、最初と最後の状態を同一にします。状態同士のサイズが大きく異なると、中間フレームが引き伸ばされて見えるため、それに応じてテンポを落としてください。

状態は少なく、強いものを選ぶ

この映像は14秒で約10の状態を見せています。4つの状態のプロダクトティザーなら、それぞれの画面表示時間を長く取れます。

テーマ変更は一か所で行う

コピー、配色、タイミングは参照ファイルの冒頭にある定数にまとまっているため、温かみのあるグレーのキャンバスや黒いコンポーネントの変更は小さな編集で済みます。

重いキャンバス効果は避ける

メモによると、大きなグラデーションやピクセル単位のノイズはキャプチャした各フレームの負荷を高め、MP4のエクスポートを遅くします。

OpenDesignでUIモーフィングアニメーションをデザインする方法

  1. OpenDesignをダウンロードしてインストール

    デスクトップアプリをダウンロードしてインストールし、セットアップを完了してください。デザイン用のプロジェクトを作成します。

    OpenDesignをダウンロード
  2. 図形とその状態を定義する

    ひとつのコンテナが通過する状態を、小さなボタンから最大の形まで書き出します。どのポインター操作でどの変化が起こるかを決め、描き始める前にテンポを固定します。

    推奨プロンプト

    1920x1080の温かみのあるライトグレーのキャンバスに、14秒のループするUIモーションフィルムを作成してください。カットされることのない、白黒の角丸シェイプをひとつだけ使います。120 BPMで、Generateボタンからローダー、チェックマーク、スクラブバー付きのミュージックプレーヤー、Day / Week / Monthのタブピル、短い単語を入力するコマンドパレットへと変形させてください。すべての変化は、画面上に見えるカーソルによって引き起こされるようにします。ループするよう、最後のフレームを最初のフレームと一致させてください。テキストはサンプルのみを使い、実データや動作するコントロールは追加しないでください。

  3. すべてを時間から駆動させる

    画面に表示されるすべての値をタイムラインの時間から計算するよう依頼します。そうすれば後方にスクラブしても同一のフレームになります。コピー、配色、タイミングは、一か所で編集できる定数として保持します。

  4. サウンド、ループ、ペース配分を確認する

    最後のフレームが最初と一致していること、カーソル操作がビートに合っていること、情報量の多い状態を急ぎ足にしていないことを確認します。使用が許可されている音源のみを使うか、無音のままにしてください。

  5. エクスポートして共有リンクを取得

    完成したデザインをエクスポートし、OpenDesignの「共有」機能を使って共有リンクを取得してください。別のブラウザウィンドウでリンクを開き、意図したバージョンとそのアセットが正しく表示されることを確認してから送付してください。