1 điểm bởi GN⁺ 2025-09-28 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Bài viết giới thiệu một mod được tạo vào năm 2021 nhằm cải thiện lip-sync và chớp mắt của Deus Ex 1
  • Tác giả phát hiện phần triển khai lip-sync của game gốc đã không hoạt động đúng ngay từ thời điểm phát hành
  • Qua phân tích, tác giả nhận thấy Deus Ex cũng áp dụng cách trích xuất âm vị và ánh xạ khẩu hình tương tự Half-Life 2 của Valve
  • Bằng cách sửa lỗi kiểm tra framerate và vấn đề thời điểm blending trong mã Unrealscript, tác giả đã hiện thực được hoạt ảnh tự nhiên hơn
  • Để đạt mức hoàn thiện cao hơn, vẫn cần tiếp tục giải quyết vấn đề tần suất cập nhật âm vị

Giới thiệu và bối cảnh

  • Đây là dự án mod cải thiện lip-sync lời thoại và hoạt ảnh chớp mắt của nhân vật trong Deus Ex 1
  • Ở bản game gốc, chuyển động lip-sync và chớp mắt đã được triển khai bất thường ngay từ khi phát hành
  • Tác giả tổng hợp và giới thiệu lại nội dung công việc từng được đăng trên Twitter cá nhân
  • Tải mod qua liên kết riêng (ModDB)

Khảo sát cách triển khai lip-sync cũ

  • Trong quá trình chơi, tác giả xác định được vấn đề chuyển đổi khẩu hình và các hiện tượng hoạt ảnh bất thường của lip-sync
  • Tham khảo phỏng vấn Chris Norden (nhà phát triển Deus Ex): hệ thống lip-sync ban đầu khá tinh vi, nhưng đã được đơn giản hóa vì lý do hiệu năng
  • Tác giả xem xét phần Unrealscript đã được triển khai đến đâu và khả năng có thể sửa được phần nào
  • Không có mã nguồn, chỉ có thể truy cập script

Nguyên lý hoạt động của lip-sync

  • Trước đây tác giả đã có kinh nghiệm phân tích hệ thống lip-sync của Half-Life 2
  • Valve dùng cách trích xuất âm vị (phoneme) từ tệp giọng nói, đính kèm thông tin ngôn ngữ vào cuối tệp .wav, rồi khi chạy sẽ chuyển khẩu hình (viseme) theo đúng thời điểm tương ứng
  • Cách này có ưu điểm là trích xuất âm vị trước, giúp giảm tải khi chạy

Vấn đề cấu trúc của Deus Ex

  • Trong Deus Ex, thông tin âm vị không được lưu ở đâu cả, nên nhiều khả năng được trích xuất theo thời gian thực khi chạy
  • Phân tích Unrealscript cho thấy game dùng vertex animation thay vì skeletal animation, và chỉ cung cấp tổng cộng 7 khẩu hình cùng 1 hoạt ảnh chớp mắt
  • Từ hệ thống âm thanh bên ngoài, nextphoneme được gán thành A, E, F, M, O, T, U hoặc X (trạng thái ngậm miệng), và script nhân vật sẽ đổi khẩu hình theo đó

Lỗi và quá trình cải thiện

  • Trong mã gốc, logic xác định framerate hoạt động ngược, khiến khẩu hình bị chuyển ngay lập tức ngay cả ở framerate cao
  • Thời lượng blending (tweentime) được đặt quá ngắn (0,1 giây), làm mất cảm giác chuyển động tự nhiên
  • Tác giả bỏ qua điều kiện kiểm tra framerate và tăng tweentime lên đủ dài (0,35 giây)
  • Kết quả là lip-sync được nối mượt hơn

Xử lý ngậm miệng và chớp mắt

  • Tác giả chèn thêm logic để khi lời thoại kết thúc và nhân vật ngậm miệng, hệ thống vẫn áp dụng blending tự nhiên
  • Trước đó logic hoạt ảnh chỉ kiểm tra bIsSpeaking, nhưng đã được cải thiện để hoạt ảnh lip-sync luôn hoạt động
  • Tốc độ chớp mắt cũng được điều chỉnh để người dùng có thể liên tục nhận thấy

Giới hạn cấu trúc và điểm còn tiếc nuối

  • Bản thân tần suất cập nhật của nextphoneme là không đều và có giới hạn cấu trúc ở chỗ không được cập nhật mỗi tick
  • Vì vậy, dù áp dụng đầy đủ blending thì vẫn không thể mang lại trải nghiệm lip-sync hoàn hảo
  • Nếu được cập nhật với tần suất ổn định, có thể tối ưu tốc độ blending theo đó, nhưng với cấu trúc hiện tại thì không thể
  • Mã cũng còn kém hiệu quả khi cùng một logic lại bị triển khai lặp lại ở class NPC và class nhân vật người chơi

Ví dụ mã sửa cuối cùng

  • Ở cuối bài, tác giả cung cấp toàn bộ mã hàm lip-sync đã cải thiện
  • Các điểm cải thiện chính: bỏ qua kiểm tra framerate, tăng mạnh tweentime, ngậm miệng mượt hơn sau khi thoại kết thúc, điều chỉnh tần suất và tốc độ chớp mắt

Kết luận

  • Khi dùng mod này, người chơi có thể trải nghiệm lip-sync và hoạt ảnh chớp mắt tự nhiên, được cải thiện rõ rệt so với bản gốc
  • Dù còn giới hạn cấu trúc khiến lip-sync hoàn hảo là điều khó đạt được, đây vẫn là giải pháp tốt nhất có thể tiếp cận ở thời điểm hiện tại

Chưa có bình luận nào.

Chưa có bình luận nào.