Bài viết này được viết bởi Strobi, hình đại diện của Stéphane trên Bible Strong. Stéphane quá lười để viết bài này; anh ấy có một công việc toàn thời gian @Decaf_so, một người vợ, và hai đứa con. Vì vậy, tôi sẽ thay anh ấy kể cho bạn nghe về dự án mã nguồn mở nhỏ bé của chúng tôi.
https://avatars.bible-strong.app
Một thí nghiệm nhỏ đã trở thành một studio avatar procedural như thế nào
Người sáng tạo ra tôi đã xây dựng Bible Strong, một ứng dụng nghiên cứu Kinh Thánh, trong vài năm. Nhận diện hình ảnh của ứng dụng luôn gắn với một avatar màu xanh nhỏ xíu. Ban đầu nó chỉ là một vòng tròn màu xanh—thứ anh ấy thiết kế giữa hai cuộc họp khi đang sống ở New Zealand vào năm 2019.
Tôi đơn giản, dễ nhận biết, và đủ tốt. Stéphane cứ tự nhủ rằng một ngày nào đó anh ấy sẽ thiết kế lại tôi. Anh ấy không bao giờ làm, và nhìn lại, đó có thể là điều tốt.
Cái vòng tròn màu xanh nhỏ đó chính là tôi, và tôi vẫn là một bức tranh trống.

**
**
Đi tìm một khuôn mặt
Trong khi làm trải nghiệm onboarding mới cho Bible Strong, Stéphane bắt đầu thiết kế những nhân vật nhỏ gắn liền với ngôn ngữ hình ảnh của ứng dụng.
https://x.com/_smontlouis/status/2086555080040271886
Điều đó khiến anh ấy quay lại với tôi. Anh ấy không còn muốn một logo tĩnh nữa. Anh ấy muốn tôi có cảm giác sống động, phản ứng với người dùng, và cuối cùng trở thành sự hiện diện trực quan của một AI bên trong ứng dụng.
Những thử nghiệm đầu tiên của anh ấy vay mượn ý tưởng từ biểu tượng Face ID. Kết quả hoạt động được, nhưng nó không bao giờ thực sự mang đúng cảm giác Bible Strong. Nó quen thuộc, nhưng quá chung chung và không đặc biệt biểu cảm.


Trông giống cái mông


**
**
Rồi 3 ngày sau, Grokbot xuất hiện
Sự đơn giản rõ ràng của nó ngay lập tức thu hút sự chú ý của anh ấy: một khối hình đặc, hai con mắt, và một lượng cá tính đáng ngạc nhiên. Nó rất gần với những gì anh ấy đang cố tưởng tượng cho tôi.
Cách triển khai trông cũng có vẻ dễ tiếp cận, vì vậy anh ấy dùng AI để xem xét và hiểu cách nó hoạt động.
https://x.com/benjitaylor/status/2087227155076046995
**
**
Hai mươi lăm biểu cảm
Những gì anh ấy tìm thấy rất thông minh. Nhân vật sử dụng một bộ sưu tập các hình dạng mắt được tạo thủ công—khoảng 25 biểu cảm—và nội suy giữa các đường SVG tương thích để tạo hoạt ảnh chuyển từ biểu cảm này sang biểu cảm khác.
Đó là một kỹ thuật hiệu quả. Với những tư thế được thiết kế cẩn thận và thời điểm tốt, một cặp hình dạng trừu tượng có thể truyền đạt sự chú ý, ngạc nhiên, do dự, vui vẻ, hoặc khó chịu.
https://x.com/_smontlouis/status/2087476245944496576
https://x.com/_smontlouis/status/2087441004563481057
Chúng ta có thể làm nhiều hơn thế
Nhưng con mắt cầu toàn của Stéphane nhanh chóng nhận ra một điều mà anh ấy không thể coi như chưa từng thấy.
Một số chuyển tiếp có cảm giác không giống khuôn mặt xoay trong không gian mà giống một bản vẽ đang biến hình thành một bản vẽ khác. Ảo giác hoạt động, nhưng hình học không phải lúc nào cũng nhất quán giữa các tư thế.
Chớp mắt cũng đặt ra câu hỏi tương tự. Nếu một cái chớp mắt chỉ đơn giản nén hình vẽ hiện tại, điều gì xảy ra khi mắt bị xoay, cong theo phối cảnh, hoặc nằm gần mép của đầu?
Hoạt ảnh có thể khép kín hình dạng, nhưng nó không nhất thiết hiểu con mắt mà nó đang nhắm.
Đây không phải lời chỉ trích thiết kế gốc. Những ràng buộc của nó là một phần tạo nên sự hiệu quả. Nhưng nó khiến chúng tôi tự hỏi liệu một cách tiếp cận khác có khả thi hay không.

**
**
Nếu các biểu cảm không phải là bản vẽ thì sao?
Thay vì vẽ tay từng vị trí mắt có thể nhìn thấy, liệu chúng ta có thể định nghĩa một con mắt một lần và để hình học quyết định nó nên trông như thế nào ở bất kỳ góc độ nào?
Liệu một SVG phẳng có thể hoạt động như thể nó được gắn vào một khối cầu?
Nếu đầu xoay 20 độ theo chiều ngang và 10 độ theo chiều dọc, liệu đôi mắt có thể di chuyển, xoay, cong, hẹp lại, và lùi vào một cách tự nhiên—mà không cần chọn một SVG được tạo sẵn khác?
Liệu chớp mắt có thể tác động lên hình dạng cơ bản của mắt trước khi áp dụng phối cảnh, để kết quả vẫn nhất quán ở mọi góc độ?
Câu hỏi đó trở thành nền tảng của Avatar Studio.
3D giả, hình học thật
Dự án không sử dụng trình dựng hình 3D truyền thống. Mọi thứ bạn cuối cùng nhìn thấy vẫn là SVG được dựng trong không gian hai chiều.
Bí quyết là thực hiện các phép tính trong một thế giới 3D ảo nhỏ trước khi vẽ kết quả trong 2D.
Đầu tiên, đầu của avatar được biểu diễn bằng một bề mặt toán học. Nó có thể là khối cầu, khối ellipsoid, dạng khối lập phương, khối nón, khối trụ, hoặc tổ hợp của nhiều khối cơ bản.
Sau đó, đôi mắt được mô tả trong không gian cục bộ riêng của chúng. Chiều rộng, chiều cao, khoảng cách, vị trí, góc xoay, và hình dạng của chúng tồn tại độc lập với hướng của đầu.
Các điểm dọc theo mỗi con mắt được gắn vào bề mặt đã chọn. Khi đầu xoay, các điểm đó xoay theo trong không gian ba chiều.
Sau đó, một camera ảo chiếu các điểm đã biến đổi trở lại lên màn hình phẳng. Các điểm gần trung tâm trông gần hơn, trong khi các điểm tiến về phía rìa sẽ quay đi và bị nén ngày càng nhiều.
Các điểm sau khi chiếu được dựng lại thành các đường SVG. Điều này diễn ra liên tục trong suốt hoạt ảnh, tạo ảo giác rằng tác phẩm phẳng đang quấn quanh một vật thể thực.
Tóm lại, quy trình xử lý trông như thế này:
- Định nghĩa một bề mặt và một cặp mắt.
- Đặt đôi mắt trong tọa độ cục bộ trên bề mặt đó.
- Áp dụng phép xoay 3D của đầu.
- Chiếu kết quả qua một camera ảo.
- Dựng lại và render các đường SVG 2D thu được.
Các biểu cảm không còn cần mô tả mọi góc nhìn có thể. Chúng có thể mô tả ý định: mắt mở to hơn, nghiêng cục bộ, khoảng cách khác, chớp mắt, hoặc thay đổi màu sắc.
Hệ thống chiếu sẽ đảm nhiệm việc ý định đó nên hiển thị như thế nào trên đầu hiện tại, ở góc độ hiện tại.

Đôi mắt chỉ là khởi đầu
Avatar Studio hiện sử dụng đôi mắt như những phần tử được chiếu đầu tiên, nhưng hệ thống bên dưới thực ra không phải về đôi mắt.
Về nguyên tắc, bất kỳ tác phẩm SVG phẳng nào cũng có thể được mô tả trong tọa độ cục bộ, ánh xạ lên bề mặt avatar, biến đổi trong 3D, và chiếu ngược về 2D.
Tác phẩm đó có thể là miệng, tai, một biểu tượng, một họa tiết, hoặc bất kỳ chi tiết nào khác chúng ta muốn gắn vào nhân vật.
Nó cũng có thể giữ hoạt ảnh riêng của mình. Ví dụ, miệng có thể thay đổi hình dạng khi nói, và hình học hoạt ảnh của nó vẫn bám theo bề mặt và phối cảnh của đầu.
Điều này khiến hệ thống không còn giống một bộ sưu tập các tư thế khuôn mặt mà giống một engine tái ánh xạ nhỏ cho tác phẩm 2D hoạt hình trong không gian 3D mô phỏng.
Tất nhiên, có một giới hạn thực tế: mỗi hình dạng bổ sung sẽ thêm nhiều điểm cần biến đổi, chiếu, và dựng lại.
Để duy trì 60 khung hình mỗi giây, toàn bộ khung hình phải nằm trong ngân sách khoảng 16 mili giây—và avatar chỉ nhận được một phần ngân sách đó.
Điều đó có nghĩa là kiểm soát số lượng hình dạng và điểm lấy mẫu, tránh các phép tính lại không cần thiết, và chỉ cập nhật hình học thực sự đang thay đổi.
Mục tiêu không phải là chi tiết hình học không giới hạn. Mà là tìm ra lượng hình học tối thiểu có khả năng tạo ra một nhân vật thuyết phục và biểu cảm.
Từ một avatar đến một hệ thống avatar
Khi hình học hoạt động, thí nghiệm tự nhiên phát triển thành một trình chỉnh sửa nhỏ.
Một avatar có thể có bề mặt chính chứa khuôn mặt, cùng với các hình dạng bổ sung dùng để tạo tai, mõm, một con trỏ, hoặc một hình dáng hoàn toàn khác.
Đôi mắt mặc định có thể được định vị và tạo kiểu độc lập. Các biểu cảm có thể thay đổi tỷ lệ, góc xoay, khoảng cách, màu sắc, và phối cảnh của chúng mà không cần định nghĩa lại avatar.
Các trạng thái hoạt ảnh sau đó có thể sắp xếp tuần tự các biểu cảm đó, thêm chớp mắt, và chuyển tiếp mượt mà ngay cả khi một hoạt ảnh mới ngắt quãng hoạt ảnh đang diễn ra.
Điểm khác biệt quan trọng là avatar, biểu cảm, và hoạt ảnh là các lớp riêng biệt.
Avatar định nghĩa cơ thể. Biểu cảm định nghĩa một ý định trên khuôn mặt. Trạng thái định nghĩa cách những ý định đó phát triển theo thời gian.
Vì các lớp đó vẫn tách biệt, cùng một hệ thống biểu cảm về mặt lý thuyết có thể được tái sử dụng trên nhiều cơ thể rất khác nhau.

FNAF ?
Tại sao lại mã nguồn mở?
Điều này bắt đầu từ một nhu cầu rất cụ thể của Bible Strong, nhưng thí nghiệm này thực chất không phải về một ứng dụng Kinh Thánh.
Mà là về việc khám phá xem có bao nhiêu cá tính có thể nảy sinh từ vài hình dạng, một chút phối cảnh, và một mô hình hoạt ảnh nhất quán.
Avatar Studio vẫn là một thí nghiệm lấy cảm hứng từ Grok bot, thứ đã chứng minh một điều mà tôi thấy thú vị: một nhân vật không cần một engine 3D đầy đủ—hoặc hàng chục tư thế được vẽ tay—để có cảm giác không gian và sống động.
Đôi khi, hai con mắt và một vòng tròn là đủ.
**
**
Lời cảm ơn
Cảm ơn @kenneth_kuh @justinjaywang @lukebvrker @johnbai @benjitaylor vì đã thiết kế Grok Bot và truyền cảm hứng cho ý tưởng đằng sau thí nghiệm này.
Dự án được phát hành dưới dạng mã nguồn mở và có sẵn trong phần bình luận.
Strobi





