EKK Tools - Edit Không Khó
FusionCập nhật 2026-10-27Tác giả: Nguyễn Hoà

Expression cho Mask Ellipse: tạo vòng tròn phát sáng lan tỏa trong Fusion

Dùng Width, Height, Level của Mask Ellipse với Expression để tạo vòng tròn phát sáng lan ra rồi tan dần, lặp tự động, kèm bảng giá trị theo frame.

Answer

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

  1. 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.
  2. 2Thêm node Ellipse (Mask) và nối vào Effect Mask của node vừa thêm.
  3. 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.
  4. 4Nối tiếp một node Glow để vòng có quầng sáng, rồi Merge lên nền.
  5. 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

Expression
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

Expression
self.Width

Height 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

Expression
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:

Expression
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)

FrameWidth = HeightLevel (exp)Level (fade đều)
00.0801.0001.000
150.1730.4720.750
300.2650.2230.500
450.3580.1050.250
590.4440.0520.017
600.0801.0001.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

Expression
(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ả):

Expression
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à Level60 → 30
Vòng nhỏ hơn lúc bắt đầuĐổi 0.080.08 → 0.02
Vòng lớn hơn lúc kết thúcĐổi 0.45 ở dòng Width0.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

Expression
0.08 + 0.37*((time+30)%60)/60

Dán vào: Ellipse2 → Level

Expression
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.

Expression
(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.

When to use

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.
When not to use

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.
FAQ

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.

Nguồn tham khảo

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.

Author

Nguyễn Hoà – Edit Không Khó

Nguyễn Hoà - Editor và Trainer của Edit Không Khó
Nguyễn Hoà

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ả →
Related content