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
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.
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.
Tự động chớp mắt
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_blink và CTRL_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:
- 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
AnimInstancegọi - 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
- 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.
1. Event Graph: điều khiển giá trị chớp mắt mỗi khung hình
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:
- Gọi
Update MetaHuman Auto Blink - Kết nối Delta Time X (từ sự kiện) với Delta Seconds
- (Tùy chọn) Cấu hình struct Config. Các giá trị mặc định đã trông tự nhiên
- Chuyển Left Blink Value và Right Blink Value thành biến Blueprint (ví dụ:
LeftBlinkValue,RightBlinkValue)

2. Anim Graph: đưa các giá trị vào Face Control Rig
Trong Anim Graph của cùng một Animation Blueprint:
- Đặ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 bonethay vì đặt trực tiếp vào chuỗi, xem mẹo bên dưới.
- 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
- 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.
- Trong bảng Details, mở rộng phần Input và bật Use Pin cho:
CTRL_L_eye_blinkCTRL_R_eye_blink
- Kết nối biến
LeftBlinkValuecủa bạn vớiCTRL_L_eye_blink - Kết nối biến
RightBlinkValuecủa bạn vớiCTRL_R_eye_blink

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 có 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ính | Mặc định | Mô tả |
|---|---|---|
| Thời gian tối thiểu giữa các lần chớp mắt | 2,0 giây | Khoả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ắt | 4,0 giây | Khoả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ểu | 0,04 giây | Thờ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 đa | 0,08 giây | Thờ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ính | Mặc định | Mô tả |
|---|---|---|
| Tốc độ nội suy khi nhắm mắt | 35.0 | Tố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ắt | 18.0 | Tốc độ khi mở mắt. |
| Ngưỡng nhắm hoàn toàn | 0.97 | Giá 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àn | 0.02 | Giá 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ính | Mặc định | Mô tả |
|---|---|---|
| Mắt độc lập | false | Khi 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) | true | Khi 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:
| Mode | Nó đ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ương | Các xương FACIAL_L_Eye / FACIAL_R_Eye trực tiếp, bỏ qua Control Rig | Trong 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.
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
- Chế độ Curves (mặc định)
- Chế độ Bones (dự phòng)
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:
- Thêm một node
Runtime MetaHuman Eyes Aim - Để Mode ở chế độ Curves trong bảng Details
- Đặ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
- Kết nối pose hiện có với Source Pose
- Kết nối đầu ra với node tiếp theo trong chuỗi của bạn (hoặc
Output Pose) - 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.

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:
- Lấy Player Camera Manager (Player Index 0)
- Kiểm tra Is Valid
- Nếu hợp lệ, gọi Get Camera Location
- Lưu trữ nó vào biến Blueprint
TargetWorldLocation

Để 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.
Sử dụng thiết lập này nếu phương pháp chế độ Curves không hoạt động với biến thể MetaHuman của bạn (xem cảnh báo ở trên). Trong chế độ Bones, node trực tiếp xoay các xương mắt và phải chạy sau khi Control Rig đã hoàn tất việc đánh giá, nghĩa là nó thuộc về Face Post Process Animation Blueprint thay vì Face AnimBP thông thường.
Ba bước: định vị Post Process Anim BP, thêm node sau RigLogic, sau đó cung cấp cho nó một vị trí mục tiêu từ Event Graph của blueprint đó.
1. Định vị Face Post Process Anim BP
- Mở asset Skeletal Mesh khuôn mặt của MetaHuman của bạn (ví dụ:
Facetrong thư mục MetaHuman của bạn) - Trong bảng Details của asset, tìm trường Post Process Anim Blueprint
- Mở asset đó, thường được đặt tên như
Face_PostProcess_AnimBP
2. Anim Graph: thêm node sau RigLogic
Trong Anim Graph của Face Post Process Anim BP:
- Tìm nút
AnimNode_RigLogichiện có (nó chuyển đổi các đường cong Control Rig của khuôn mặt thành các biến đổi xương) - Thêm nút
Runtime MetaHuman Eyes AimsauAnimNode_RigLogicvà trướcOutput Pose - Trong bảng Details của nút, đặt Mode thành Bones
- Kết nối
AnimNode_RigLogicvới Source Pose của nút Eyes Aim - Kết nối đầu ra của nút Eyes Aim với
Output Pose - Tạo một biến Blueprint
Vector(ví dụ:TargetWorldLocation) trong Post Process Anim BP này và kết nối nó với chân Target World Location của nút

Các tham chiếu xương mặc định (FACIAL_L_Eye và FACIAL_R_Eye) khớp với khung xương mặt MetaHuman tiêu chuẩn. Nếu nhân vật của bạn sử dụng khung xương tùy chỉnh với tên xương mắt khác, hãy ghi đè chúng trong bảng Details của node dưới danh mục Bones.
3. Event Graph: cung cấp một vị trí mục tiêu
Vì node này nằm trong Post Process Anim BP, logic vị trí mục tiêu cũng phải nằm trong Event Graph của blueprint này, không phải trong Face_AnimBP. Cách thiết lập giống hệt chế độ Curves (lấy vị trí camera, vị trí của một actor, hoặc dùng một hằng số), chỉ khác là được thực hiện bên trong Face_PostProcess_AnimBP.

Mọi logic không liên quan (lip sync, tự động chớp mắt, v.v.) có thể giữ nguyên trong Face AnimBP thông thường. Chỉ có phép tính vị trí mục tiêu cho Eyes Aim mới cần chuyển sang đây. Control Rig khuôn mặt ép điều khiển xương mắt mỗi khung hình dựa trên các đường cong của nó. Nếu node Eyes Aim chạy trong Face AnimBP thông thường (trước Control Rig), thì Control Rig sẽ ghi đè lên các phép xoay xương sau đó. Post Process Anim BP chạy sau khi Control Rig đã tạo ra các biến đổi xương cuối cùng, vì vậy đây là nơi chính xác để áp dụng các phép xoay xương cuối cùng cần "thắng thế".Tại sao chế độ Bones lại cần Post Process Anim BP?
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ính | Mặc định | Mô tả |
|---|---|---|
| Mode | Curves | Chọ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. |
bEnabled | true | Khi 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ính | Mặc định | Mô 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 Sau | true | Ngă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ính | Mặc định | Mô tả |
|---|---|---|
| Tốc độ nội suy | 12.0 | Tố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ính | Mặc định | Mô tả |
|---|---|---|
| Bật chuyển động mắt vi mô | true | Bậ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ây | Thờ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ây | Thờ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ính | Mặc định | Mô tả |
|---|---|---|
| Xương mắt trái | FACIAL_L_Eye | Tê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ải | FACIAL_R_Eye | Tê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ính | Mặc định | Mô tả |
|---|---|---|
| Độ Yaw Trên Mỗi Đơn Vị Đường Cong | 30° | 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 Cong | 25° | 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ế Độ và Thiết Lập ở trên.
- Auto Blink sử dụng node
Layered blend per bonethay 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?
Đối với các yêu cầu phát triển tùy chỉnh, hãy liên hệ [email protected].