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

Trình hỗ trợ Hoạt ảnh Mắt

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

  • Auto Blink: một trình hỗ trợ tạo ra các nháy mắt ngẫu nhiên, tự nhiên cho MetaHuman
  • Eyes Aim: một nút Animation Blueprint giúp mắt 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 đồng bộ môi và có thể được sử dụng riêng lẻ, cùng nhau, hoặc kết hợp với các nút đồng bộ môi. Chúng được thiết kế như những trình 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: nháy mắt tự động
Eyes Aim: 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 di chuyển
Khi nào nên sử dụng các công cụ hỗ trợ này

Nếu quy trình hoạt ảnh khuôn mặt của bạn đã bao gồm nháy 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 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 ảnh của bạn không bao gồm nháy mắt, hoặc khi bạn cần mắt động theo dõi một mục tiêu đang di chuyển (điều mà các chuỗi hoạt ả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 ảnh khuôn mặt hiện có để thêm 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 ảnh miệng.

Công cụ hỗ trợ Tự động Nháy Mắt 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 MetaHuman Face Control Rig.

Cách 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 riêng cho từng nhân vật (thời gian nháy mắt tiếp theo, pha hiện tại đang mở/đóng, v.v.) được khóa bởi AnimInstance gọi nó
  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 của mỗi mắt tại thời điểm đó
  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 nháy mắt vào Event Graph của bạn, sau đó đưa các giá trị vào nút Control Rig trong Anim Graph.

1. Event Graph: điều khiển giá trị nháy 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 đã sao chép/duplicate của nó, xem Hướng dẫn Thiết lập), 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. Thăng cấp Left Blink ValueRight Blink Value thành các biến Blueprint (ví dụ: LeftBlinkValue, RightBlinkValue)

Thiết lập Event Graph Tự động Nháy Mắt

2. Anim Graph: đưa các giá trị vào Face Control Rig

Trong Anim Graph của cùng Animation Blueprint đó:

  1. Đặt một nút Control Rig sau tất cả các logic khuôn mặt khác có thể ghi vào các đường cong nháy 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 nút, đặt Control Rig Class 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ó một đường dẫn khác tùy thuộc vào cách MetaHuman được nhập.
  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

Thiết lập Anim Graph Tự động Nháy Mắt

Vị trí rất quan trọng

Đặt nút Control Rig sau các nút blend đồng bộ môi (và bất kỳ nút hoạt ảnh khuôn mặt nào khác) để các giá trị nháy 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 struct Config tùy chọn. Các giá trị mặc định đã trông tự nhiên cho 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.

Các thuộc tính Config

Thời gian

Thuộc tínhMặc địnhMô tả
Min Time Between Blinks2.0 sKhoảng thời gian tối thiểu giữa các lần nháy mắt khi mắt đang mở hoàn toàn.
Max Time Between Blinks4.0 sKhoảng thời gian tối đa giữa các lần nháy mắt. Khoảng thời gian thực tế được ngẫu nhiên hóa giữa tối thiểu và tối đa.
Min Closed Hold Time0.04 sThời gian tối thiểu mắt ở trạng thái nhắm hoàn toàn.
Max Closed Hold Time0.08 sThời gian tối đa mắt ở trạng thái nhắm hoàn toàn.

Nội suy

Thuộc tínhMặc địnhMô tả
Close Interp Speed35.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 cách có chủ ý.
Open Interp Speed18.0Tốc độ khi mở mắt.
Closed Threshold0.97Giá trị mà tại đó nháy mắt được coi là "nhắm hoàn toàn" và pha giữ bắt đầu.
Open Threshold0.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.

Linh tinh

Thuộc tínhMặc địnhMô tả
Independent EyesfalseKhi 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ở ra và tạm dừng nháy. Hữu ích cho các cảnh quay, 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 nhất định (ví dụ: khi hồi sinh một nhân vật hoặc chuyển đổi trạng thái điện ảnh).

Ánh mắt

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

Chọn Chế Độ

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

Chế độNó điều khiển cái gìNên đặt ở đâu
Curves (mặc định)Các đường cong điều khiển ánh nhìn mắt của Face Control Rig (CTRL_expressions_eyeLook*)Trong Face Animation Blueprint (ví dụ: Face_AnimBP), trước nút Control Rig
BonesCác bone 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 cách sạch sẽ với các hệ thống khuôn mặt dựa trên đường cong 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 đánh giá Control Rig thông thường thay vì tranh giành các phép biến đổi bone.

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ũ hơn, bao gồm một số được tải xuống qua Quixel Bridge), các đường cong điều khiển ánh nhìn 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 dưới với đồng tử gần như bị che khuất khi nút ở chế độ Curves đang hoạt động, bất kể vị trí mục tiêu.

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 bone 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 Bones trong Thiết lập bên dưới.

Thiết lập

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

Hai bước: thêm nút 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 nút

Trong Anim Graph của Face Animation Blueprint của bạn:

  1. Thêm một nút Runtime MetaHuman Eyes Aim
  2. Để Mode ở chế độ Curves trong bảng Details
  3. Đặt nó sau tất cả các logic khuôn mặt khác có thể ghi vào các đường cong ánh nhìn mắt (đồng bộ môi, hoạt ảnh tùy chỉnh, v.v.), cùng nguyên tắc với nút Control Rig Tự động Nháy Mắt
  4. Kết nối pose hiện có với Source Pose
  5. Kết nối đầu ra với nút 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 nút. Bạn sẽ cập nhật biến này từ Event Graph trong bước tiếp theo.

Thiết lập Anim Graph Ánh mắt

2. Event Graph: cung cấp 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 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ó trong biến Blueprint TargetWorldLocation

Ánh mắt, theo dõi camera

Để theo dõi một diễn viên tùy ý (NPC, vật phẩm, điểm ưa thích) thay vào đó, hãy lấy vị trí của diễn viên đó mỗi khung hình và lưu trữ nó trong cùng một biến. Đối với một điểm nhìn cố định, hãy đặt Target World Location một lần hoặc như một hằng số trong bảng Details của nút.

Cấu hình

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

Nhắm & Giới hạn

Nhắm

Thuộc tínhMặc địnhMô tả
ModeCurvesChọn cách mắt được điều khiển. Xem Chọn Chế Độ.
Target World Location(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 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 chân theo mặc định.

Giới hạn

Thuộc tínhMặc địnhMô tả
Max Yaw Degrees35°Độ lệch ngang (yaw) tối đa so với hướng về phía trước của đầu. Giới hạn từ 0 đến 80.
Max Pitch Degrees25°Độ lệch dọc (pitch) tối đa so với hướng về phía trước của đầu. Giới hạn từ 0 đến 80.
Anti Flip BehindtrueNgăn mắt bị lật khi mục tiêu đi qua phía sau đầu.
Làm mượt & Vi chuyển động mắt (Saccades)

Làm mượt

Thuộc tínhMặc địnhMô tả
Interp Speed12.0Tốc độ làm mượt cho chuyển động của mắt. Cao hơn = nhanh hơn, thấp hơn = chậm chạp hơn.

Vi chuyển động mắt (Saccades)

Vi chuyển động mắt là những thay đổi hướng nhìn nhỏ, ngẫu nhiên mà mắt thật liên tục thực hiện. Thêm chúng sẽ tránh được 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ả
Enable SaccadestrueBật/tắt vi chuyển động mắt.
Saccade Yaw Amplitude Deg1.5°Độ rung ngang tối đa mỗi lần vi chuyển động. Giá trị nhỏ (1–2°) cảm thấy tự nhiên; giá trị lớn hơn trông giật.
Saccade Pitch Amplitude Deg1.0°Độ rung dọc tối đa mỗi lần vi chuyển động. Thường nhỏ hơn một chút so với biên độ yaw.
Min Saccade Interval0.6 sThời gian tối thiểu giữa các lần vi chuyển động.
Max Saccade Interval2.5 sThời gian tối đa giữa các lần vi chuyển động. Giá trị lớn hơn cảm thấy bình tĩnh hơn, giá trị nhỏ hơn cảm thấy bồn chồn hơn.
Bones (Chỉ chế độ Bones)
Thuộc tínhMặc địnhMô tả
Left Eye BoneFACIAL_L_EyeTên bone mắt trái. Khớp với bộ xương khuôn mặt MetaHuman tiêu chuẩn.
Right Eye BoneFACIAL_R_EyeTên bone 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ỉ chế độ Curves)

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

Thuộc tínhMặc địnhMô tả
Yaw Degrees Per Unit Curve30°Góc được ánh xạ tới giá trị đường cong là 1.0 cho các đường cong ánh nhìn yaw.
Pitch Degrees Per Unit Curve25°Góc được ánh xạ tới giá trị đường cong là 1.0 cho các đường cong ánh nhìn pitch.

Kết Hợp Với Đồng Bộ Môi và Các Hoạt Ảnh Khác

Cả hai công cụ hỗ trợ đều được thiết kế để cùng tồn tại với các nút đồ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 nút Eyes Aim và Control Rig (tự động nháy mắt) sau đồng bộ môi và bất kỳ hoạt ảnh khuôn mặt tùy chỉnh nào, để các giá trị của chúng không bị ghi đè ở phía sau.

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 sơ đồ bên dưới để xem thứ tự thực thi chính xác cho cả hai quy trình:

Auto Blink và lip sync vẫn nằm trong Face AnimBP thông thường ở cả hai chế độ.

Để biết chi tiết về việc xếp 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ú & Giới hạn

Các trình trợ giúp này 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].