Pulse — phóng to, thu nhỏ
Size dao động quanh 1.0, biên độ 0.12. Giảm 8 xuống 4 để nhịp nhanh hơn.
1 + 0.12*sin(time/8)Hiểu Expression trong DaVinci Resolve từ con số 0. Học qua 6 bài viết, xem minh họa SVG theo thời gian và sao chép 31 mẫu Expression cho Motion, Text+, Mask và các node thường dùng.
Mỗi bài có cách dùng, thông số cần dán, điều chỉnh công thức và cảnh báo các lỗi thường gặp.
Hiểu Simple Expression trong Fusion, cách bật Expression trên Inspector, nguyên lý time, sin, Point và những lỗi thường gặp.
Đọc bài & xem minh họa BÀI 02 · MOTION GRAPHICS8 công thức Fusion cho Pulse, xoay liên tục, trôi nổi, orbit, blink, fade, easing và rung nhẹ, kèm tham số và lưu ý.
Đọc bài & xem minh họa BÀI 03 · TEXT+ & TITLESLàm chữ xuất hiện dần bằng Write On (hỗ trợ dấu tiếng Việt) và tạo bộ đếm, phần trăm, nhãn shot trong Text+ Fusion.
Đọc bài & xem minh họa BÀI 04 · NODE WORKFLOWHướng dẫn tham chiếu giá trị node khác trong Fusion với Transform1.Size, Transform1.Center và GetValue để đồng bộ motion.
Đọc bài & xem minh họa BÀI 05 · MASK ELLIPSEDù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.
Đọc bài & xem minh họa BÀI 06 · ỨNG DỤNG CAOCon trỏ nhấp nháy, đếm giá tiền, đồng hồ mm:ss, chữ bung rộng, slide ease-out, nảy overshoot, rõ nét dần, đèn chập chờn, Glow thở và mask lộ hình.
Đọc bài & xem minh họaKéo thanh thời gian để thay đổi frame. Đây là mô phỏng toán học trong trình duyệt, không phải engine Fusion.
Size dao động quanh 1.0, biên độ 0.12. Giảm 8 xuống 4 để nhịp nhanh hơn.
1 + 0.12*sin(time/8)Demo mô phỏng công thức bằng JavaScript; hiệu ứng thực tế vẫn phải kiểm tra trong Fusion.
Chọn đúng loại tham số trước khi dán vào Fusion. Mỗi mẫu có giải thích và liên kết tới bài học.
Size dao động quanh 1.0, biên độ 0.12. Giảm 8 xuống 4 để nhịp nhanh hơn.
1 + 0.12*sin(time/8)Góc xoay tăng 3° mỗi frame; tốc độ tính theo frame, không tự cố định theo giây.
time*3Giữ X ở giữa khung hình; Y dao động ±0.08 trong hệ tọa độ chuẩn hóa.
Point(0.5, 0.5 + 0.08*sin(time/12))Cos điều khiển X, sin điều khiển Y; tạo vòng lặp liên tục quanh tâm khung hình.
Point(0.5+0.18*cos(time/20), 0.5+0.18*sin(time/20))Bật 12 frame, tắt 12 frame; hiệu ứng bật/tắt tức thời, không có fade.
iif(time%24 < 12, 1, 0)Blend liên tục thay đổi trong khoảng 0–1 theo sóng sin.
0.5 + 0.5*sin(time/10)Tăng Size từ 0 lên 1 trong 24 frame đầu, có tăng/giảm tốc; giữ ở 1 sau đó.
0.5 - 0.5*cos(min(1,max(0,(time-comp.RenderStart)/24))*pi)Cộng nhiều sóng với nhịp khác nhau tạo rung giả ngẫu nhiên; đây không phải nhiễu random thực.
Point(0.5+0.02*sin(time*1.7)+0.01*sin(time*3.1), 0.5+0.02*cos(time*1.4))Nhập chữ vào Styled Text (có thể dùng tiếng Việt), rồi dán Expression ở Write On → End; chữ hiện dần trong 45 frame.
min(1,max(0,(time-comp.RenderStart)/45))Tăng từ 0 đến 100 trong 60 frame; cố định ở 100 khi kết thúc.
Text(string.format("%d", math.floor(100*min(1,max(0,(time-comp.RenderStart)/60)))))Giống bộ đếm nhưng thêm dấu % bằng ký tự %% trong string.format.
Text(string.format("%d%%", math.floor(100*min(1,max(0,(time-comp.RenderStart)/60)))))Tạo SHOT 001, SHOT 002… mỗi 12 frame; .. dùng để nối chuỗi.
Text("SHOT " .. string.format("%03d", math.floor((time-comp.RenderStart)/12)+1))Transform2 bằng 80% Size của Transform1; yêu cầu node nguồn có tên Transform1.
Transform1.Size*0.8Transform2 dùng X của Transform1 cộng 0.12, giữ nguyên Y; đổi tên node nếu không phải Transform1.
Point(Transform1.Center.X+0.12,Transform1.Center.Y)Merge2 nhận giá trị Blend hiện tại từ Merge1.
Merge1.BlendĐọc Blend của Merge1 tại thời điểm trước đó 5 frame; chú ý biên đầu comp.
Merge1:GetValue("Blend",time-5)Width tăng từ 0.08 lên 0.45 trong 60 frame rồi lặp lại; vòng giãn dần từ tâm.
0.08 + (0.45 - 0.08) * ( (time/60) - floor(time/60) )Height lấy đúng giá trị Width của chính node để vòng luôn tròn; nếu Viewer thấy méo, xem lưu ý trong bài.
self.WidthLevel giảm từ 1 xuống khoảng 0.05 theo hàm mũ: vòng rõ lúc đầu rồi tan nhanh.
exp( -3 * ( (time/60) - floor(time/60) ) )Level giảm đều từ 1 về 0 trong 60 frame; dùng thay dòng exp khi muốn fade đều.
1 - ( (time/60) - floor(time/60) )Width tăng từ 0 lên 1 trong 20 frame, nhanh lúc đầu rồi chậm dần; dùng làm mask lộ hình.
1 - pow(1 - min(1,max(0,(time-comp.RenderStart)/20)), 3)Thêm con trỏ | sau chữ: hiện 12 frame, ẩn 12 frame; đổi nội dung trong dấu nháy.
Text("EDIT KHÔNG KHÓ" .. iif(time%24 < 12, "|", ""))Số tăng từ 0 lên 1.250.000đ trong 60 frame, tự thêm dấu chấm ngăn cách hàng nghìn; đổi 1250000 thành giá của bạn.
Text(string.gsub(string.reverse(string.gsub(string.reverse(tostring(math.floor(1250000*min(1,max(0,(time-comp.RenderStart)/60))))), "(%d%d%d)", "%1.")), "^%.", "") .. "đ")Đếm mm:ss theo FPS của comp, không cần nhập tay FPS.
Text(string.format("%02d:%02d", math.floor(time/comp:GetPrefs("Comp.FrameFormat.Rate")/60), math.floor(time/comp:GetPrefs("Comp.FrameFormat.Rate"))%60))Khoảng cách chữ từ 1.8 giảm mượt về 1.0: kiểu tiêu đề mở đầu.
1 + 0.8*exp(-max(0,time-comp.RenderStart)/12)Chữ hiện nhanh lúc đầu rồi chậm dần trong 45 frame.
1 - pow(1 - min(1,max(0,(time-comp.RenderStart)/45)), 3)Trượt từ mép trái (X = 0) về giữa khung trong 20 frame, giảm tốc mượt.
Point(0.5 - 0.5*pow(1-min(1,max(0,(time-comp.RenderStart)/20)),3), 0.5)Size từ 0 vọt qua 1 rồi dao động tắt dần quanh 1.0.
1 - exp(-0.25*max(0,time-comp.RenderStart))*cos(0.5*max(0,time-comp.RenderStart))Blur Size 20 giảm theo hàm mũ về 0: ảnh mờ rồi rõ nét.
20*exp(-max(0,time-comp.RenderStart)/10)Gain dao động nhẹ khoảng ±0.08 nhờ hai sóng sin lệch nhịp.
1 + 0.08*sin(time*0.9)*sin(time*2.3)Cường độ Glow dao động giữa 0.2 và 0.8.
0.5 + 0.3*sin(time/10)Point cho Center; số cho Size, Angle, Blend; Text cho Styled Text.
Cùng công thức sẽ chạy khác tốc độ theo giây khi FPS thay đổi.
Typewriter nên dùng Write On; string.sub có thể làm hỏng dấu UTF-8.
Giá trị công thức đã đối chiếu trong Resolve Studio 21.1; hình render và phiên bản khác cần anh em kiểm tra lại.
Nguồn: Blackmagic Design — tài liệu chính thức DaVinci Resolve 21.1, Chương 73 — bản tra cứu bên thứ ba, Fusion Expressions Cookbook. Tất cả sơ đồ, hình và mô phỏng là minh họa gốc xây bằng SVG/HTML/CSS, không phải ảnh giao diện DaVinci Resolve; giá trị của các công thức đã được đối chiếu bằng script trong DaVinci Resolve Studio 21.1 (macOS); hình render thực tế và các phiên bản Resolve khác chưa được kiểm tra.
Khóa Fusion 04 buổi đi từ tư duy Node, Animation đến Motion Graphic, Tracking và Composition 3D.