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

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

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

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ũ.

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 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.

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_blinkCTRL_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:

  1. 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 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 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.

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:

  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 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 Sync và bất kỳ lớp hoạt ảnh khuôn mặt tùy chỉnh nào)
  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 Chi tiết, mở rộng phần Đầu vào và bật Sử dụng 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í rất quan trọng

Đặ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í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 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 đóng0,04 giâyThời gian tối thiểu mắt nhắm hoàn toàn.
Thời gian giữ tối đa khi đóng0,08 giâyThời gian tối đa mắt nhắm hoàn toàn.

Nội suy

Thuộc tínhMặc địnhMô tả
Tốc độ nội suy gần35.0Tố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.0Tốc độ khi mở mắt.
Ngưỡng Đóng0.97Giá 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.02Giá 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ínhMặc địnhMô tả
Mắt Độc LậpfalseKhi 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)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, 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:

ModeNó đ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ươngCá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.

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ố đượ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

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:

  1. Thêm một node Runtime MetaHuman Eyes Aim
  2. Trong bảng Details, để Mode ở chế độ Curves
  3. Đặ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
  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 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.

Eyes Aim Anim Graph setup

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:

  1. Lấy Player Camera Manager (Chỉ số Người chơi 0)
  2. Kiểm tra Is Valid
  3. Nếu hợp lệ, gọi Get Camera Location
  4. Lưu 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) 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.

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ínhMặc địnhMô tả
ModeĐường congChọ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.
bEnabledtrueKhi 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ínhMặc địnhMô tả
Góc Yaw Tối Đa35°Độ 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 SautrueNgă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ínhMặc địnhMô tả
Tốc độ nội suy12.0Tố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ínhMặc địnhMô tả
Bật SaccadestrueBậ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 độ Saccade1.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âyThờ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ắt2,5 giâyThờ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í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 khuôn 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 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ínhMặc địnhMô 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?

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].