Danh mục: Học Cavalry

  • Ngày 14 — Tối ưu, Export, Chuẩn Production

    Biến project thành file “giao được cho client / đăng ngay”


    Mục tiêu kỹ thuật

    • Tối ưu scene: mượt, dễ sửa, không lỗi
    • Xuất đúng format: MP4 / GIF / (tuỳ chọn) Lottie
    • Đóng gói file: ai mở cũng hiểu và dùng được

    1. Dọn scene (cleanup)

    Mục tiêu: loại bỏ mọi thứ “không cần thiết”


    Bước

    • Xoá:
      • Layer test / duplicate thừa
      • Keyframe không dùng
    • Disable:
      • Effect nặng không cần thiết

    Kiểm tra

    • Play preview:
      • Có lag không?
      • Có frame drop không?

    👉 Quy tắc:

    Scene sạch = render nhanh + dễ sửa


    2. Tổ chức lại cấu trúc

    Mục tiêu: file đọc được trong 10 giây


    Naming chuẩn

    • CTRL_* → control
    • COMP_* → component
    • BG_* → background
    • FX_* → effect

    Group lại

    Ví dụ:

    • COMP_Text
    • COMP_Loader
    • BG_Main

    👉 Tránh:

    • Layer1, Layer2 (vô nghĩa)

    3. Khóa hệ thống

    Mục tiêu: tránh sửa nhầm


    Bước

    • Lock:
      • System layer
      • Background
    • Chỉ để:
      • Control mở

    👉 File trở thành “tool”


    4. Kiểm tra control

    Mục tiêu: đảm bảo dùng được thực tế


    Test nhanh

    • Kéo CTRL_Progress:
      • 0 → 100 → có lỗi không?
    • Thay text:
      • Có vỡ layout không?
    • Đổi màu:
      • Có hợp lý không?

    👉 Nếu vỡ → rig chưa đúng


    5. Tối ưu performance

    Mục tiêu: giảm lag


    Cách 1 — giảm complexity

    • Giảm:
      • Repeater count (nếu quá cao)
      • Noise amplitude

    Cách 2 — precomp / group

    • Gom các phần ổn định lại

    Cách 3 — tắt preview nặng

    • Motion blur / shadow (khi không cần)

    👉 Ưu tiên realtime preview mượt


    6. Export video (chuẩn)

    MP4 (phổ biến nhất)


    Bước

    • File → Export

    Thiết lập

    • Format: MP4 (H.264)
    • Resolution: 1920×1080
    • FPS: 30
    • Bitrate: trung bình–cao

    Kiểm tra file

    • Có bị giật không
    • Màu có lệch không
    • Timing có đúng không

    7. Export cho mạng xã hội

    Dọc (TikTok / Reels)


    Bước

    • Duplicate scene
    • Đổi:
      • 1080×1920

    Chỉnh lại layout

    • Text vào vùng trung tâm
    • Tránh sát mép


    GIF (nhẹ, dùng web)


    Lưu ý

    • Giảm:
      • Resolution (720p hoặc thấp hơn)
      • FPS (15–24)

    👉 Tránh file quá nặng


    8. (Tuỳ chọn) Lottie / Web

    Khi dùng UI / app


    Yêu cầu

    • Không dùng:
      • Effect nặng
      • Shadow phức tạp

    👉 Motion phải “vector-friendly”


    9. Đóng gói project

    Mục tiêu: gửi client / lưu trữ


    Checklist

    • File Cavalry chính
    • Font (nếu cần)
    • File data (CSV/JSON)
    • Video export (preview)


    Cấu trúc thư mục

    Project/
      /source
      /export
      /data
      /font
    

    10. Test như client

    Mục tiêu: đảm bảo usability


    Giả lập

    • Mở file mới
    • Chỉ chỉnh:
      • Text
      • Color
      • Control

    👉 Nếu phải “đào sâu layer” → fail


    11. Checklist cuối

    • Scene sạch, không layer thừa
    • Naming rõ
    • Control hoạt động ổn
    • Export đúng format
    • Có version dọc (nếu cần)

    12. Lỗi production phổ biến

    1. File nặng, lag

    → quá nhiều repeater / field

    2. Không có control

    → client không dùng được

    3. Layout vỡ khi đổi text

    → không test trước

    4. Export sai format

    → phải làm lại


    13. Tư duy quan trọng

    Ngày 14 không còn là học kỹ thuật, mà là:

    Làm sao để sản phẩm dùng được ngoài đời


    Chuẩn “pro”

    • Người khác mở file:
      • Hiểu trong 10 giây
      • Dùng trong 1 phút

    Chuỗi hoàn chỉnh bạn đã đi qua

    1. Keyframe
    2. Timing
    3. Design
    4. Text
    5. Procedural
    6. Offset
    7. Behaviour
    8. Field
    9. Path
    10. Data
    11. Control
    12. Rigging
    13. Project
    14. Production

  • Ngày 13 — Project thực chiến (Portfolio-level)

    Xây 1 sản phẩm hoàn chỉnh: design + system + control


    Mục tiêu

    • Tạo 1 video 4–6s có thể đưa vào portfolio
    • Có đủ:
      • Design (bố cục, màu, typography)
      • System (repeater/offset/field/behaviour)
      • Control (slider điều khiển tổng)
    • File sạch, tái sử dụng được

    0. Chọn đề bài (chọn 1)

    Option A — Kinetic Typography (khuyến nghị)

    • Text chính + highlight
    • Motion nhanh, rõ, phù hợp ads/TikTok

    Option B — Data Motion

    • Bar/line chart ngắn
    • Có data binding + animation

    Option C — Abstract Motion

    • Grid + field + wave
    • Tập trung visual system

    Dưới đây hướng dẫn chi tiết Option A (Kinetic Typography) vì bao quát nhiều kỹ thuật.


    1. Setup scene

    Bước

    • 1920×1080, 30fps, 5s
    • Background: tối (#0F172A hoặc tương đương)

    2. Design layout (không animate vội)

    Bước 1 — text

    • Tạo 2 dòng:
      • CREATE
      • MOTION
    • Font:
      • Sans-serif (Inter/Montserrat)
      • Bold, size lớn (120–160)

    Bước 2 — hierarchy

    • Dòng 1: màu chính (trắng/xanh sáng)
    • Dòng 2: màu accent (cyan/tím)

    Bước 3 — spacing

    • Line spacing: chặt vừa phải
    • Căn giữa (center)

    👉 Chỉ khi nhìn đẹp ở trạng thái tĩnh mới animate.


    3. Tạo module Text (rig nhanh)

    Bước

    • Group: COMP_Text

    Bên trong:

    • Text layer
    • (sau đó thêm animator)

    4. Per-character animation

    Mục tiêu: chữ xuất hiện theo chuỗi


    Bước 1

    • Add Text Animator (per-character)

    Bước 2 — thuộc tính

    • Position Y: -60 → 0
    • Opacity: 0 → 100

    Bước 3 — delay

    • index * 0.04

    👉 Dòng 1 chạy trước


    5. Stagger giữa 2 dòng

    Bước

    • Dòng MOTION:
      • Offset thêm 0.3s

    👉 Tạo nhịp:

    • Main → phụ

    6. Highlight (background bar)

    Mục tiêu: tăng điểm nhấn


    Bước 1

    • Tạo Rectangle phía sau chữ MOTION

    Bước 2 — animate

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

    Bước 3

    • Delay:
      • Sau text ~0.1–0.2s

    7. Thêm motion phụ (system)

    Option nhẹ nhưng hiệu quả


    Cách 1 — duplicate text

    • Tạo bản copy mờ phía sau
    • Offset nhỏ → tạo chiều sâu

    Cách 2 — thêm line (Trim Path)

    • Line chạy ngang qua text
    • Dùng Trim Path (Ngày 9)

    8. Control (bắt buộc)

    Tạo control panel


    Tạo:

    • CTRL_Progress (0–100)
    • CTRL_Speed (0.5–2)
    • CTRL_Delay (0–0.1)

    Áp dụng

    Progress:

    t = CTRL_Progress/100
    

    Per-character:

    t = clamp((CTRL_Progress/100) - index*CTRL_Delay, 0, 1)
    

    👉 1 slider → chạy toàn bộ text


    9. Exit animation

    Mục tiêu: kết thúc có kiểm soát


    Bước

    • Time: 3.5s → 4.5s
    • Animate:
      • Position Y: +60
      • Opacity: 0

    10. Polish (phần tạo khác biệt)

    Kiểm tra 4 yếu tố:

    1. Timing

    • Không quá chậm (>1.5s cho intro)

    2. Spacing

    • Không chồng lấn

    3. Color

    • ≤ 3 màu chính

    4. Consistency

    • Các easing giống nhau

    11. Export

    Bước

    • MP4 (H.264)
    • 1920×1080
    • 30fps

    12. Checklist portfolio

    • Có intro + highlight + exit
    • Có per-character + stagger
    • Có control (không keyframe thuần)
    • File đặt tên rõ
    • Có thể thay text nhanh

    13. Tiêu chí “đủ để show”

    Nếu đạt:

    • Nhìn rõ trong 1–2s
    • Motion có nhịp, không rối
    • system + control

    → Có thể đưa vào portfolio entry-level


    14. Lỗi cần tránh

    1. Overdesign

    → quá nhiều hiệu ứng

    2. Thiếu focus

    → không biết nhìn vào đâu

    3. Không có control

    → chỉ là demo, không phải system


    15. Nâng cấp (nếu còn thời gian)

    • Thêm sound sync (beat)
    • Thêm version dọc (9:16)
    • Thử 2 màu theme khác nhau

    16. Tư duy quan trọng

    Ngày 13 không phải “làm cho xong”, mà là:

    Chứng minh bạn hiểu system + design + control cùng lúc

  • Ngày 12 — Rigging & Modular System

    Đóng gói animation thành “component” tái sử dụng


    Mục tiêu kỹ thuật

    • Tổ chức hierarchy (group / parent) rõ ràng
    • Tạo module (thành phần độc lập, có control riêng)
    • Thiết lập interface điều khiển (control panel)
    • Đảm bảo thay đổi 1 chỗ → cập nhật toàn bộ
    • Chuẩn bị cho template production

    1. Nguyên tắc rigging trong Cavalry

    Rigging = thiết kế hệ thống để dễ điều khiển + tái sử dụng


    3 lớp bắt buộc

    1. Visual
      • Shape / Text
    2. System
      • Repeater / Field / Behaviour
    3. Control
      • Slider / Expression

    👉 Không trộn lẫn 3 lớp này


    2. Tạo module cơ bản (Loading Component)

    Mục tiêu: 1 loader có thể chỉnh size, speed, số lượng


    Bước 1 — tạo visual

    • Circle nhỏ (size 16)
    • Đặt lệch tâm (X = 120)

    Bước 2 — system

    • Add Repeater:
      • Count: 12
      • Rotation: 360°

    Bước 3 — animation

    • Rotate toàn bộ:
      • 0s:
      • 2s: 360°
    • Linear loop

    👉 Đây là loader cơ bản


    3. Thêm control

    Mục tiêu: biến loader thành module


    Tạo các control

    1. Size

    • Slider: CTRL_Size (0–200)

    2. Speed

    • Slider: CTRL_Speed (0.5–3)

    3. Count

    • Slider: CTRL_Count (4–24)

    4. Link control → system


    Size

    BaseSize * (CTRL_Size/100)
    

    Speed (rotation)

    time * CTRL_Speed * 180
    

    Count (repeater)

    • Bind Count = CTRL_Count

    👉 1 module giờ có thể tuỳ biến


    5. Group & hierarchy

    Mục tiêu: file không rối


    Bước

    • Tạo Group: COMP_Loader
    • Bên trong gồm:
      • Visual
      • Repeater
      • Animation

    Đặt tên chuẩn

    • CTRL_* → control
    • COMP_* → component
    • SYS_* → system

    👉 Khi project lớn, naming = sống còn


    6. Expose control (giao diện dùng)

    Mục tiêu: người khác chỉ chỉnh control


    Cách làm

    • Đưa tất cả CTRL_* lên top level
    • Ẩn/khóa layer không cần chỉnh

    👉 File trở thành “tool” chứ không phải “scene”


    7. Tạo module thứ 2 (Text Intro)

    Mục tiêu: tái sử dụng nhiều lần


    Thành phần

    • Text
    • Per-character animation
    • Background bar (optional)

    Control

    • CTRL_Text (string nếu có)
    • CTRL_Delay
    • CTRL_Duration

    Logic

    • Delay per character:
      • index * CTRL_Delay

    👉 Dùng lại cho:

    • Ads
    • TikTok
    • Intro video

    8. Kết hợp nhiều module

    Mục tiêu: xây system lớn


    Ví dụ scene

    • COMP_Loader
    • COMP_TextIntro
    • COMP_Background

    👉 Mỗi component độc lập nhưng cùng control tổng


    9. Global control (master)

    Mục tiêu: điều khiển toàn scene


    Tạo:

    • CTRL_Master_Progress

    Dùng:

    localProgress = clamp(CTRL_Master_Progress - offset, 0, 1)
    

    👉 1 slider → toàn bộ animation


    10. Mini project — Modular Loader

    Yêu cầu

    • 1 component loader
    • Có control:
      • Size
      • Speed
      • Count

    11. Mini project — Text System

    Yêu cầu

    • Text animation
    • Có control:
      • Delay
      • Duration
      • Style (optional)

    12. Mini project — Combined Scene

    Yêu cầu

    • ≥ 2 component
    • Có:
      • Master control
      • Naming rõ ràng
      • Không chỉnh trực tiếp layer con

    13. Checklist kỹ thuật

    • Có group rõ ràng
    • Control tách riêng
    • Không hardcode giá trị
    • Module hoạt động độc lập
    • Có thể reuse

    14. Lỗi phổ biến

    1. Không tách module

    → File khó sửa

    2. Control nằm rải rác

    → Không dùng được

    3. Không đặt tên

    → Không scale được project

    4. Logic dính chặt vào layer

    → Không tái sử dụng


    15. Tư duy quan trọng

    • Ngày 1–11: bạn làm animation
    • Ngày 12:Bạn xây hệ thống sản xuất animation

    So sánh

    AmateurPro
    Mỗi file làm lạiDùng module
    Chỉnh tayDùng control
    Khó sửaSửa 1 chỗ

    Nguyên tắc vàng

    Nếu bạn phải làm lại từ đầu → bạn chưa rig đúng

  • Ngày 11 — Control & Expression (Slider, Linking, Logic)

    Biến project thành “hệ điều khiển”: chỉnh 1 chỗ → cập nhật toàn bộ


    Mục tiêu kỹ thuật

    • Tạo Control (Slider / Checkbox / Dropdown)
    • Link properties (liên kết nhiều thuộc tính về 1 nguồn)
    • Viết expression cơ bản để:
      • Chuẩn hoá (normalize) giá trị
      • Map (remap) dải giá trị
      • Điều kiện (if/else)
    • Đóng gói thành control panel dùng lại

    1. Tạo Control (Slider)

    Mục tiêu: có 1 biến trung tâm điều khiển nhiều thứ


    Bước 1

    • Add → Control → Slider

    Bước 2

    • Đặt tên: Progress
    • Range:
      • Min: 0
      • Max: 100
      • Default: 0

    👉 Tư duy:

    Mọi animation có thể quy về 1 tham số “tiến trình”


    2. Link trực tiếp (không expression)

    Mục tiêu: hiểu cơ chế liên kết


    Bước

    • Chọn object (ví dụ Circle)
    • Tại Opacity:
      • Link → chọn Progress

    Kết quả

    • Progress = 0 → Opacity = 0
    • Progress = 100 → Opacity = 100

    👉 Đây là mapping 1–1 (chưa linh hoạt)


    3. Expression cơ bản (rất quan trọng)

    Mục tiêu: biến Progress thành nhiều hành vi khác nhau


    Ví dụ 1 — Scale từ 50% → 120%

    50 + (Progress/100) * 70
    

    Giải thích

    • Progress 0 → Scale 50
    • Progress 100 → Scale 120

    Ví dụ 2 — Position X từ -300 → 300

    -300 + (Progress/100) * 600
    

    👉 Công thức chuẩn:

    output = min + (input_norm * range)


    4. Normalize (chuẩn hoá)

    Mục tiêu: đưa mọi input về 0–1


    Công thức

    t = Progress / 100
    

    👉 Sau đó dùng t cho mọi phép tính
    → code gọn, dễ kiểm soát


    5. Easing bằng expression

    Mục tiêu: không phụ thuộc keyframe


    Ví dụ (ease in-out đơn giản)

    t = Progress/100;
    t*t*(3 - 2*t)
    

    👉 Dùng t đã “smooth” này để điều khiển:

    • Scale
    • Position
    • Opacity

    6. Điều kiện (if / else)

    Mục tiêu: thay đổi hành vi theo ngưỡng


    Ví dụ — bật/tắt

    Progress > 50 ? 100 : 0
    

    👉 Ứng dụng:

    • Hiện/ẩn element
    • Trigger animation

    7. Delay bằng expression (nâng cao nhẹ)

    Mục tiêu: mỗi phần tử trễ khác nhau mà vẫn dùng 1 slider


    Ý tưởng

    • Mỗi phần tử có index

    Ví dụ

    t = clamp((Progress/100) - index*0.05, 0, 1);
    t*100
    

    👉 Kết quả:

    • 1 slider → animate cả chuỗi (stagger)

    8. Control cho Data (kết hợp Ngày 10)

    Mục tiêu: điều khiển chart bằng slider


    Bước

    • Scale Y của bar:
    (Value * 5) * (Progress/100)
    

    👉 Progress = 0 → tất cả = 0
    👉 Progress = 100 → full chart


    9. Tạo Control Panel (chuẩn production)

    Mục tiêu: file dễ dùng lại


    Bước

    • Gom tất cả control:
      • Progress
      • Speed
      • Amplitude
    • Đặt tên rõ:
      • CTRL_Progress
      • CTRL_Speed

    👉 Khi giao file:

    • Người khác chỉ chỉnh control, không đụng layer

    10. Mini project — One Slider System

    Yêu cầu

    • 1 Slider: Progress
    • Điều khiển:
      • Scale (object chính)
      • Position (di chuyển)
      • Opacity (fade)
      • Repeater (offset)

    👉 1 thanh kéo → toàn bộ animation chạy


    11. Mini project — Controlled Chart

    Yêu cầu

    • Bar chart (Ngày 10)
    • Dùng Progress:
      • Animate toàn bộ chart
    • Có stagger bằng expression

    12. Checklist kỹ thuật

    • Có ít nhất 1 slider control
    • Dùng normalize (0–1)
    • Không hardcode giá trị lung tung
    • Có expression cho stagger
    • Control đặt tên rõ ràng

    13. Lỗi phổ biến

    1. Không normalize

    → Công thức rối, khó debug

    2. Mỗi object 1 logic riêng

    → Không còn là system

    3. Hardcode quá nhiều số

    → Không tái sử dụng được

    4. Không đặt tên control

    → File không dùng lại được


    14. Tư duy quan trọng

    • Ngày 10: dữ liệu điều khiển visual
    • Ngày 11:Bạn tạo lớp điều khiển nằm trên toàn bộ hệ thống

    Kiến trúc chuẩn

    • Layer 1: Visual (shape, text)
    • Layer 2: System (repeater, field)
    • Layer 3: Control (slider, expression)

    Công thức cốt lõi

    • Normalize:t = input / max
    • Map:output = min + t * range
    • Stagger:t = base – index * delay
  • Ngày 10 — Data-Driven Animation (CSV / JSON)

    Biến dữ liệu thành animation — lợi thế thực tế của Cavalry


    Mục tiêu kỹ thuật

    • Import CSV / JSON vào Cavalry
    • Bind (liên kết) dữ liệu → thuộc tính (text, scale, position)
    • Tạo bar chart animation tự cập nhật theo data
    • Hiểu cách xây template dùng lại

    1. Chuẩn bị dữ liệu (CSV)

    Tạo file CSV (rất quan trọng — làm đúng format)

    Mở Excel/Google Sheets → tạo bảng:

    Name,Value
    A,30
    B,55
    C,80
    D,45
    E,70
    

    Lưu:

    • File → Save as → .csv

    👉 Quy tắc:

    • Dòng 1 = header
    • Không ký tự lạ / khoảng trắng thừa

    2. Import vào Cavalry

    Bước

    • File → Import → Data (CSV/JSON)
    • Chọn file vừa tạo

    Kết quả

    • Xuất hiện Data Source trong scene

    3. Tạo bar chart (cấu trúc cơ bản)

    Mục tiêu: mỗi dòng = 1 cột


    Bước 1 — tạo Rectangle (bar gốc)

    • Width: 80
    • Height: 10 (tạm thời nhỏ)
    • Anchor: đặt bottom (quan trọng)

    👉 Anchor bottom giúp bar “mọc lên” từ đáy


    Bước 2 — Repeater

    • Count = số dòng data (5)
    • X spacing: 120

    4. Bind dữ liệu → chiều cao

    Mục tiêu: Value điều khiển Height


    Bước 1

    • Chọn Rectangle

    Bước 2

    • Tại Height:
      • Bind tới:
        • Value (từ CSV)

    Bước 3 — scale hệ số

    • Vì Value nhỏ, cần nhân:
      • Height = Value * 5–10

    👉 Kết quả:

    • Mỗi bar cao thấp theo data

    5. Bind text (label)

    Mục tiêu: hiển thị Name + Value


    Bước 1

    • Tạo Text dưới mỗi bar

    Bước 2

    • Bind:
      • Text = Name

    Bước 3 (tuỳ chọn)

    • Tạo Text khác:
      • Bind = Value

    👉 Mỗi cột có label riêng


    6. Animate bar chart

    Mục tiêu: cột “mọc lên”


    Bước 1

    • Animate Scale Y:
      • 0s: 0%
      • 1s: 100%

    Bước 2 — offset theo index

    • Delay: 0.1–0.2s

    👉 Kết quả:

    • Cột xuất hiện lần lượt

    7. Thêm easing chuẩn

    • Ease Out cho Scale
      → mọc nhanh, dừng mềm

    8. Auto update (điểm mạnh)

    Test

    Bước

    • Mở file CSV
    • Đổi:
      • Value (ví dụ 30 → 90)
    • Save → quay lại Cavalry

    👉 Kết quả:

    • Chart tự thay đổi

    9. Sorting (nâng cao nhẹ)

    Mục tiêu: sắp xếp cột theo Value


    Cách

    • Trong Data Source:
      • Sort by Value
      • Asc / Desc

    👉 Dùng cho:

    • Ranking animation

    10. Dùng JSON (khi phức tạp hơn)

    Ví dụ JSON

    [
      {"name": "A", "value": 30},
      {"name": "B", "value": 55}
    ]
    

    👉 JSON phù hợp:

    • Data lồng nhau
    • API / automation

    11. Mini project — Animated Chart

    Yêu cầu

    • ≥ 5 bars
    • Có:
      • Height bind từ data
      • Text label
      • Animation stagger
      • Easing

    12. Template hóa (rất quan trọng)

    Mục tiêu: dùng lại


    Bước

    • Giữ:
      • Data source
      • Binding
    • Khi cần:
      • Chỉ thay CSV

    👉 1 file → nhiều video khác nhau


    13. Checklist kỹ thuật

    • CSV đúng format
    • Bind đúng field (Name/Value)
    • Có scale hệ số
    • Anchor đúng (bottom)
    • Animation có offset

    14. Lỗi phổ biến

    1. CSV lỗi format

    → Không load được

    2. Quên scale Value

    → Bar quá nhỏ

    3. Anchor sai

    → Bar phóng từ giữa (xấu)

    4. Không offset

    → Tất cả mọc cùng lúc


    15. Tư duy quan trọng

    • Đây không còn là “animation thủ công”
    • Mà là:Hệ thống render dữ liệu thành motion

    Ứng dụng thực tế

    • Video báo cáo
    • Content TikTok (top list, stats)
    • Ads tự động
    • Dashboard animation

    Công thức

    • Visual:Repeater
    • Logic:Data binding
    • Motion:Offset + easing
  • Ngày 9 — Trim Path, Mask, Path Animation

    Tạo animation “vẽ nét”, reveal logo/text chuẩn branding


    Mục tiêu kỹ thuật

    • Làm chủ Path (đường vector)
    • Dùng Trim Path để “vẽ dần”
    • Dùng Mask để reveal có kiểm soát
    • Kết hợp với Offset / Easing để có nhịp chuyên nghiệp

    1. Chuẩn bị scene

    Bước

    • New Scene: 1920×1080, 3–4s, 30fps
    • Background tối

    2. Vẽ Path cơ bản

    Mục tiêu: tạo đường để animate


    Bước 1

    • Chọn Pen / Path Tool
    • Vẽ 1 đường cong đơn giản (S hoặc wave)

    Bước 2 (style)

    • Stroke:
      • Width: 6–10
      • Cap: Round
      • Join: Round

    👉 Cap tròn giúp đầu nét đẹp khi animate


    3. Trim Path (cốt lõi)

    Mục tiêu: “vẽ đường từ 0 → 100%”


    Bước 1

    • Chọn Path
    • Add → Trim Path

    Bước 2 — animate

    • Tham số:
      • Start
      • End

    Cách cơ bản:

    • 0s:
      • End = 0%
    • 1.5s:
      • End = 100%

    👉 Kết quả:

    • Đường được “vẽ ra”

    4. Tạo motion đẹp hơn

    Vấn đề

    Linear → nhìn kỹ thuật, không có cảm xúc


    Bước

    • Easing:
      • Ease In Out

    Nâng cao

    • Dùng Velocity Graph:
      • Bắt đầu chậm → nhanh → chậm

    5. Animate kiểu “draw + erase”

    Mục tiêu: nét chạy qua rồi biến mất


    Setup

    • 0s:
      • Start = 0%
      • End = 0%
    • 1s:
      • End = 100%
    • 2s:
      • Start = 100%

    👉 Kết quả:

    • Đầu nét chạy tới đâu, đuôi biến mất tới đó

    6. Offset nhiều path (logo style)

    Mục tiêu: nhiều nét vẽ lệch nhau


    Bước 1

    • Duplicate path (hoặc nhiều path khác nhau)

    Bước 2

    • Delay mỗi path:
      • 0.1–0.3s

    👉 Kết quả:

    • Animation có thứ tự, không đồng loạt

    7. Mask (reveal có kiểm soát)

    Mục tiêu: che/hiện nội dung theo vùng


    Bước 1

    • Tạo Rectangle (mask)

    Bước 2

    • Đặt lên trên object cần che

    Bước 3

    • Set:
      • Mask / Clipping (tuỳ Cavalry UI)

    Bước 4 — animate mask

    • Position X:
      • Trái → phải

    👉 Kết quả:

    • Nội dung “lộ ra” theo mask

    8. Text + Trim Path (rất hay dùng)

    Mục tiêu: text hiện theo nét vẽ


    Cách 1 (outline text)

    • Convert text → path (nếu có)
    • Dùng Trim Path

    Cách 2 (line chạy qua text)

    • Tạo 1 path ngang qua chữ
    • Animate Trim Path
    • Kết hợp Mask

    👉 Hiệu ứng giống:

    • Logo reveal
    • Signature animation

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

    Mục tiêu: nhiều nét chạy cùng lúc


    Bước

    • Path → Repeater (5–10 bản)
    • Offset theo index:
      • 0.05–0.1s

    👉 Tạo hiệu ứng “multi-line draw”


    10. Mini project 1 — Line Animation

    Yêu cầu

    • 1 path cong
    • Trim Path từ 0 → 100%
    • Có easing đẹp

    11. Mini project 2 — Logo Reveal (giả lập)

    Yêu cầu

    • 2–4 path
    • Vẽ lần lượt (offset)
    • Kết hợp mask hoặc fade

    12. Mini project 3 — Text Reveal

    Yêu cầu

    • 1 dòng text
    • Reveal bằng:
      • Mask hoặc line chạy qua

    13. Checklist kỹ thuật

    • Stroke có round cap
    • Trim Path không linear
    • Có offset nếu nhiều path
    • Mask không bị lệch layer

    14. Lỗi phổ biến

    1. Stroke đầu vuông

    → Nhìn thô ngay lập tức

    2. Không easing

    → Motion “kỹ thuật”, thiếu cảm xúc

    3. Path quá phức tạp

    → Khó kiểm soát timing

    4. Mask sai thứ tự layer

    → Không hoạt động


    15. Tư duy quan trọng

    • Trim Path không chỉ là hiệu ứng
    • Nó là:Công cụ kể chuyện bằng “đường đi”

    So sánh nhanh

    Cách thườngCách chuyên
    Fade inDraw bằng path
    Xuất hiện đột ngộtReveal có dẫn dắt
    Ít kiểm soátKiểm soát từng %

    Công thức dùng nhiều

    • Logo:Trim Path + Offset + Ease
    • Text:Mask + Line motion