GSAP(グリーン・ソック・アニメーション・プラットフォーム)
Flash全盛の時代から存在する歴史あるトゥイーンライブラリ GSAPはCSS/HTML5 Canvas/WebGLなどさまざまなアニメーション作成に利用できる。 類似トゥイーンライブラリよりも高機能であり、かつ実行パフォーマンスも優れているのが魅力的。 「GSAP」はかつてのTweenMax(高機能なトゥイーンライブラリ)やTweenLite(機能をシンプルした軽量なライブラリ)を統合したJSライブラリ ウェブの古い記事では「TweenMax」で紹介されていることがありますが、「GSAP」は同じJSライブラリです。
GSAP ライセンス
Standard License エンドユーザーに対する利用料が無料のサービス、Webサイト、アプリなら、開発者が商用で利用しても無料 使えるプラグインは以下(現状問題なく使えた)
import gsap from 'gsap';
import { ScrollTrigger } from 'gsap/dist/ScrollTrigger';
import { TextPlugin } from 'gsap/TextPlugin';
export abstract class BaseGSAP {
protected readonly gsap: typeof gsap;
constructor() {
gsap.registerPlugin(ScrollTrigger);
gsap.registerPlugin(TextPlugin);
this.gsap = gsap;
}
}
Business Green このライセンスには3段階あり、人気があるのは中間の「Shockingly Green」 Shockingly Green会員は商用ライセンス(有料販売するアプリやサービスなどで必要)をのぞき付加的なプラグインとオプションをすべて利用できる
アニメーションを作成するアプローチ
Physics engine Webでは高出力すぎ、ゲームなどの分野で使われる ほとんどの場合、Webアニメーションを作成するために物理エンジンの使用はやりすぎ 物理エンジンの応用分野はゲーム産業・または化学的活動
Frame by frame sprite sheets よくわからん
Tweening(inbetweening) Webでアニメーションを作成するときの一番の分野
GSAP 単語
単語というかアニメーション界隈では当たり前の用語
duration: 存続期間(gsapだとアニメーションの時間) delay: 遅延 repeat: -1は無限の意味 distance: 距離 イージング: 動きの加減速を示す タイムリマップ: 再生途中に一瞬スローモーションへなる。これはタイムリマップ(タイムストレッチやタイムワープ)と呼ばれている演出手法。
GSAPのdefault値
default settings
duration(0.5), ease('power1.out')
Tween(Tweening(inbetweening)の種類
Webではこの概念を使用し作成する
静的な開始と終了の間のすべての中間フレームは、さまざまなプロパティの補完を使用して計算される
考えとしてはこれ
Key frame → frame → frame → frame → Key frame このframeのプロセスをTweenという。
ひとつのtweenをまとめると
- ターゲットオブジェクト
- アニメーションの長さ
- キーフレーム
- およびその他のプロパティ
key frame
**キーフレームとは、CGのアニメーションの中で主となる変化が定義されているフレームのこと。**物体の形や位置の変化ポイントが指定され、その間を補完することで滑らかな動画像が作成される。動画の再生に何らかの変化を起こすフレームアクションは、キーフレームにしか設定できない。
アニメーションやコンピューターーグラフィックに置いて、動画像の作成や記録の基点となるフレーム キーフレーム間の画像を保管することでアニメーションを作成したり、キーフレームからのずれ(差分フレーム)のみを記録することで動画データを圧縮できる。
GSAPでのTween 作成
from: スタートの状態を指定します(現在の状態に戻るアニメーション) to: ゴールの状態を指定します(現在の状態からのアニメーション) fromTo: 指定した状態(初期状態)から、指定した状態(完了状態)にアニメーションさせる。 durationは完了状態の方で指定(開始パラメーターと終了パラメーターを自分で指定する) set: 状態を指定します(CSSを使わずに、GSAP内で指定できる※この状態からtoへいく)fromは、実行されると初期状態に戻るアニメーションが起きてしまうので、位置は変更してそのままの状態に使う。
ease(イージング)
イージングとは動きの加減速を示す用語で、アニメーションにおいては動きの性格を表すもの 適切なイージングを設定することで、ユーザへ与える印象が変わる。 世界観やユーザ体験をデザインする上でイージングは欠かせない要素。
Timeline
タイムラインは情報を整理する方法 イベントを時系列に並べることによって情報を整理する方法
position parameter
position parameterでタイムラインの情報の整理を少しずらせる。
let animation = gsap.timeline();
animation
.to("#star", { duration: 2, x: 1150 })
.to("#star", { duration: 2, x: 1150 }, "+=1") // 末尾をposition parameterという。これのおかげでタイムライン の情報の整理を少しずれせる。この場合は1秒後でずらす。
.to("#star", { duration: 2, x: 1150 })
timelineを制御するmethod一覧
play() // 再生を開始する(オプションで特定の時間から制御することが可能)
pause() // アニメーションを止める(オプションで特定の時間に移動するオプションがある。)
restart() // 再起動が実行され、最初から純方向に再生を開始する。
seek() // 特定の時間にジャンプする
reerse() //
resume() // 方向を変更せずに再生を再開する
タイムリマップとは
再生途中に一瞬スローモーションへなる。これをタイムリマップ(タイムストレッチやタイムワープ)と呼ばれている演出手法。
考え方は下図の通りで、モーションシーケンスのいち部分だけをゆっくり再生させるkとでその部分だけがスローモーションとなり、全体的に緩急のある動きに仕上げることができる。
プログラムによってタイムリマップを実現する最大のメリットはフレームレートが落ちないという点
gsapでのイージング
GSAPは初めからイージングがかかっている