Tác giả: Azimin

  • Ngày 8 — Fields (Force, Noise, Attraction)

    Điều khiển hàng loạt object bằng “trường lực” thay vì keyframe


    Mục tiêu kỹ thuật

    • Hiểu Field = vùng ảnh hưởng tác động lên nhiều phần tử
    • Dùng:
      • Position Field (điều khiển vị trí)
      • Noise Field (dao động ngẫu nhiên có kiểm soát)
      • Attraction / Repulsion (hút / đẩy)
    • Kết hợp với Repeater + Offset (Ngày 5–6)

    1. Setup hệ cơ bản

    Bước

    • Tạo Circle nhỏ (size 12–16)
    • Add Repeater (Grid):
      • Columns: 20
      • Rows: 12
      • Spacing: 30–35
    • Center toàn bộ

    👉 Đây là “đám phần tử” để Field tác động.


    2. Position Field (dịch chuyển theo vùng)

    Mục tiêu: một vùng đi qua → kéo các chấm lệch vị trí


    Bước 1 — thêm Field

    • Select Repeater (hoặc layer chứa các phần tử)
    • Add → Field → Position Field

    Bước 2 — tạo “vùng ảnh hưởng”

    • Position Field thường có:
      • Shape (circle/gradient)
      • Radius / Falloff
    • Set:
      • Radius: 150–300

    Bước 3 — chỉnh lực

    • Strength / Offset:
      • X hoặc Y: 50–120

    Bước 4 — animate Field

    • Animate Position của Field:
      • 0s: bên trái
      • 2s: bên phải

    👉 Kết quả:

    • Field đi qua đâu → các chấm “bị đẩy lệch” ở đó

    3. Falloff (cực kỳ quan trọng)

    Giải thích

    • Center: ảnh hưởng mạnh
    • Rìa: yếu dần

    Bước

    • Tăng Falloff mềm

    👉 Nếu không có falloff:

    • Motion sẽ “gãy”, thiếu tự nhiên

    4. Noise Field (dao động tự nhiên)

    Mục tiêu: tạo chuyển động kiểu “organic”


    Bước 1

    • Add → Noise Field

    Bước 2 — thiết lập

    • Amplitude: 10–40
    • Scale: 50–150
    • Speed: 0.5–1.5

    👉 Kết quả:

    • Các phần tử rung nhẹ, không đồng đều

    Lưu ý

    • Noise ≠ random hoàn toàn
      → nó có tính liên tục (smooth)

    5. Kết hợp Position Field + Noise

    Mục tiêu: vừa có lực chính, vừa có nhiễu


    Setup

    • Position Field:
      • tạo chuyển động lớn
    • Noise Field:
      • thêm dao động nhỏ

    👉 Kết quả:

    • Motion “sống”, không bị cơ học

    6. Attraction / Repulsion

    Mục tiêu: hút hoặc đẩy phần tử


    Bước 1

    • Add → Attraction Field

    Bước 2 — thiết lập

    • Strength:
      • Dương → hút
      • Âm → đẩy
    • Radius: 200–400

    Bước 3 — animate

    • Di chuyển Field trong scene

    👉 Kết quả:

    • Các chấm bị hút về hoặc đẩy ra

    7. Kết hợp nhiều Field (quan trọng)

    Mục tiêu: tạo hệ phức tạp


    Setup mẫu

    • Field 1: Attraction (hút vào tâm)
    • Field 2: Noise (rung nhẹ)
    • Field 3: Position (đẩy theo hướng)

    👉 Thứ tự Field ảnh hưởng tới kết quả
    → thử đổi order để thấy khác biệt


    8. Mini project 1 — Wave Field

    Yêu cầu

    • Grid ≥ 15×10
    • 1 Position Field chạy ngang
    • Có:
      • Falloff mềm
      • Motion mượt

    9. Mini project 2 — Organic Motion

    Yêu cầu

    • Noise Field + nhẹ Position Field
    • Motion liên tục (loop được)

    10. Mini project 3 — Attraction System

    Yêu cầu

    • 1 điểm hút di chuyển
    • Các phần tử:
      • Bị hút → rồi thả ra
    • Có easing hoặc dynamics nhẹ

    11. Checklist kỹ thuật

    • Field có falloff (không cứng)
    • Không lạm dụng amplitude quá lớn
    • Có kết hợp nhiều Field
    • Motion không đồng loạt

    12. Lỗi phổ biến

    1. Noise quá mạnh

    → Nhìn như “nhiễu lỗi”

    2. Không dùng falloff

    → Motion bị gắt

    3. Chỉ dùng 1 Field

    → Hiệu ứng nghèo

    4. Không animate Field

    → Không có chuyển động tổng thể


    13. Tư duy quan trọng

    • Ngày 5–6: bạn điều khiển bằng index / thứ tự
    • Ngày 8:Bạn điều khiển bằng lực trong không gian

    So sánh

    OffsetField
    Theo thứ tựTheo vị trí
    Có quy luật tuyến tínhCó vùng ảnh hưởng
    Dễ đoánTự nhiên hơn

    Công thức tư duy

    • Motion có kiểm soát:Offset (logic)
    • Motion tự nhiên:Field (lực)

    → Kết hợp cả hai = motion “pro”

  • Ngày 7 — Behaviours (Follow Path, Look At, Dynamics)

    Chuyển từ “điều khiển trực tiếp” → “để hệ tự phản ứng”


    Mục tiêu kỹ thuật

    • Gắn Behaviour để tạo chuyển động không cần (hoặc rất ít) keyframe
    • Sử dụng:
      • Follow Path (chạy theo đường)
      • Look At (tự xoay theo mục tiêu)
      • Dynamics (spring/bounce vật lý nhẹ)
    • Kết hợp với Repeater + Offset từ Ngày 5–6

    1. Chuẩn bị scene

    Bước

    • New Scene: 1920×1080, 3–4s, 30fps
    • Background tối
    • Tạo Circle nhỏ (size ~16–20)

    2. Follow Path (chạy theo đường)

    Mục tiêu: object di chuyển theo path bất kỳ


    Bước 1 — tạo path

    • Dùng Pen/Path Tool
    • Vẽ 1 đường cong (S-curve hoặc loop)

    Bước 2 — gắn behaviour

    • Chọn Circle
    • Add → Behaviour → Follow Path

    Bước 3 — liên kết

    • Trong Inspector của Follow Path:
      • Path: chọn đường vừa vẽ

    Bước 4 — animate tiến trình

    • Tham số thường là Progress / Offset (0 → 100%)
    • Keyframe:
      • 0s: 0%
      • 2s: 100%

    👉 Kết quả:

    • Circle chạy đúng theo đường, không cần keyframe Position

    3. Tăng độ “sống” cho Follow Path

    Tuỳ chọn quan trọng

    • Orient to Path: bật
      → object xoay theo hướng di chuyển

    Easing

    • Ease In Out cho Progress
      → tránh chuyển động cứng

    4. Look At (tự xoay theo mục tiêu)

    Mục tiêu: object luôn “nhìn” vào 1 điểm


    Bước 1

    • Tạo 2 Circle:
      • A (di chuyển)
      • B (đứng yên hoặc di chuyển khác)

    Bước 2

    • Chọn A
    • Add → Look At

    Bước 3

    • Target: chọn B

    👉 Kết quả:

    • A luôn quay về phía B

    Ứng dụng

    • Arrow chỉ hướng
    • Nhân vật “nhìn theo”
    • UI elements phản ứng

    5. Dynamics (spring/bounce tự động)

    Mục tiêu: tạo chuyển động có độ trễ vật lý


    Bước 1

    • Tạo Circle
    • Animate Position đơn giản:
      • 0s: trái
      • 1s: phải

    Bước 2

    • Add → Dynamics / Spring

    Bước 3 — chỉnh tham số

    • Stiffness: độ cứng (cao = nhanh dừng)
    • Damping: độ giảm chấn (thấp = rung nhiều)

    👉 Kết quả:

    • Object không dừng ngay → có “rung” tự nhiên

    6. Kết hợp Behaviours (quan trọng)

    Setup bài tổng hợp


    Bước 1

    • 1 Circle chạy Follow Path

    Bước 2

    • 1 Circle khác:
      • Look At Circle đầu

    Bước 3

    • Thêm Dynamics vào rotation hoặc position

    👉 Bạn sẽ có:

    • 1 object chạy
    • 1 object “đuổi theo” bằng ánh nhìn
    • Motion có độ trễ vật lý

    7. Kết hợp với Repeater

    Mục tiêu: nhiều object cùng follow path


    Bước

    • Circle → Repeater (10–20 phần tử)
    • Add Follow Path cho source

    Offset

    • Delay theo index: 0.03s

    👉 Kết quả:

    • Chuỗi object chạy nối đuôi (snake-like motion)

    8. Mini project 1 — Path Animation

    Yêu cầu

    • 1 path cong
    • 1 object chạy theo
    • Có:
      • Orient to path
      • Easing mượt

    9. Mini project 2 — Chase System

    Yêu cầu

    • 1 object A chạy
    • 1 object B:
      • Look At A
      • Có delay hoặc dynamics

    10. Mini project 3 — Snake Motion

    Yêu cầu

    • Repeater ≥ 12 phần tử
    • Follow Path
    • Offset theo index

    11. Checklist kỹ thuật

    • Không dùng Position keyframe khi đã có Follow Path
    • Look At hoạt động đúng target
    • Dynamics không quá “lố”
    • Có kết hợp offset để tạo chuỗi

    12. Lỗi phổ biến

    1. Vừa keyframe Position vừa Follow Path

    → Xung đột (sai workflow)

    2. Dynamics quá mạnh

    → Motion mất kiểm soát

    3. Không bật orient to path

    → Object trượt nhưng không xoay

    4. Không dùng offset với repeater

    → Tất cả chạy cùng lúc (mất ý nghĩa)


    13. Tư duy quan trọng

    • Ngày 1–6: bạn ra lệnh chuyển động
    • Ngày 7:Bạn thiết lập quy tắc để object tự hành xử

    So sánh nhanh

    Truyền thốngCavalry (Behaviours)
    Keyframe từng bướcGắn rule (Follow, Look At)
    Khó chỉnhChỉnh 1 tham số
    Motion “cứng”Motion tự nhiên
  • Ngày 6 — Delay / Offset nâng cao (tạo nhịp chuyên nghiệp)

    Mục tiêu kỹ thuật

    • Kiểm soát độ trễ theo thứ tự (index-based delay) một cách chính xác
    • Tạo các pattern: domino, wave có hướng, ripple
    • Phân biệt rõ: stagger đơn giản vs offset hệ thống

    1. Ôn nhanh (đặt đúng tư duy)

    • Ngày 5: bạn đã có Repeater + Offset cơ bản
    • Ngày 6: bạn cần đạt:Điều khiển ai chạy trước, ai chạy sau, chạy theo hướng nào

    2. Setup bài chính (grid nâng cao)

    Bước

    • Tạo Circle (size ~20)
    • Add Repeater:
      • Columns: 12
      • Rows: 8
      • Spacing: 40
    • Center vào màn hình

    3. Phân biệt 2 kiểu delay

    1. Delay theo index (1 chiều)

    → chạy theo thứ tự tạo phần tử

    2. Delay theo không gian (2D)

    → chạy theo vị trí (trái→phải, trên→dưới, từ tâm ra)

    👉 Ngày 6 tập trung vào cả hai


    4. Domino effect (1 chiều rõ ràng)

    Mục tiêu: chạy lần lượt từ trái → phải


    Bước 1 — animate source

    • Scale:
      • 0s: 40%
      • 0.6s: 100%

    Bước 2 — offset

    Trong Repeater:

    • Delay: 0.03–0.05s

    Bước 3 — kiểm tra thứ tự

    Nếu chạy sai hướng:

    • Đổi:
      • Reverse index (nếu có)
      • Hoặc đảo trục X

    👉 Kết quả:

    • Hiệu ứng domino chuẩn

    5. Wave 2 chiều (quan trọng)

    Mục tiêu: sóng lan theo hàng hoặc cột


    Cách 1 — theo hàng ngang

    Ý tưởng:

    • Mỗi hàng chạy cùng lúc
    • Hàng dưới trễ hơn

    Bước

    • Dùng tham số liên quan Row index
    • Delay theo Row:
      • row * 0.05

    Kết quả:

    • Sóng đi từ trên → xuống

    Cách 2 — theo cột

    • Delay:
      • column * 0.05

    → Sóng trái → phải


    6. Ripple (lan từ tâm)

    Mục tiêu: sóng lan từ giữa ra ngoài


    Bước 1

    • Xác định tâm grid

    Bước 2

    • Dùng khoảng cách:
      • distance từ center

    Trong Cavalry (concept)

    • Delay ∝ distance

    👉 Kết quả:

    • Motion lan tròn (giống sóng nước)

    7. Kết hợp nhiều layer delay

    Mục tiêu: motion “giàu” hơn


    Bước

    Trên cùng 1 system:

    • Scale: offset theo index
    • Opacity: offset khác (0.02s)
    • Position: offset nhẹ (0.01s)

    👉 Không phải mọi thuộc tính đều delay giống nhau


    8. Overlap (chồng nhịp)

    Vấn đề

    Nếu delay quá đều → nhìn “máy móc”


    Cách xử lý

    • Thêm overlap:
      • Object sau bắt đầu khi object trước chưa xong

    Thiết lập

    • Delay nhỏ hơn duration animation

    Ví dụ:

    • Animation: 0.6s
    • Delay: 0.03s

    👉 Tạo cảm giác liên tục


    9. Mini project 1 — Advanced Wave Grid

    Yêu cầu

    • Grid ≥ 10×6
    • Có:
      • Wave theo 1 hướng (row hoặc column)
      • Loop mượt
      • Scale + Opacity

    10. Mini project 2 — Ripple Effect

    Yêu cầu

    • Lan từ tâm ra
    • Có:
      • Scale hoặc Position
      • Delay theo distance
      • Nhịp rõ ràng

    11. Checklist kỹ thuật

    • Hiểu index ≠ position
    • Biết điều khiển hướng (trái/phải/trên/dưới/tâm)
    • Delay không phá nhịp tổng
    • Có overlap (không bị rời rạc)

    12. Lỗi phổ biến

    1. Chỉ dùng 1 loại delay

    → Motion nghèo

    2. Delay quá lớn

    → Nhìn như từng đoạn rời

    3. Không kiểm soát hướng

    → Motion “ngẫu nhiên”, thiếu ý đồ

    4. Tất cả thuộc tính delay giống nhau

    → Thiếu chiều sâu


    13. Tư duy quan trọng

    • Ngày 5: bạn có hệ thống
    • Ngày 6:Bạn điều khiển nhịp của hệ thống

    Công thức đơn giản cần nhớ

    • Domino:delay = index * k
    • Wave:delay = row/column * k
    • Ripple:delay = distance * k
  • Ngày 5 — Procedural cơ bản (Repeater / Array)

    Chuyển từ “animate từng object” → “thiết kế hệ thống tự chạy”

    Mục tiêu kỹ thuật

    • Tạo nhiều phần tử bằng Repeater/Array
    • Điều khiển bằng 1 nguồn thay vì keyframe từng object
    • Làm 2 pattern: gridcircular loader

    1. Chuẩn bị scene

    Bước

    • New Scene: 1920×1080, 30fps, 3–4s
    • Background tối (#0F172A)

    2. Tạo phần tử gốc (source)

    Bước

    • Tạo Circle
      • Size: 20–24
      • Fill: màu sáng

    👉 Nguyên tắc:

    Chỉ làm việc với 1 object gốc, phần còn lại để hệ thống nhân bản.


    3. Repeater dạng Grid

    Mục tiêu: tạo ma trận chấm (dots grid)


    Bước 1 — thêm Repeater

    • Chọn Circle
    • Add → Repeater / Array

    Bước 2 — thiết lập grid

    Trong Inspector của Repeater:

    • Columns: 12
    • Rows: 6
    • X Spacing: 40
    • Y Spacing: 40

    👉 Bạn đã có ~72 phần tử không cần duplicate thủ công.


    Bước 3 — căn giữa

    • Bật Align → Center toàn bộ grid vào màn hình

    4. Animate theo index (offset)

    Mục tiêu: tạo “wave” chạy qua grid


    Bước 1 — animate Scale của Circle gốc

    • Time 0s: Scale 40% → keyframe
    • Time 1s: Scale 100%

    Bước 2 — offset theo index

    Trong Repeater:

    • Tìm Offset / Delay / Index Offset
    • Set:
      • Delay: 0.02–0.05s

    👉 Kết quả:

    • Mỗi chấm scale lệch nhau → tạo sóng

    5. Biến wave thành “sống”

    Thêm loop

    Bước

    • Keyframe:
      • 0s: 40%
      • 0.5s: 100%
      • 1s: 40%
    • Bật loop (nếu có) hoặc copy chu kỳ

    👉 Bạn có wave chạy liên tục.


    6. Repeater dạng Circular (radial)

    Mục tiêu: tạo loading spinner


    Bước 1 — tạo Circle mới

    • Size: 16
    • Đặt lệch tâm (ví dụ X = 150)

    Bước 2 — thêm Repeater

    • Count: 12–16

    Bước 3 — xoay vòng

    • Rotation tổng: 360°

    👉 Hệ thống tự phân bố thành vòng tròn.


    7. Animate loader

    Cách 1 — rotate cả hệ

    Bước

    • Group toàn bộ
    • Rotation:
      • 0s:
      • 2s: 360°
    • Linear

    Cách 2 — fade theo index (đẹp hơn)

    Bước

    • Animate Opacity:
      • 100% → 20%
    • Offset theo index:
      • Delay: 0.05s

    👉 Hiệu ứng “đuổi nhau” (classic loader)


    8. Kết hợp Scale + Opacity

    Bước

    • Scale: 60% → 100%
    • Opacity: 30% → 100%
    • Offset theo index

    👉 Loader nhìn “có chiều sâu” hơn.


    9. Nguyên tắc cốt lõi cần hiểu

    1. Source-driven

    • Mọi thứ bắt đầu từ 1 object

    2. Index-based animation

    • Animation lệch nhau theo thứ tự

    3. Không duplicate thủ công

    • Nếu bạn Ctrl+D nhiều → đang làm sai cách

    10. Mini project (bắt buộc)

    Project 1 — Wave grid

    • Grid ≥ 8×8
    • Có:
      • Scale wave
      • Loop
      • Offset index

    Project 2 — Loading spinner

    • Circular repeater
    • Có:
      • Rotation hoặc fade offset
      • Loop mượt

    11. Checklist

    • Không duplicate object thủ công
    • Dùng Repeater để tạo hệ
    • Có offset theo index
    • Animation loop mượt

    12. Lỗi phổ biến

    1. Animate từng phần tử

    → Sai tư duy Cavalry

    2. Offset quá lớn

    → Motion bị rời rạc

    3. Không loop chuẩn

    → Giật khi lặp


    13. Tư duy quan trọng

    • Ngày 1–4: bạn “điều khiển object”
    • Ngày 5:Bạn thiết kế hệ thống sinh ra motion

    So sánh nhanh

    Cách cũCách Cavalry
    Duplicate 50 object1 object + repeater
    Keyframe từng cáiOffset theo index
    Khó sửaSửa 1 → ảnh hưởng toàn bộ
  • Ngày 4 — Text Animation (Kinetic Typography cơ bản → bán chuyên)

    Mục tiêu kỹ thuật

    • Làm chủ Text layer
    • Animate theo từng chữ (per-character)
    • Tạo intro chữ 2–4s kiểu quảng cáo/TikTok: rõ, nhanh, có nhịp

    1. Chuẩn bị scene

    Bước 1

    • New Scene:
      • 1920×1080, 30fps, 3–4s

    Bước 2 (background)

    • Rectangle full màn:
      • Fill: màu tối (#0F172A hoặc tương đương)

    2. Tạo Text đúng chuẩn

    Bước 1

    • Chọn Text Tool → click vào Scene
    • Gõ:
      MOTION DESIGN

    Bước 2 (Inspector)

    • Font: sans-serif (Inter / Montserrat / SF Pro)
    • Weight: Bold
    • Size: ~120–160
    • Align: Center

    👉 Tránh font rườm rà; ưu tiên đọc nhanh.


    3. Chia dòng để kiểm soát nhịp

    Bước

    • Tách thành 2 layer:
      • MOTION
      • DESIGN
    • Căn giữa dọc:
      • MOTION (trên)
      • DESIGN (dưới)

    👉 Lợi ích: điều khiển timing độc lập.


    4. Animate kiểu “Slide + Fade” (nền tảng)

    Layer 1: MOTION

    Bước 1 — keyframe đầu

    • Time: 0s
    • Position Y: -80 (cao hơn vị trí cuối)
    • Opacity: 0%
    • Set keyframe cho cả 2

    Bước 2 — keyframe cuối

    • Time: 0.6s
    • Position Y: 0
    • Opacity: 100%

    Bước 3 — easing

    • Ease Out

    Layer 2: DESIGN (stagger)

    Bước 1

    • Time: 0.3s
    • Position Y: +80
    • Opacity: 0% → keyframe

    Bước 2

    • Time: 0.9s
    • Position Y: 0
    • Opacity: 100%

    👉 Hai dòng không xuất hiện cùng lúc.


    5. Per-character animation (quan trọng)

    Mục tiêu: từng chữ xuất hiện lệch nhau


    Bước 1

    • Chọn layer MOTION

    Bước 2

    • Thêm Text Animator / Per-character (tuỳ UI Cavalry)

    Bước 3 — thiết lập

    • Animate:
      • Position Y: từ -40 → 0
      • Opacity: 0 → 100

    Bước 4 — offset

    • Delay giữa mỗi chữ: 0.03–0.06s

    👉 Kết quả:

    • Chữ xuất hiện theo chuỗi, không “đồng loạt”

    6. Tạo nhịp (timing rhythm)

    Công thức an toàn:

    • Dòng 1: bắt đầu 0s
    • Dòng 2: trễ ~0.3s
    • Mỗi chữ: lệch 0.04s

    👉 Nhịp nhìn sẽ:

    • Quét từ trái → phải
    • Từ trên → xuống

    7. Thêm “pop” nhẹ (scale)

    Bước

    • Với mỗi dòng:
      • Trước khi ổn định:
        • Scale: 110%
      • Sau đó:
        • Scale: 100%

    👉 Tránh quá đà; chỉ 5–10% là đủ.


    8. Highlight keyword

    Mục tiêu: tạo điểm nhấn


    Cách 1 — đổi màu

    • Chọn chữ “DESIGN”
    • Đổi màu khác (ví dụ: cyan)

    Cách 2 — background bar

    Bước

    • Tạo Rectangle phía sau chữ
    • Animate:
      • Scale X: 0 → 100%
      • Delay nhẹ sau text

    👉 Đây là pattern phổ biến trong ads.


    9. Exit animation (ra màn)

    Không để “đứng im rồi cắt”


    Bước

    • Time: 2.2s → 2.8s
    • Animate:
      • Position Y: +60
      • Opacity: 0%
      • Ease In

    10. Mini project hoàn chỉnh

    Yêu cầu

    • 2 dòng text
    • Có:
      • Per-character
      • Stagger giữa 2 dòng
      • Highlight (màu hoặc bar)
      • Entrance + Exit

    11. Checklist chất lượng

    • Đọc được trong <1.5s
    • Không chữ nào “nhảy” sai nhịp
    • Có hierarchy (dòng chính/phụ)
    • Không dùng quá nhiều hiệu ứng

    12. Bài tập bắt buộc

    Bài 1

    Text:
    SALE 50%

    • Animate nhanh (≤2s)
    • Phù hợp quảng cáo

    Bài 2

    Text:
    HELLO WORLD

    • Dùng per-character + stagger
    • Thử 2 style khác nhau

    13. Lỗi phổ biến

    1. Quá nhiều hiệu ứng

    → Rối, khó đọc

    2. Tất cả chữ xuất hiện cùng lúc

    → Mất nhịp

    3. Timing quá chậm

    → Người xem bỏ qua

    4. Font sai

    → Dù animation tốt vẫn trông “rẻ”


    14. Tư duy quan trọng

    • Text animation ≠ hiệu ứng
    • Mục tiêu chính:Truyền thông tin nhanh + rõ + có điểm nhấn
  • Ngày 3 — Shape, màu sắc, bố cục (làm cho animation “đáng nhìn”)

    Mục tiêu kỹ thuật

    • Kiểm soát visual hierarchy (thứ tự nhìn)
    • Sử dụng shape + màu + spacing đúng
    • Tránh lỗi phổ biến: animation đúng nhưng xấu / rối / rẻ tiền

    1. Chuẩn bị scene

    Bước 1

    • New Scene:
      • 1920×1080
      • 3–4s
      • 30fps

    Bước 2 (background)

    • Tạo Rectangle full màn:
      • Width: 1920
      • Height: 1080
      • Fill: màu tối (ví dụ: #0F172A)

    👉 Luôn có background rõ ràng → tránh “trôi nổi”


    2. Tạo layout cơ bản (quan trọng hơn animation)

    Mục tiêu: bố cục sạch, có chủ thể


    Bước 1 — tạo 3 hình

    • Circle (trung tâm)
      • Size: 160
      • Màu: sáng (ví dụ: xanh)
    • 2 Rectangle nhỏ:
      • Size: 80 x 80
      • Màu phụ

    Bước 2 — căn chỉnh

    • Chọn tất cả → dùng Align
      • Circle ở giữa
      • 2 rectangle hai bên

    👉 Nguyên tắc:

    • 1 main object
    • 2 support objects

    3. Áp dụng nguyên tắc màu (không làm bừa)

    Dùng công thức an toàn:

    • 1 màu chính (primary)
    • 1 màu phụ (secondary)
    • 1 màu nền (background)

    Ví dụ:

    • Background: tối
    • Main: xanh sáng
    • Phụ: tím / cyan nhẹ

    👉 Tránh:

    • Quá nhiều màu
    • Màu saturation cao cùng lúc

    4. Bo góc (corner radius)

    Bước

    • Chọn Rectangle
    • Corner Radius: 16–24

    👉 Kết quả:

    • Nhìn “modern” hơn ngay lập tức

    5. Thêm shadow (tạo chiều sâu)

    Bước

    • Chọn Circle
    • Add Shadow:
      • Blur: 20–40
      • Opacity: 20–30%

    👉 Không lạm dụng → chỉ main object có shadow


    6. Animate đúng cách (không phá layout)

    Mục tiêu: animation hỗ trợ design


    Bước 1 — animate Circle (main)

    • Frame 0:
      • Scale: 0% → keyframe
    • Frame 0.6s:
      • Scale: 110%
    • Frame 0.9s:
      • Scale: 100%

    👉 Tạo hiệu ứng “pop”


    Bước 2 — animate 2 rectangle

    Quan trọng: không chạy cùng lúc

    • Rectangle trái:
      • Start: 0.3s
      • Slide từ trái vào
    • Rectangle phải:
      • Start: 0.5s
      • Slide từ phải vào

    👉 Đây là:
    Stagger (lệch thời gian)


    7. Easing chuẩn design

    Bước

    • Chọn tất cả keyframe
    • Dùng:
      • Ease Out cho entrance
      • Ease In cho exit (nếu có)

    👉 Quy tắc:

    • Vào nhanh, dừng mềm
    • Không dùng linear

    8. Tạo nhịp (timing rhythm)

    Mẫu timing chuẩn:

    • Main xuất hiện: 0 → 0.6s
    • Phụ 1: 0.3s
    • Phụ 2: 0.5s

    👉 Mắt người sẽ:

    • Nhìn main trước
    • Sau đó mới tới phụ

    9. Mini animation hoàn chỉnh

    Bạn cần đạt:

    • Circle:
      • Pop in (scale)
    • 2 Rectangle:
      • Slide in lệch nhau
    • Tổng thời gian:
      • ~2–3s

    10. Kiểm tra chất lượng (rất quan trọng)

    Checklist:

    • Có 1 điểm focus rõ (không rối)
    • Màu không chói
    • Object không chồng lấn vô nghĩa
    • Animation không đồng loạt
    • Có nhịp (rhythm)

    11. Bài tập bắt buộc

    Bài 1

    • Tạo layout:
      • 1 hình tròn lớn
      • 3 hình nhỏ xung quanh
    • Animate stagger

    Bài 2

    • Làm lại nhưng:
      • Đổi màu (theme khác)
      • Giữ bố cục

    👉 Mục tiêu: luyện design consistency


    12. Lỗi phổ biến

    1. “Mỗi cái chạy một kiểu”

    → Thiếu hệ thống

    2. Màu quá nhiều

    → Nhìn rẻ ngay lập tức

    3. Tất cả xuất hiện cùng lúc

    → Mất focus

    4. Không có khoảng trắng

    → Bị ngộp


    13. Tư duy quan trọng

    • Ngày 1–2: bạn làm cho chạy
    • Ngày 3: bạn làm cho đẹp và có thứ tự

    Motion tốt = Design + Timing (không chỉ kỹ thuật)