loop-animation

積み木の塔Block Tower

アイソメトリックで描いた積み木の塔に上から1つずつ積み木が落ちて跳ね、塔全体が1段沈んで元の高さに戻るアニメーションです。

Canvas 2D で、図形を 1 つずつ計算して描いています。初期設定で再生しています。

アイソメトリックの塔に、上から1つずつ積み木が落ちてくる。塔は1段ずつ沈んで元の高さに戻る

このシーンで作る

パラメータ、色、エフェクトを変えて、GIF・APNG・WebP・MP4・WebM で書き出せます。

どう計算しているか

  1. 塔を斜め上から見た格子状に並べ、奥の列から順に描きます。積み木はアイソメトリック投影(奥行きの軸を斜め30°に倒して描く方法)で、上面と左右の側面を色を変えて塗ります。
  2. 各塔の時刻を「塔ごとの時間差」でずらします。前半の55%で一番上の積み木が落ちます。落下中は 1 − (f / 0.75)² の放物線で加速しながら下がり、着地後は sin(πb)·(1 − b) で小さく跳ねます。跳ねる高さは「着地の跳ね」で変わります。
  3. 落ちたあとは、イージングをかけて塔全体を積み木1個ぶん沈めます。
  4. 塔の地面より下の部分は、柱の形の切り抜き(クリッピング)で隠しているので、沈んだ積み木は地面に吸い込まれるように消えます。
y_k = ground − (k − ease(sink))·s,  落下: y −= drop·(1 − (f/0.75)²)

ループがつながる理由

1ループで積み木が1個増え、塔がちょうど1個ぶん沈みます。終わりの時点の積み方は始まりの時点と同じなので、そのまま最初につながります。塔ごとの時刻は fract で折り返します。

調整できるパラメータ

形

塔の数(1辺)1 〜 6(初期値 3)
見える段数2 〜 12(初期値 5)
積み木の大きさ20 〜 140(初期値 64)

動き

落下の高さ50 〜 800(初期値 420)
着地の跳ね0 〜 0.4(初期値 0.12)
塔ごとの時間差0 〜 0.5(初期値 0.17)
イージングlinear・sine・quad・cubic・quint・expo・back・elastic

同じ分類のシーン(立体・擬似3D)