Cách sử dụng biểu thức Time Expression trong After Effect

Nếu bạn muốn tạo ra 1 chuyển động phức tạp mà không muốn dùng tay để kéo thả tạo , nhưng muốn tránh tạo ra hàng trăm keyframe bằng tay, hãy thử sử dụng các Expression(biểu thức). Expression là một biểu thức có thể gán giá trị được tính toán ra vào thuộc tính đối tượng tại 1 keyframe.

Một trong những Expression khá hay trong After Effects là Time Expression.

Time Expression là gì?


Time_Readout.gif


Time Expression trong After Effects trả về thời gian hiện tại của tác phẩm tính bằng giây. Bạn có thể viết biểu thức thời gian trong After Effects bằng cách nhập lênh sau:

Mã:
time;

Các giá trị được tạo bởi biểu thức này có thể được sử dụng để điều khiển chuyển động bằng cách kết nối một giá trị thuộc tính với biểu thức.
Trong ví dụ trên tôi đã đã sử dụng một layer văn bản để xem trước giá trị được tạo bởi biểu thức Time. Khi video đang phát, bạn sẽ thấy các giây được tính trong bảng composition thông qua layer văn bản. Tất cả những gì tôi đã làm được sử dụng một biểu thức thời gian đơn giản để After Effects tạo ra các giá trị đó.

Mã:
time.toFixed(2);

Làm thế nào để sử dụng Time Expression?

Cơ bản cách để chèn Expresstion


[bhl]Khi muốn đặt key một tham số bất kỳ thì bạn chỉ việc click vào biểu tượng cái đồng hồ trước tham số. Và khi muốn sử dụng expression trên tham số đó bạn chỉ việc giữ phím Alt và nhấn vào biểu tượng cái đồng hồ thì AE sẽ hiện ra 1 hộp thoại để bạn nhập biểu thức vào.

Nếu không muốn sử dụng Expression nữa thì chỉ việc xóa biểu thức đi, hoặc nhấn vào dấu = để không áp dụng biểu thức cho đối tượng.[/bhl]

Để giúp minh họa giải thích chính xác những gì tôi muốn nói, tôi muốn bạn nghĩ về thời gian theo một cách mới. Hãy thử nghĩ về thời gian là con số mà bạn có thể tự tạo ra chứ không phải dựa theo bộ đếm thời gian.

Ví dụ: Nếu tôi nhân đôi Time Expression, nó sẽ hiện 8 giây chứ không phải 4 giây.

Mã:
time*2;

Double_Time_Readout.gif


Tôi sẽ thêm biểu thức thời gian vào thuộc tính xoay vòng. Thuộc tính xoay vòng sẽ trả về 1 độ mỗi 1 giây.

real_time_Rotation-v2.gif


Cứ mỗi giây, chế phẩm chạy vòng quay sẽ tăng thêm một độ. Nhưng, ví dụ đó khá nhàm chán và bạn có thể không thấy nhiều thay đổi lắm. Hãy tăng tốc mọi thứ lên một chút!

Time_Multiplied-Rotation-v2.gif


Trong ví dụ đầu tiên, chúng tôi thử nghiệm 1 độ cho mỗi giây. Vì vậy, nếu chúng ta muốn nó quay đủ vòng tròn, chúng ta cần biết có bao nhiêu độ trong 1 vòng quay; đó là 360 độ.

Mã:
time*360;

Bằng cách nhân thời gian với 360, After Effects sẽ tăng tốc quá trình theo cấp số nhân.

Những ví dụ tuyệt vời về Time Expression

[hl]1[/hl] Xoay nhiều layer


Dưới đây là một ví dụ về các vòng quay ở các tốc độ khác nhau.

Offset_Spins.gif


Tôi lấy Time Expression và nhân chúng với số lượng khác nhau!

Để xoay, nhân thời gian với 360, là một vòng quay, sau đó chia nó cho số giây bạn muốn một vòng quay xảy ra. Đây là đoạn mã đại diện cho ý tưởng:

Mã:
// One full rotation every 2 seconds
time*(360/2);

[hl]2[/hl]Tạo chuyển động chờ


Một cách thực sự hữu ích để khai thác Time Expression là tạo ra các chuyển động bị trì hoãn. Chúng ta thực sự có thể yêu cầu After Effects tua về
phía trước và tua lùi lại. Đối với điều này, tôi sẽ giới thiệu một giá trị biểu thức mới là valueAtTime();

Delayed_time_.gif


Trong ví dụ này, tôi đã yêu cầu After Effects xem xét vị trí x của một layer khác và sau đó bảo nó trì hoãn nửa giây. Thật đáng ngạc nhiên, mã rất đơn giản và bằng cách sử dụng chỉ mục của một layer, bạn có thể lặp đi lặp lại nhiều lần với mỗi layer có độ trễ riêng. Lưu ý: Biểu thức chỉ mục trong After Effects kéo một giá trị dựa trên thứ tự của layer trong timeline.

Mã:
thisComp.layer (index + 1) .transform.xPocation.valueAtTime (time - .5)

Liệu trên có vẻ khó hiểu. Đây là cách anh ấy chia nhỏ valueAtTime:

Mã:
var halfASecond = 0.5;
var now = time;
var halfASecondAgo = now - halfASecond;
valueAtTime(halfASecondAgo);

Tóm lại, valueAtTime là một biểu thức cho After Effects kéo một giá trị từ một thuộc tính (scale, position, slider,...) trong một thời gian khai báo.

Thực hành


Nếu bạn muốn thử một thứ gì đó thú vị, tôi sẽ gửi cho bạn một tệp dự án đơn giản.



Nguồn: schoolofmotion.com

 

Đính kèm

  • time.png
    time.png
    171.2 KB · Lượt xem: 0
có ai biết cách làm màu gradient chạy theo cái kim đồng hồ như này là làm như thế nào không
Offset_Spins.gif
 
Theo mình thì cách đơn giản nhất là bạn pre compose layer hình tròn lại rồi sử dụng expression như kim đồng hồ
 
Back
Bên trên