Chuyển tới nội dung chính

Trợ giúp Hoạt ảnh Mắt

Ngoài khớp môi, plugin Runtime MetaHuman Lip Sync còn bao gồm hai tiện ích hỗ trợ tùy chọn để tạo hoạt ảnh cho mắt MetaHuman:

  • Tự động chớp mắt: một công cụ hỗ trợ tạo ra các chuyển động chớp mắt tự nhiên, ngẫu nhiên trên MetaHuman
  • Định hướng mắt: một node trong Animation Blueprint giúp mắt của MetaHuman nhìn về một vị trí trong không gian thế giới

Các tính năng này hoàn toàn độc lập với lip sync và có thể được sử dụng riêng lẻ, kết hợp với nhau, hoặc kết hợp với các node lip sync. Chúng được thiết kế như những công cụ hỗ trợ nhẹ, dễ tích hợp để thêm hành vi mắt sống động như thật mà không cần phải tạo thủ công.

Bản xem trước tính năng

Chớp mắt tự động: chớp mắt tự động
Ánh mắt hướng tới: theo dõi camera của người chơi
Ánh mắt: theo dõi một diễn viên mục tiêu đang chuyển động

Hướng dẫn bằng video

Hướng dẫn đầy đủ về cả hai trình trợ giúp, bao gồm cả giải pháp thay thế cho rig kế thừa.

Khi nào nên sử dụng các trình trợ giúp này

Nếu quy trình hoạt hình khuôn mặt của bạn đã bao gồm chớp mắt và ánh mắt động, bạn có thể bỏ qua trang này. Các công cụ hỗ trợ này tồn tại cho những trường hợp bạn muốn hành vi mắt sống động như thật mà không cần tự tạo, ví dụ, khi chuỗi hoạt hình của bạn không bao gồm chớp mắt, hoặc khi bạn cần đôi mắt động theo dõi một mục tiêu chuyển động (điều mà chuỗi hoạt hình tĩnh không thể làm được). Chúng cũng có thể được xếp lớp lên trên các hoạt hình khuôn mặt hiện có để bổ sung các phần còn thiếu, chẳng hạn như chớp mắt trên một chuỗi chỉ hoạt hình miệng.

Trình trợ giúp Auto Blink tạo ra các chuyển động chớp mắt ngẫu nhiên, tự nhiên bằng cách điều khiển các đường cong CTRL_L_eye_blinkCTRL_R_eye_blink của MetaHuman Face Control Rig.

Cách thức hoạt động

Mỗi frame, bạn gọi Update MetaHuman Auto Blink từ Event Graph của Face Animation Blueprint và truyền vào delta time của frame đó. Hàm này:

  1. Theo dõi trạng thái theo từng nhân vật (thời gian chớp mắt tiếp theo, giai đoạn mở/đóng hiện tại, v.v.) được khóa theo AnimInstance gọi
  2. Trả về hai giá trị float trong phạm vi 0..1, một cho mắt trái và một cho mắt phải, biểu thị mức độ nhắm hiện tại của mỗi mắt
  3. Sau đó, bạn lưu các giá trị này vào biến Blueprint và đưa chúng vào nút Control Rig trong Anim Graph

Thiết lập

Hai bước: thêm lệnh gọi blink vào Event Graph của bạn, sau đó đưa các giá trị vào một node Control Rig trong Anim Graph.

Trong Face Animation Blueprint của bạn (ví dụ: Face_AnimBP hoặc phiên bản đã nhân bản/sao chép của bạn, xem Hướng dẫn thiết lập), hãy mở Event Graph và thêm phần sau vào Event Blueprint Update Animation:

  1. Gọi Update MetaHuman Auto Blink
  2. Kết nối Delta Time X (từ sự kiện) với Delta Seconds
  3. (Tùy chọn) Cấu hình struct Config. Các giá trị mặc định đã trông tự nhiên
  4. Chuyển Left Blink ValueRight Blink Value thành biến Blueprint (ví dụ: LeftBlinkValue, RightBlinkValue)

Auto Blink Event Graph setup

Trong Anim Graph của cùng một Animation Blueprint:

  1. Đặt một node Control Rig để điều khiển các đường cong chớp mắt. Vị trí chính xác của nó phụ thuộc vào việc bạn có kết hợp Auto Blink với các hoạt ảnh khuôn mặt khác (lip sync, chuỗi tùy chỉnh, v.v.) hay không:
    • Không có hoạt ảnh khuôn mặt nào khác: đặt node Control Rig trực tiếp vào chuỗi chính, trước Output Pose.
    • Kết hợp với lip sync và/hoặc hoạt ảnh khuôn mặt khác: kết nối node Control Rig này vào node Layered blend per bone thay vì đặt trực tiếp vào chuỗi, xem mẹo bên dưới.
  2. Trong bảng Details của node, đặt Control Rig Class (Control Rig Asset Reference trong UE 5.8+) thành Control Rig khuôn mặt MetaHuman của bạn. Đường dẫn thường là:
    • /All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig
    • Dự án của bạn có thể có đường dẫn khác tùy thuộc vào cách MetaHuman được nhập vào.
  3. Trong bảng Details, mở rộng phần Input và bật Use Pin cho:
    • CTRL_L_eye_blink
    • CTRL_R_eye_blink
  4. Kết nối biến LeftBlinkValue của bạn với CTRL_L_eye_blink
  5. Kết nối biến RightBlinkValue của bạn với CTRL_R_eye_blink

Auto Blink Anim Graph setup

Vị trí đặt rất quan trọng

Nếu bạn không kết hợp với hoạt ảnh khuôn mặt khác, hãy đặt nút Control Rig sau các nút blend lip sync (và bất kỳ nút hoạt ảnh khuôn mặt nào khác) trong chuỗi để các giá trị blink không bị ghi đè. Nếu bạn kết hợp với lip sync hoặc hoạt ảnh khuôn mặt khác, hãy làm theo hướng dẫn Kết hợp với Hoạt ảnh Hiện có và kết nối nút Control Rig này với đầu vào Base Pose của nút Layered blend per bone thay vào đó, nút layered blend giữ cho cả hai hoạt động cùng lúc, thay vì một bên chỉ đơn giản ghi đè bên kia.

Cấu hình

Nút Update MetaHuman Auto Blink chấp nhận một struct Config tùy chọn. Các giá trị mặc định đã trông tự nhiên đối với hầu hết các nhân vật, hãy mở rộng bên dưới nếu bạn muốn tinh chỉnh hành vi.

Thuộc tính cấu hình

Thời gian

Thuộc tínhMặc địnhMô tả
Thời gian tối thiểu giữa các lần chớp mắt2,0 giâyKhoảng thời gian tối thiểu giữa các lần chớp mắt khi mắt mở hoàn toàn.
Thời gian tối đa giữa các lần chớp mắt4,0 giâyKhoảng thời gian tối đa giữa các lần chớp mắt. Khoảng thời gian thực tế được chọn ngẫu nhiên trong khoảng từ tối thiểu đến tối đa.
Thời gian giữ mắt nhắm tối thiểu0,04 giâyThời gian tối thiểu mắt giữ nguyên trạng thái nhắm hoàn toàn.
Thời gian giữ mắt nhắm tối đa0,08 giâyThời gian tối đa mắt giữ nguyên trạng thái nhắm hoàn toàn.

Nội suy

Thuộc tínhMặc địnhMô tả
Tốc độ nội suy khi nhắm mắt35.0Tốc độ khi nhắm mắt. Con người nhắm mắt nhanh hơn mở mắt, vì vậy giá trị này được đặt cao hơn tốc độ mở mắt một cách có chủ đích.
Tốc độ nội suy khi mở mắt18.0Tốc độ khi mở mắt.
Ngưỡng nhắm hoàn toàn0.97Giá trị mà tại đó chớp mắt được coi là "nhắm hoàn toàn" và giai đoạn giữ nguyên bắt đầu.
Ngưỡng mở hoàn toàn0.02Giá trị mà tại đó chớp mắt được coi là "mở hoàn toàn" và lần chớp mắt tiếp theo được lên lịch.

Misc

Thuộc tínhMặc địnhMô tả
Mắt độc lậpfalseKhi true, mắt trái và mắt phải chớp độc lập với thời gian riêng biệt. Khi false (mặc định), cả hai mắt chớp đồng bộ hoàn hảo.
bEnabled (chân hàm)trueKhi false, mắt từ từ mở lại và quá trình chớp mắt tạm dừng. Hữu ích cho các cảnh cắt, cảnh ngủ, chết, v.v.

Điều khiển Runtime

Bạn cũng có thể gọi Reset Auto Blink State để xóa rõ ràng trạng thái nội bộ cho một AnimInstance cụ thể (ví dụ: khi hồi sinh nhân vật hoặc chuyển đổi trạng thái cinematic).

Nhắm mắt

Helper Eyes Aim là một nút Animation Blueprint (Runtime MetaHuman Eyes Aim) giúp ánh mắt của nhân vật theo dõi một vị trí trong không gian thế giới, ví dụ như camera của người chơi, một actor khác, hoặc bất kỳ mục tiêu chuyển động nào. Nó hỗ trợ giới hạn yaw/pitch, làm mượt, bảo vệ chống đảo mắt khi mục tiêu đi qua phía sau đầu, và tùy chọn vi chuyển động mắt (micro-saccades) để tăng tính chân thực.

Chọn một Chế độ

Nút hỗ trợ hai chế độ, được chọn qua menu thả xuống Mode trong bảng Details của nút:

ModeNó điều khiển cái gìNơi đặt nó
Đường cong (mặc định)Các đường cong điều khiển ánh mắt của Control Rig khuôn mặt (CTRL_expressions_eyeLook*)Trong Face Animation Blueprint (ví dụ: Face_AnimBP), trước nút Control Rig
XươngCác xương FACIAL_L_Eye / FACIAL_R_Eye trực tiếp, bỏ qua Control RigTrong Face Post Process Animation Blueprint (ví dụ: Face_PostProcess_AnimBP), sau nút AnimNode_RigLogic

Chế độ Curves là chế độ mặc định được khuyến nghị. Nó kết hợp mượt mà với các hệ thống khuôn mặt dựa trên curve khác (lip sync, biểu cảm, ARKit blendshapes, v.v.), vì các giá trị được kết hợp thông qua quá trình đánh giá Control Rig thông thường thay vì tranh chấp qua các phép biến đổi xương.

Khi chế độ Curves không hoạt động, hãy sử dụng chế độ Bones.

Trên một số biến thể MetaHuman (đặc biệt là các rig cũ, bao gồm một số rig được tải xuống qua Quixel Bridge), các đường cong eye-look không thực sự điều khiển mắt. Triệu chứng có thể thấy rõ là mắt nhìn xuống dưới với đồng tử gần như bị che khuất khi node chế độ Curves đang hoạt động, bất kể vị trí mục tiêu là gì.

Nếu bạn thấy điều này, hãy chuyển sang chế độ Bones. Chế độ Bones trực tiếp xoay các xương mắt, vì vậy nó hoạt động trên mọi biến thể MetaHuman bất kể Control Rig được kết nối như thế nào. Xem tab Bones trong Thiết lập bên dưới.

Thiết lập

Thiết lập mặc định. Node nằm trong Face Animation Blueprint tiêu chuẩn và điều khiển các đường cong ánh nhìn của Control Rig trên khuôn mặt.

Hai bước: thêm node vào Anim Graph của bạn, sau đó cung cấp vị trí mục tiêu từ Event Graph.

1. Anim Graph: thêm node

Trong Animation Blueprint khuôn mặt của bạn, tại Anim Graph:

  1. Thêm một node Runtime MetaHuman Eyes Aim
  2. Để Mode ở chế độ Curves trong bảng Details
  3. Đặt nó sau tất cả logic khuôn mặt khác có thể ghi vào các đường cong nhìn mắt (lip sync, hoạt ảnh tùy chỉnh, v.v.), cùng nguyên tắc với node Auto Blink Control Rig
  4. Kết nối pose hiện có với Source Pose
  5. Kết nối đầu ra với node tiếp theo trong chuỗi của bạn (hoặc Output Pose)
  6. Tạo một biến Blueprint Vector (ví dụ: TargetWorldLocation) và kết nối nó với chân Target World Location của node. Bạn sẽ cập nhật biến này từ Event Graph trong bước tiếp theo.

Eyes Aim Anim Graph setup

2. Event Graph: cung cấp một vị trí mục tiêu

Chân Target World Location mong đợi một FVector trong không gian thế giới. Một trường hợp phổ biến là để MetaHuman nhìn vào camera của người chơi. Trong Event Blueprint Update Animation:

  1. Lấy Player Camera Manager (Player Index 0)
  2. Kiểm tra Is Valid
  3. Nếu hợp lệ, gọi Get Camera Location
  4. Lưu trữ nó vào biến Blueprint TargetWorldLocation

Eyes Aim, tracking the camera

Để theo dõi một actor bất kỳ (NPC, vật phẩm, điểm quan tâm), hãy lấy vị trí của actor đó mỗi frame và lưu vào cùng một biến. Đối với điểm nhìn cố định, hãy đặt Target World Location một lần hoặc dùng giá trị hằng số trong bảng Details của node.

Cấu hình

Tất cả các cài đặt đều được hiển thị trên bảng Details của node Runtime MetaHuman Eyes Aim.

Nhắm & Khóa

Mục tiêu

Thuộc tínhMặc địnhMô tả
ModeCurvesChọn cách mắt được điều khiển. Xem Chọn Chế Độ.
Vị Trí Mục Tiêu Trong Thế Giới(0,0,0)Điểm trong không gian thế giới mà mắt nhìn vào. Được hiển thị dưới dạng pin theo mặc định.
bEnabledtrueKhi false, mắt từ từ trở về phía trước và bỏ qua mục tiêu. Được hiển thị dưới dạng pin theo mặc định.

Kẹp

Thuộc tínhMặc địnhMô tả
Độ lệch Yaw Tối đa (Độ)35°Độ lệch ngang (yaw) tối đa so với hướng nhìn về phía trước của đầu. Giới hạn từ 0 đến 80.
Độ lệch Pitch Tối đa (Độ)25°Độ lệch dọc (pitch) tối đa so với hướng nhìn về phía trước của đầu. Giới hạn từ 0 đến 80.
Chống Xoay Ngược Ra SautrueNgăn mắt bị xoay ngược khi mục tiêu đi qua phía sau đầu.
Làm mượt & Chuyển động mắt nhanh

Làm mượt

Thuộc tínhMặc địnhMô tả
Tốc độ nội suy12.0Tốc độ làm mượt chuyển động mắt. Cao hơn = nhanh gọn hơn, thấp hơn = chậm rãi hơn.

Chuyển động mắt nhanh

Vi chuyển động vi mô là những chuyển động mắt ngẫu nhiên, cực nhỏ mà mắt thật liên tục thực hiện. Việc thêm chúng giúp tránh vẻ ngoài "mắt chết" của việc theo dõi hoàn toàn mượt mà.

Thuộc tínhMặc địnhMô tả
Bật chuyển động mắt vi môtrueBật/tắt chuyển động mắt vi mô.
Biên độ dao động ngang của chuyển động mắt vi mô (độ)1,5°Độ lệch ngang tối đa cho mỗi chuyển động mắt vi mô. Giá trị nhỏ (1–2°) tạo cảm giác tự nhiên; giá trị lớn hơn trông giật cục.
Biên độ dao động dọc của chuyển động mắt vi mô (độ)1,0°Độ lệch dọc tối đa cho mỗi chuyển động mắt vi mô. Thường nhỏ hơn một chút so với biên độ dao động ngang.
Khoảng thời gian tối thiểu giữa các chuyển động mắt vi mô0,6 giâyThời gian tối thiểu giữa các chuyển động mắt vi mô.
Khoảng thời gian tối đa giữa các chuyển động mắt vi mô2,5 giâyThời gian tối đa giữa các chuyển động mắt vi mô. Giá trị lớn hơn tạo cảm giác bình tĩnh hơn, giá trị nhỏ hơn trông bồn chồn hơn.
Xương (chỉ áp dụng cho chế độ Bones)
Thuộc tínhMặc địnhMô tả
Xương mắt tráiFACIAL_L_EyeTên xương mắt trái. Khớp với khung xương mặt MetaHuman tiêu chuẩn.
Xương mắt phảiFACIAL_R_EyeTên xương mắt phải. Khớp với khung xương mặt MetaHuman tiêu chuẩn.
Hiệu chỉnh (chỉ ở chế độ Curves)

Các giá trị này xác định cách các góc trong không gian đầu ánh xạ đến các giá trị đường cong nhìn mắt của CR khuôn mặt MetaHuman. Các giá trị mặc định được tinh chỉnh cho CR khuôn mặt MetaHuman tiêu chuẩn và hiếm khi cần thay đổi.

Thuộc tínhMặc địnhMô tả
Độ Yaw Trên Mỗi Đơn Vị Đường Cong30°Góc ánh xạ tới giá trị đường cong 1.0 cho các đường cong nhìn theo trục yaw.
Độ Pitch Trên Mỗi Đơn Vị Đường Cong25°Góc ánh xạ tới giá trị đường cong 1.0 cho các đường cong nhìn theo trục pitch.

Kết hợp với Lip Sync và các hoạt ảnh khác

Cả hai helper đều được thiết kế để hoạt động song song với các node lip sync của plugin và bất kỳ hoạt ảnh khuôn mặt tùy chỉnh nào bạn đã có sẵn.

  • Eyes Aim nên được đặt sau lip sync và bất kỳ hoạt ảnh khuôn mặt tùy chỉnh nào trong cùng chuỗi, để các giá trị hướng mắt của nó không bị ghi đè ở phía sau. Xem Chọn Chế ĐộThiết Lập ở trên.
  • Auto Blink sử dụng node Layered blend per bone thay vì vị trí tuyến tính đơn giản, xem mẹo Vị trí quan trọng ở trên để kết nối node Control Rig vào đầu vào Base Pose của nó.
Xem Sơ Đồ Luồng Thực Thi Chi Tiết (Chế Độ Curves so với Bones)

Tùy thuộc vào việc rig MetaHuman của bạn sử dụng Chế độ Curves được khuyến nghị hay Chế độ Bones dự phòng, vị trí đặt logic thực thi của bạn sẽ thay đổi. Mở rộng biểu đồ bên dưới để xem thứ tự thực thi chính xác cho cả hai pipeline:

Chớp mắt tự động và khớp môi vẫn nằm trong Face AnimBP thông thường ở cả hai chế độ.

Để biết chi tiết về việc kết hợp với hoạt ảnh cơ thể, hãy xem Kết hợp với Hoạt ảnh Hiện có.

Ghi chú & Hạn chế

Các helper này chỉ dành riêng cho MetaHuman. Chúng phụ thuộc vào tên đường cong Control Rig khuôn mặt MetaHuman tiêu chuẩn (CTRL_L_eye_blink, CTRL_R_eye_blink, CTRL_expressions_eyeLook*) và các xương mắt tiêu chuẩn (FACIAL_L_Eye, FACIAL_R_Eye). Chúng không dành cho các nhân vật tùy chỉnh không phải MetaHuman.

Cần trợ giúp?

Join our Discord
online · support

Đối với các yêu cầu phát triển tùy chỉnh, hãy liên hệ [email protected].