MotionArray
KOL
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 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:
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ị đó.
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.
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.
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!
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 độ.
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.
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:
[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();
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.
Liệu trên có vẻ khó hiểu. Đây là cách anh ấy chia nhỏ valueAtTime:
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.
Một trong những Expression khá hay trong After Effects là Time Expression.
Time Expression là gì?
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;
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.
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!
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.
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();
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