Trả lời ngắn
Vòng tròn phát sáng lan ra từ tâm rồi tan dần là hiệu ứng quen thuộc ở intro công nghệ, nút bấm hay radar. Với Mask Ellipse và vài dòng Expression, anh em tạo được vòng lặp tự động mà không cần đặt keyframe: Width làm vòng giãn ra, Height bám theo Width để vòng luôn tròn, Level làm vòng mờ dần.
Xem chuyển động minh họa ngay trong thư viện: vòng lan tỏa kèm Level tan nhanh, vòng lan tỏa kèm fade đều hoặc chỉ Width.
1. Ý tưởng: vòng tròn là Ellipse tắt Solid
Mask Ellipse mặc định là hình elip đặc. Để được vòng tròn, tắt Solid để chỉ còn đường viền, rồi chỉnh độ dày bằng Border Width. Các thông số mà bài này điều khiển bằng Expression là Width, Height và Level của Ellipse.
2. Dựng node
- 1Thêm node
Background(màu trắng hoặc xanh ngọc) hoặc dùng sẵn ảnh/clip muốn hiện qua vòng. - 2Thêm node
Ellipse(Mask) và nối vào Effect Mask của node vừa thêm. - 3Chọn Ellipse: tắt Solid, đặt Border Width khoảng
0.01, thêm một chút Soft Edge nếu muốn viền mềm. - 4Nối tiếp một node
Glowđể vòng có quầng sáng, rồiMergelên nền. - 5Nhấp chuột phải vào Width, Height, Level của Ellipse → Expression và dán các dòng ở mục 3.
Các bước dựng node dựa trên tên thông số của Ellipse trong Fusion (Solid, Border Width, Soft Edge, Level, Width, Height). Hình ảnh vòng sáng thực tế phụ thuộc nền, Glow và độ phân giải của anh em; hãy xem lại trong Viewer.
3. Bốn dòng Expression
Dán vào: Ellipse1 → Width
0.08 + (0.45 - 0.08) * ( (time/60) - floor(time/60) )Width tăng từ 0.08 lên 0.45 trong 60 frame rồi quay lại 0.08 và lặp tiếp.
Dán vào: Ellipse1 → Height
self.WidthHeight lấy đúng giá trị Width của chính node Ellipse. Cách này tương đương việc nối Height với Width bằng Pick Whip. self đại diện cho node đang chứa Expression nên không phụ thuộc tên node.
Dán vào: Ellipse1 → Level
exp( -3 * ( (time/60) - floor(time/60) ) )Level giảm từ 1 xuống khoảng 0.05 theo hàm mũ: vòng sáng rõ lúc mới nở, tan nhanh khi lớn dần.
Muốn fade đều thay vì tan nhanh, dùng dòng sau cho Level:
1 - ( (time/60) - floor(time/60) )Level giảm tuyến tính từ 1 về 0 trong 60 frame.
4. Giá trị theo frame (đã đối chiếu trong Resolve)
| Frame | Width = Height | Level (exp) | Level (fade đều) |
|---|---|---|---|
| 0 | 0.080 | 1.000 | 1.000 |
| 15 | 0.173 | 0.472 | 0.750 |
| 30 | 0.265 | 0.223 | 0.500 |
| 45 | 0.358 | 0.105 | 0.250 |
| 59 | 0.444 | 0.052 | 0.017 |
| 60 | 0.080 | 1.000 | 1.000 |
Các giá trị trên là kết quả đọc từ Fusion của DaVinci Resolve Studio 21.1 và khớp phép tính ở mọi frame đã kiểm tra, kể cả khi sang chu kỳ thứ hai (frame 60, 61, 90, 119, 120).
5. Giải mã phần dùng chung
(time/60) - floor(time/60)time/60: số chu kỳ đã chạy, mỗi chu kỳ là 60 frame.floor(...): bỏ phần thập phân, chỉ giữ số chu kỳ nguyên.- Hiệu của hai phần cho ra phần lẻ từ 0 đến 1 và quay về 0 sau mỗi 60 frame; đây là nhịp để Width, Level bám theo.
Cách viết ngắn tương đương (đã kiểm tra cho cùng kết quả):
0.08 + 0.37*(time%60)/60Ở đây 0.37 chính là 0.45 - 0.08.
6. Chỉnh nhanh mà không cần lập trình
| Muốn điều chỉnh | Đổi phần nào? | Ví dụ |
|---|---|---|
| Vòng lan nhanh/chậm hơn | Đổi số 60 ở cả Width, Height (qua Width) và Level | 60 → 30 |
| Vòng nhỏ hơn lúc bắt đầu | Đổi 0.08 | 0.08 → 0.02 |
| Vòng lớn hơn lúc kết thúc | Đổi 0.45 ở dòng Width | 0.45 → 0.7 |
| Tan nhanh/chậm hơn | Đổi hệ số -3 ở dòng Level | -3 → -5 (nhanh hơn) |
7. Nâng cấp: hai vòng so le
Nhân đôi node Ellipse thành Ellipse2, giữ Height = self.Width, rồi dùng hai dòng lệch pha 30 frame để vòng thứ hai nở ra giữa nhịp của vòng đầu:
Dán vào: Ellipse2 → Width
0.08 + 0.37*((time+30)%60)/60Dán vào: Ellipse2 → Level
exp(-3*((time+30)%60)/60)8. Lưu ý khi dùng
Giật nhẹ ở điểm lặp: dòng Level dạng mũ kết thúc ở khoảng 0.05 (chưa về 0) rồi quay lại 1, nên có thể thấy vòng nhỏ "bật" lên ở frame lặp. Muốn kết thúc về đúng 0, nhân thêm phần fade đều.
(1 - ( (time/60) - floor(time/60) )) * exp(-3 * ( (time/60) - floor(time/60) ))Vòng bị méo: khi Height = Width mà vòng trong Viewer nhìn như hình elip, hãy nhân hoặc chia Height cho tỉ lệ khung hình (ví dụ khung 16:9 khoảng 1.78) cho đến khi vòng tròn. Phần này chưa được xác minh bằng hình render nên cần kiểm tra trên comp của anh em.
Nhịp tính theo frame: 60 là 60 frame, không phải 60 giây. Với video 30fps, chu kỳ là 2 giây; với 60fps là 1 giây. Xem thêm bài Expression là gì? về time.
Khi nào nên dùng
- Cần vòng tròn lan tỏa lặp tự động cho intro, nút bấm, radar hoặc điểm nhấn trên bản đồ.
- Muốn chỉnh tốc độ và kích thước vòng bằng vài con số thay vì sắp xếp lại keyframe.
Khi nào chưa nên dùng
- Cần chuyển động khớp BPM hoặc đọc âm thanh: các công thức không tự khớp nhịp nhạc.
- Cần vòng chỉ chạy một lần: nên dùng mẫu một lần với `time-comp.RenderStart` trong bài Motion thay vì lặp.
Câu hỏi liên quan
Làm sao để Height luôn bằng Width của Mask Ellipse?
Dán `self.Width` vào Expression của Height. Cú pháp này đã được kiểm tra trong Fusion của DaVinci Resolve Studio 21.1: Height nhận đúng giá trị Width ở mọi frame.
Vì sao Mask Ellipse cần tắt Solid để thành vòng?
Khi Solid bật, mask là hình đặc. Tắt Solid chỉ giữ đường viền, độ dày điều chỉnh bằng Border Width, từ đó tạo ra hình vòng tròn.
Chu kỳ 60 trong công thức là mấy giây?
Là 60 frame. Ở 30fps tương đương 2 giây, ở 60fps tương đương 1 giây; muốn đổi nhịp, thay số 60 ở cả ba dòng.
Tài liệu chính thức
Nội dung được đối chiếu với tài liệu chính thức của nhà phát triển và nhà sản xuất liên quan. Tên menu hoặc tính năng có thể thay đổi theo phiên bản phần mềm và hệ điều hành.
Nguyễn Hoà – Edit Không Khó

Editor & Trainer, chia sẻ DaVinci Resolve, Fusion, CapCut, Motion Graphic và Color Grading theo hướng hiểu bản chất.
Xem trang tác giả →