Hỗ trợ 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 cái chớp mắt tự nhiên, ngẫu nhiên trên MetaHuman
- Định hướng mắt: một nút trong Animation Blueprint giúp mắt của MetaHuman nhìn vào 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 khớp môi 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 nút khớp môi. 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 mà không cần phải tạo thủ công.
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 cũ.
Nếu quy trình hoạt hình khuôn mặt của bạn đã bao gồm nháy mắt và ánh nhìn độ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 có hành vi mắt sống động như thật mà không cần tự tạo chúng, ví dụ, khi các chuỗi hoạt hình của bạn không bao gồm nháy mắt, hoặc khi bạn cần đôi mắt tự động theo dõi một mục tiêu đang di chuyển (điều mà các 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ư nháy mắt trên một chuỗi chỉ hoạt hình miệng.
Tự động chớp mắt
Trình hỗ trợ nháy mắt tự động tạo ra các cái nháy mắt ngẫu nhiên, trông 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 Control Rig Khuôn Mặt MetaHuman.
Cách thức hoạt động
Mỗi khung hình, 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 khung hình đó. Hàm này:
- Theo dõi trạng thái của từng nhân vật (thời gian chớp mắt tiếp theo, pha hiện tại đang mở/đóng, v.v.) được khóa bởi
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 trữ các giá trị này trong các 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 bạn đã sao chép/nhân bản, xem Hướng dẫn Thiết lập), hãy mở Event Graph và thêm nội dung 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: truyền 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 sau tất cả logic khuôn mặt khác có thể ghi vào các đường cong chớp mắt (ví dụ: sau
Blend Runtime MetaHuman Lip Syncvà bất kỳ lớp hoạt ảnh khuôn mặt tùy chỉnh nào) - 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 Chi tiết, mở rộng phần Đầu vào và bật Sử dụng 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

Đặt node Control Rig sau các node blend lip sync (và bất kỳ node hoạt ảnh khuôn mặt nào khác) để các giá trị chớp mắt không bị ghi đè bởi logic khác.
Cấu hình
Nút Update MetaHuman Auto Blink chấp nhận một cấu trúc 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 ngẫu nhiên hóa giữa giá trị tối thiểu và tối đa. |
| Thời gian giữ tối thiểu khi đóng | 0,04 giây | Thời gian tối thiểu mắt nhắm hoàn toàn. |
| Thời gian giữ tối đa khi đóng | 0,08 giây | Thời gian tối đa mắt nhắm hoàn toàn. |
Nội suy
| Thuộc tính | Mặc định | Mô tả |
|---|---|---|
| Tốc độ nội suy gần | 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 tốc độ này được thiết lập cao hơn tốc độ mở mắt một cách có chủ đích. |
| Tốc độ Nội suy Mở | 18.0 | Tốc độ khi mở mắt. |
| Ngưỡng Đóng | 0.97 | Giá trị mà tại đó nháy mắt được coi là "nhắm hoàn toàn" và giai đoạn giữ bắt đầu. |
| Ngưỡng Mở | 0.02 | Giá trị mà tại đó nháy mắt được coi là "mở hoàn toàn" và lần nháy 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 nháy độc lập với thời gian riêng biệt. Khi false (mặc định), cả hai mắt nháy đồ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, giấc ngủ, cái 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 điện ảnh).
Nhắm Mắt
Trình hỗ trợ nhắm mắt (Eyes Aim) là một nút Animation Blueprint (Runtime MetaHuman Eyes Aim) giúp nhân vật hướng mắt theo một vị trí trong không gian thế giới, chẳng hạn như camera của người chơi, một actor khác hoặc bất kỳ mục tiêu di chuyển nào. Nó hỗ trợ giới hạn góc yaw/pitch, làm mượt chuyển động, 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 Chế độ
Nút hỗ trợ hai chế độ, được chọn qua menu thả xuống Chế độ trong bảng Chi tiết của nút:
| Mode | Nó điều khiển cái gì | Đặt nó ở đâu |
|---|---|---|
| Đườ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 node Control Rig |
| Xương | Các bone FACIAL_L_Eye / FACIAL_R_Eye được tác động trực tiếp, bỏ qua Control Rig. | Trong Animation Blueprint Xử lý Hậu kỳ Khuôn mặt (ví dụ: Face_PostProcess_AnimBP), sau node AnimNode_RigLogic |
Chế độ Curves là chế độ mặc định được khuyến nghị. Nó kết hợp một cách gọn gàng với các hệ thống khuôn mặt dựa trên curve khác (đồng bộ môi, biểu cảm, blendshape ARKit, 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ì xung đột 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ố được tải xuống qua Quixel Bridge), các đường cong hướng mắt không thực sự điều khiển mắt. Triệu chứng có thể thấy là mắt nhìn xuống với đồng tử gần như bị che khuất khi node chế độ Curves được kích hoạt, 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ế độ xương. Chế độ xương trực tiếp xoay các xương mắt, do đó 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 Xương trong Thiết lập bên dưới.
Thiết lập
- Chế độ Đường cong (mặc định)
- Chế độ Xương (dự phòng)
Thiết lập mặc định. Node này nằm trong Face Animation Blueprint tiêu chuẩn và điều khiển các đường cong hướng nhìn mắt của Control Rig 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 Anim Graph của Face Animation Blueprint của bạn:
- Thêm một node
Runtime MetaHuman Eyes Aim - Trong bảng Details, để Mode ở chế độ Curves
- Đặt nó sau tất cả logic khuôn mặt khác có thể ghi vào các đường cong hướng 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 kiểu
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 ở bước tiếp theo.

2. Event Graph: cung cấp vị trí mục tiêu
Chân Vị trí Mục tiêu trong Thế giới 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 Sự kiện Cập nhật Hoạt ảnh Blueprint:
- Lấy Player Camera Manager (Chỉ số Người chơi 0)
- Kiểm tra Is Valid
- Nếu hợp lệ, gọi Get Camera Location
- Lưu 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) thay vào đó, hãy lấy vị trí của actor đó mỗi frame và lưu trữ vào cùng một biến. Đối với một điểm nhìn cố định, hãy thiết lập Target World Location một lần hoặc làm 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). Ở 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 đá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: xác định vị trí Post Process Anim BP, thêm node sau RigLogic, sau đó cung cấp vị trí mục tiêu từ Event Graph của blueprint đó.
1. Xác định vị trí 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ên như
Face_PostProcess_AnimBP
2. Anim Graph: thêm node sau RigLogic
Trong Anim Graph của Face Post Process Anim BP:
- Xác định vị trí node
AnimNode_RigLogichiện có (node này chuyển đổi các đường cong của Control Rig khuôn mặt thành các phép biến đổi xương) - Thêm một node
Runtime MetaHuman Eyes AimsauAnimNode_RigLogicvà trướcOutput Pose - Trong bảng Details của node, đặt Mode thành Bones
- Kết nối
AnimNode_RigLogicvới Source Pose của node Eyes Aim - Kết nối đầu ra của node Eyes Aim với
Output Pose - Tạo một biến Blueprint kiểu
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 node

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 Chi tiết của node dưới danh mục Xương.
3. Event Graph: cung cấp 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 sử dụng 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 (đồng bộ môi, 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 được chuyển vào đây. Face Control Rig buộc phải điều khiển các 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 đè 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à vị trí chính xác để áp dụng các phép xoay xương cuối cùng cần được "ưu tiên".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 Chi tiết của node Runtime MetaHuman Eyes Aim.
Mục tiêu & Kẹp
Mục tiêu
| Thuộc tính | Mặc định | Mô tả |
|---|---|---|
| Mode | Đường cong | Chọn cách điều khiển mắt. Xem Chọn Chế Độ. |
| Vị trí Thế giới Mục tiêu | (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 chân cắm theo mặc định. |
bEnabled | true | Khi là false, mắt sẽ từ từ trở về phía trước và bỏ qua mục tiêu. Theo mặc định, tùy chọn này được hiển thị dưới dạng một chân cắm. |
Kẹp
| Thuộc tính | Mặc định | Mô tả |
|---|---|---|
| Góc Yaw Tối Đa | 35° | Độ lệch ngang tối đa (yaw) so với hướng nhìn thẳng của đầu. Giới hạn trong khoảng 0 đến 80. |
| Góc Cao Tối Đa (Độ) | 25° | Độ lệch dọc tối đa (pitch) so với hướng nhìn thẳng của đầu. Giới hạn trong khoảng 0 đến 80. |
| Chống Lật Phía Sau | true | Ngăn mắt bị lật khi mục tiêu đi qua phía sau đầu. |
Làm mịn & Chuyển động mắt nhanh (Saccades)
Làm mịn
| Thuộc tính | Mặc định | Mô tả |
|---|---|---|
| Tốc độ nội suy | 12.0 | Tốc độ làm mịn chuyển động mắt. Cao hơn = nhanh hơn, thấp hơn = chậm rãi hơn. |
Chuyển động mắt nhanh (Saccades)
Vi mạc là những chuyển động mắt nhỏ, ngẫu nhiên mà mắt thực tế liên tục thực hiện. Thêm chúng vào 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 Saccades | true | Bật/tắt chuyển động vi mô của mắt. |
| Biên độ xoay ngang của chuyển động mắt nhanh (Saccade) | 1,5° | Sốc ngang tối đa mỗi lần nhảy mắt. Giá trị nhỏ (1–2°) cảm thấy tự nhiên; giá trị lớn hơn trông giật cục. |
| Biên độ Cao độ Saccade | 1.0° | Độ rung dọc tối đa mỗi lần nhảy mắt. Thường nhỏ hơn một chút so với biên độ xoay ngang. |
| Khoảng thời gian tối thiểu giữa các lần chuyển động mắt nhanh (Saccade) | 0.6 giây | Thời gian tối thiểu giữa các lần chuyển động mắt nhanh (saccades). |
| Khoảng thời gian tối đa giữa các lần chuyển hướng mắt | 2,5 giây | Thời gian tối đa giữa các lần chuyển động mắt. Giá trị lớn hơn tạo cảm giác bình tĩnh hơn, giá trị nhỏ hơn tạo cảm giác bồn chồn hơn. |
Xương (chỉ dành cho chế độ Xương)
| 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 khuôn 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 bộ xương khuôn mặt MetaHuman tiêu chuẩn. |
Hiệu chỉnh (Chỉ dành cho chế độ Đường cong)
Các giá trị này xác định cách các góc không gian đầu được ánh xạ tới 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ả |
|---|---|---|
| Đường cong Độ Yaw trên Mỗi Đơn vị | 30° | Góc ánh xạ tới giá trị đường cong 1.0 cho các đường cong nhìn theo hướng ngang (yaw). |
| Đường cong Cao độ (Độ) trên Mỗi Đơn vị | 25° | Góc ánh xạ tới giá trị đường cong 1.0 cho các đường cong nhìn theo cao độ (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 đồng bộ môi của plugin và bất kỳ hoạt ảnh khuôn mặt tùy chỉnh nào bạn đã có. Nguyên tắc chung: đặt các node Eyes Aim và Control Rig (tự động chớp mắt) sau đồng bộ môi và bất kỳ hoạt ảnh khuôn mặt tùy chỉnh nào, để giá trị của chúng không bị ghi đè ở các bước xử lý tiếp theo.
Xem Sơ đồ Luồng Thực Thi Chi Tiết (Chế độ Đường cong so với Xương)
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:
Tự động chớp mắt và đồng bộ khẩu hình vẫn nằm trong Face AnimBP thông thường ở cả hai chế độ.
Để biết chi tiết về việc phân lớ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 công cụ hỗ trợ này chỉ dành riêng cho MetaHuman. Chúng dựa trên các 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 được thiết kế 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].