Hình học

Trò chơi 3D chạy tốt trên nhiều thiết bị nhất chính là trò chơi có đồ hoạ 3D được thiết kế để khai thác tối đa trình xử lý đồ hoạ. Bản hướng dẫn này nêu bật các cách tối ưu hoá cũng như các phương pháp tốt nhất cho thành phần 3D trên thiết bị di động để giúp trò chơi hoạt động hiệu quả hơn trong khi giảm thiểu mức tiêu thụ điện năng.

Các phần của bài viết này dựa trên nội dung do Arm Limited giữ bản quyền và đóng góp.

Định nghĩa về hình học

Hình học, hay lưới đa giác, là một tập hợp các đỉnh, cạnh và mặt tạo nên hình dạng của một đối tượng 3D. Đó có thể là một chiếc ô tô, vũ khí, môi trường, nhân vật hoặc bất kỳ loại tài sản hình ảnh nào trong trò chơi.

Hình 1. Các đỉnh, cạnh và tam giác của một khối lập phương.

Hình học bao gồm các phần sau:

  • Đỉnh: Các điểm xác định cấu trúc của một đối tượng trong không gian 3D.

  • Cạnh: Hai đỉnh được nối với nhau bằng một đường thẳng.

  • Tam giác: Ba đỉnh được nối với nhau bằng ba cạnh tạo thành một tam giác. Đôi khi, hình này được gọi là đa giác hoặc mặt. Trong phần mềm 3D như 3ds Max, Maya hoặc Blender, bạn thường làm việc với các tứ giác. Tứ giác là một đa giác có bốn cạnh, dễ sửa đổi và sử dụng hơn. Khi được kết xuất, các đa giác này hiển thị trên màn hình dưới dạng tam giác.

Xem các mục sau để tìm hiểu thêm về hình học:

Cách sử dụng tam giác và đa giác

Mục này trình bày ngắn gọn các phương pháp hay nhất khi bạn sử dụng tam giác và đa giác. Các phương pháp này bao gồm các đề xuất sau:

Giảm số lượng tam giác

Nếu bạn thêm quá nhiều tam giác, hiệu suất của trò chơi sẽ bị ảnh hưởng.

Sử dụng ít tam giác nhất có thể. Bạn nên sử dụng vừa đủ để có được chất lượng mong muốn. Cân nhắc ảnh hưởng đến hiệu suất khi bạn tạo nội dung cho trò chơi dành cho thiết bị di động. Việc xử lý đỉnh gây ra mức hao tổn lớn. Càng có ít đỉnh, hiệu suất tổng thể của trò chơi càng cao. Ngoài ra, càng sử dụng ít tam giác thì trò chơi càng có thể chạy trên nhiều thiết bị không có GPU mạnh.

Hình ảnh sau đây cho thấy bạn có thể duy trì chất lượng với ít tam giác hơn:

Đối tượng ở bên trái có 584 hình tam giác, trong khi đối tượng ở bên phải có 704 hình tam giác.

Hình 2. So sánh hai đối tượng có số lượng tam giác khác nhau, nhưng trông giống nhau ở chế độ tô bóng. Trong đối tượng ở bên trái, những cạnh không góp phần tạo nên hình dáng đã bị xoá.

Trên các nền tảng di động, số đỉnh tối đa phổ biến của một lưới riêng lẻ là 65.535. Để đảm bảo tính tương thích tối đa, bạn phải duy trì ở dưới con số này.

Lý do cho giới hạn này là tất cả GPU chỉ đảm bảo hỗ trợ các chỉ mục 16 bit, có thể biểu thị trong phạm vi từ 0 đến 65.535 đỉnh. Hầu hết (nhưng không phải tất cả) GPU hiện đại đều hỗ trợ chỉ mục 32 bit, biểu thị phạm vi từ 0 đến 4.294.967.295 đỉnh. Nếu vượt quá phạm vi được hỗ trợ khi sử dụng chỉ mục 16 bit, bạn sẽ bị thiếu hình dạng hoặc kết xuất hình dạng không chính xác.

Luôn xem và kiểm thử trò chơi trên mọi thiết bị mà bạn định phát hành, thay vì màn hình máy tính. Một số mô hình có độ chi tiết cao có thể không kết xuất chính xác hoặc thậm chí không hiển thị trên thiết bị di động.

Bạn nên sử dụng nhiều tam giác hơn trên đối tượng ở nền trước và ít hơn trên đối tượng ở nền sau. Điều này có lợi hơn cho các trò chơi có góc nhìn (POV) từ máy ảnh tĩnh. Ví dụ sau cho thấy cách sử dụng chi tiết thích hợp đối với các đối tượng khác nhau.

Các chi tiết của đối tượng ở nền trước được tạo bằng tam giác. Các chi tiết ở nền sau được đưa vào bề mặt phẳng.

Hình 3. Ví dụ này cho thấy mức độ chi tiết cao của đối tượng ở nền trước so với đối tượng ở nền sau.

Số lượng tam giác tối đa bạn nên sử dụng cho một mô hình thay đổi dựa trên thiết bị và nội dung. Nếu có nhiều đối tượng trên màn hình hơn, hãy sử dụng ít tam giác hơn cho từng mô hình. Nếu chỉ hiển thị hai hoặc ba đối tượng, các đối tượng đó có thể bao gồm nhiều tam giác hơn.

Ví dụ sau đây cho thấy hai mô hình từ các bản minh hoạ khác nhau. Bản minh hoạ của Circuit VR chỉ có một nhân vật rô-bốt. Vì chỉ có một đối tượng duy nhất, nên mô hình rô-bốt có nhiều hình tam giác hơn. Mô hình còn lại là từ bản minh hoạ của Armies. Bản minh hoạ này có hàng trăm quân lính trong mỗi khung nên mỗi quân lính có ít hình tam giác hơn.

Hình 4. So sánh số lượng tam giác cho hai trường hợp sử dụng khác nhau. Ở bên trái, Rô-bốt CircuitVR có 11.000 hình tam giác. Ở bên phải, Quân lính Armies có 360 hình tam giác.

Ví dụ về cách sử dụng tam giác

Hình bên dưới là ví dụ về số lượng tam giác được dùng trong bản minh hoạ công nghệ của Armies.

Trong bản minh hoạ của Armies, là một bản minh hoạ công nghệ di động 64 bit được tạo trong Unity, máy ảnh ở dạng tĩnh với nhiều nhân vật hoạt hình. Tổng cộng, mỗi khung hình kết xuất khoảng 210.000 hình tam giác. Số lượng tam giác này cho phép bản minh hoạ chạy ổn định ở khoảng 30 khung hình/giây (FPS).

Hình 5. Một ví dụ kết xuất từ bản minh hoạ công nghệ của Armies cho thấy số lượng tam giác đã dùng.

Các đối tượng lớn nhất trong cảnh, tức tháp đại bác, có khoảng 3.000 hình tam giác vì chiếm phần lớn màn hình.

Mỗi nhân vật sử dụng khoảng 360 hình tam giác. Vì có số lượng lớn và chỉ xuất hiện ở xa nên các nhân vật đó không sử dụng nhiều hình tam giác. Từ góc nhìn của máy ảnh, các nhân vật đó trông rất vừa phải.

Hình 6. Hình ảnh quân lính sử dụng ít tam giác trong bản minh hoạ công nghệ của Armies.

Sử dụng tam giác ở khu vực quan trọng

Đỉnh gây ra mức hao tổn lớn trên nền tảng di động. Để ngăn chặn lãng phí ngân sách xử lý, hãy đặt đỉnh ở những khu vực đóng góp vào chất lượng hình ảnh của trò chơi. Các chi tiết nhỏ trên đối tượng 3D có thể không hiển thị trên màn hình hoàn thiện của trò chơi. Các chi tiết rất nhỏ có thể không nhìn thấy được do kích thước màn hình nhỏ và vị trí của đối tượng 3D.

Thay vì các chi tiết nhỏ, hãy tập trung vào hình dạng lớn góp phần tạo nên hình dáng. Hình ảnh sau đây là ví dụ cho việc tập trung vào hình dáng:

Hình 7. Đường màu đỏ xung quanh rô-bốt tượng trưng cho hình dáng của rô-bốt.

Bạn nên sử dụng ít tam giác hơn trên các khu vực không thể nhìn thấy thường xuyên từ góc nhìn của máy ảnh. Ví dụ: gầm ô tô hoặc lưng tủ quần áo. Nếu một phần của đối tượng không bao giờ xuất hiện, hãy xoá phần đó.

Bạn phải thực hiện việc xoá một phần của đối tượng thật cẩn thận. Việc này cũng có thể hạn chế khả năng sử dụng lại đối tượng. Ví dụ: nếu bạn xoá phần dưới cùng của lưới bàn, người dùng sẽ nhận thấy phần bị xoá nếu bàn bị lật ngược.

Không lập mô hình các chi tiết nhỏ bằng lưới tam giác có mật độ cao. Sử dụng hoạ tiết và bản đồ pháp tuyến cho chi tiết nhỏ. Ví dụ sau cho thấy cùng một lưới khi có và không có bản đồ pháp tuyến.

Hình 8. So sánh mô hình khi áp dụng và không áp dụng bản đồ pháp tuyến.

Xoá tam giác vi mô

Tam giác vi mô là các tam giác rất nhỏ không góp phần tạo nên hình ảnh hoàn thiện của một cảnh.

Tất cả đối tượng 3D sử dụng nhiều đa giác đều gặp phải vấn đề tam giác vi mô khi di chuyển ra xa máy ảnh. Không có định nghĩa tiêu chuẩn ngành nào cho tam giác vi mô, nhưng tam giác vi mô thường được hiểu là các tam giác có kích thước chưa tới 1 đến 10 pixel trong hình ảnh hoàn thiện. Nên tránh dùng tam giác vi mô vì GPU cần phải xử lý trọn vẹn tất cả tam giác này, mặc dù tam giác vi mô không góp phần tạo nên hình ảnh hoàn thiện.

Hai nguyên nhân tạo ra tam giác vi mô:

  • Chi tiết quá nhỏ và có nhiều tam giác.
  • Các đối tượng ở xa máy ảnh có nhiều hình tam giác.

Hình 9. Ảnh hưởng của khoảng cách đến tam giác vi mô.

Trong Hình 9, rô-bốt ở nền trước không có tam giác vi mô. Rô-bốt ở nền sau có tam giác vi mô vì mỗi tam giác chỉ có kích thước từ 1 đến 10 pixel.

Hình 10. So sánh tam giác vi mô trên các mô hình có nhiều chi tiết. Hầu hết tam giác trong khu vực được đánh dấu đều quá nhỏ, không thể nhìn thấy trên màn hình điện thoại.

Đối với đối tượng ở xa máy ảnh, hãy sử dụng mức độ chi tiết (LOD). Việc này giúp giảm độ phức tạp của một đối tượng và khiến đối tượng trở nên đơn giản hơn. Kết quả là đối tượng có ít hình tam giác hơn.

Không lập mô hình các chi tiết bằng nhiều tam giác. Sử dụng hoạ tiết và bản đồ pháp tuyến cho loại chi tiết nhỏ này. Bạn có thể hợp nhất các đỉnh và các chi tiết tam giác quá nhỏ, không góp phần tạo nên hình ảnh hoàn thiện.

Bạn cần giảm số lượng tam giác vi mô vì các tam giác đó có thể ảnh hưởng đến băng thông của bộ nhớ. Nếu có nhiều tam giác hơn, lượng dữ liệu gửi tới GPU sẽ lớn hơn. Trên thiết bị di động, điều này có thể ảnh hưởng đến thời lượng pin. Việc tiêu thụ nhiều điện năng có thể gây ra tình trạng điều tiết nhiệt, làm hạn chế hiệu suất tối đa của GPU.

Tránh sử dụng tam giác dài và mỏng

Đây là các tam giác khi được kết xuất trong hình ảnh hoàn thiện sẽ có kích thước một chiều nhỏ hơn 10 pixel và trải dài trên màn hình. Tam giác dài và mỏng thường gây ra mức hao tổn xử lý lớn hơn so với các tam giác khác.

Trong hình ảnh sau đây, cạnh xiên trên cột có một hình tam giác dài và mỏng khi nhìn từ xa. Cạnh xiên này không có vấn đề gì nếu bạn nhìn gần.

Hình 11. Cạnh xiên trên cột là một tam giác dài và mỏng.

Nếu có thể, bạn nên xoá tam giác dài và mỏng khỏi tất cả đối tượng.

Đối với các đối tượng sáng bóng, tam giác dài và mỏng có thể khiến ánh sáng nhấp nháy khi máy ảnh di chuyển. LOD có thể giúp xoá các tam giác dài và mỏng khi đối tượng ở xa máy ảnh.

Nếu có thể, hãy duy trì hình dạng gần đều cho tất cả tam giác. Điều này giúp các tam giác có diện tích lớn hơn và cạnh ngắn hơn. Tam giác dài và mỏng hoạt động kém hơn so với tam giác lớn hơn nói chung. Để biết thêm thông tin về diện tích tam giác, hãy đọc nội dung Phép đạc tam giác.

Mức độ chi tiết

Mức độ chi tiết (LOD) là một kỹ thuật giúp giảm độ phức tạp khi đối tượng cách xa góc nhìn của người xem hơn. Dạng LOD phổ biến nhất bao gồm nhiều phiên bản lưới, với số đỉnh ít dần. LOD không chỉ giúp giảm số lượng đỉnh cần xử lý, mà còn tránh được vấn đề tam giác vi mô. Kỹ thuật này cũng giúp các đối tượng ở xa hơn trong cảnh trông đẹp hơn.

Bạn nên sử dụng LOD bất cứ khi nào có thể. Tập trung vào hình dáng của đối tượng. Tốt nhất là bạn nên tập trung vào các khu vực phẳng để hướng đến việc giảm đỉnh. Hình ảnh sau đây cho thấy việc sử dụng LOD, áp dụng cho mô hình rô-bốt.

Ở bên trái là rô-bốt có nhiều chi tiết nhất và số lượng tam giác lớn nhất. Ở bên phải là rô-bốt ở xa hơn, có ít chi tiết hơn và sử dụng ít tam giác hơn.

Hình 12. So sánh số lượng đỉnh được sử dụng khi LOD thay đổi.

Trong Hình 12, khó có thể thấy được sự khác biệt trên cùng một đối tượng khi sử dụng 200 hình tam giác hay sử dụng 2.000 tam giác nhưng ở xa. Đối tượng có nhiều tam giác hơn sẽ có chi phí tài nguyên cao nhưng không cải thiện được hình ảnh khi xem ở khoảng cách xa.

Hình 13. So sánh các mô hình ở xa với số lượng tam giác khác nhau.

Khái niệm LOD cũng có thể áp dụng cho độ phức tạp của chương trình đổ bóng và độ phân giải của hoạ tiết. Ở LOD thấp hơn, bạn có thể sử dụng những chất liệu khác cùng với chương trình đổ bóng đơn giản hơn và ít hoạ tiết hơn. Bạn cũng nên đảm bảo rằng các hoạ tiết có mipmap để các mức hoạ tiết có độ phân giải thấp hơn được áp dụng cho các đối tượng ở xa. Các biện pháp này sẽ làm tăng hiệu suất, đánh đổi bằng sự gia tăng dung lượng dữ liệu.

Bạn không nên sử dụng LOD cho bất kỳ trò chơi nào có máy ảnh tĩnh và đối tượng tĩnh. Các đối tượng di chuyển lại gần và ra xa máy ảnh sẽ hưởng lợi nhất từ LOD. Các đối tượng tĩnh không di chuyển nên sẽ không hưởng lợi gì khi sử dụng LOD.

Hình 14. Cảnh quay bằng máy ảnh tĩnh trong bản minh hoạ công nghệ của Armies không sử dụng LOD.

Tỷ lệ LOD

Sử dụng tỷ lệ nhất quán khi bạn giảm số lượng tam giác cho LOD. Bạn nên giảm số lượng tam giác xuống 50% cho mỗi mức độ.

Không sử dụng LOD trên các đối tượng đơn giản. Các đối tượng vốn có ít tam giác không hưởng lợi từ LOD. Ví dụ từ bản minh hoạ công nghệ của Armies sau đây cho thấy trò chơi trông như thế nào với một hình ảnh tĩnh và các đối tượng có ít tam giác.

Hình 15. So sánh giữa các mô hình khi LOD giảm.

Xác minh mức LOD thay đổi ở khoảng cách thích hợp từ máy ảnh. Bạn nên phân tích dựa trên cách các mức LOD được sử dụng trong trò chơi.

Hình 16. So sánh về hình ảnh của mô hình LOD 3 ở gần và ở khoảng cách dự kiến.

Không có con số cố định cho mức LOD hợp lý đối với đối tượng. Mức LOD hợp lý phụ thuộc vào kích thước và tầm quan trọng của đối tượng. Ví dụ: nhân vật trong trò chơi hành động hoặc ô tô trong trò chơi đua xe có thể cần nhiều mức LOD hơn so với các vật thể nền nhỏ như cây cối.

Xin lưu ý rằng quá nhiều LOD sẽ tiêu tốn tài nguyên CPU. CPU cần thêm sức mạnh xử lý để quyết định nên hiển thị LOD nào. LOD cũng tốn bộ nhớ, làm tăng dung lượng tệp và mức sử dụng VRAM. Quá trình tạo và xác minh mô hình LOD cũng mất thêm thời gian.

Có hai cách để tạo lưới LOD: thủ công và tự động.

  • Bạn có thể tạo lưới LOD theo cách thủ công bằng bất kỳ phần mềm 3D nào.
    • Để thực hiện việc này, hãy xoá các vòng lặp cạnh hoặc giảm số đỉnh trên đối tượng 3D.
    • Cách này giúp nghệ sĩ có quyền kiểm soát cao nhất đối với sản phẩm hoàn thiện, nhưng có thể tốn thời gian hơn.
  • Lưới LOD có thể được tạo tự động.
    • Bạn có thể sử dụng một đối tượng sửa đổi bên trong gói 3D như ProOptimizer trong 3ds Max hoặc Generate LOD Meshes trong Maya.
    • Bạn có thể sử dụng phần mềm tạo LOD như Simplygon hoặc InstaLOD.
    • Một số công cụ phát triển trò chơi có tính năng tạo LOD tự động cho phép bạn tạo và áp dụng lưới LOD.

Các phương pháp hay nhất

Có những kỹ thuật bổ sung để giảm tài nguyên cần thiết cho trò chơi, đồng thời giúp duy trì độ trung thực đồ hoạ.

Nhóm làm mượt hoặc pháp tuyến đỉnh tuỳ chỉnh

Sử dụng nhóm làm mượt hoặc pháp tuyến đỉnh tuỳ chỉnh để xác định độ cứng của một cạnh và thay đổi vẻ ngoài của mô hình. Nhóm làm mượt giúp tạo bóng đổ tốt hơn theo hướng nghệ thuật sử dụng ít đa giác. Nhóm làm mượt cũng ảnh hưởng đến việc phân tách đảo UV và chất lượng của bản đồ pháp tuyến khi tích hợp.

Ví dụ về nhóm làm mượt. Ở bên trái, rô-bốt được áp dụng nhóm làm mượt.

Hình 17. So sánh mô hình khi có và không có nhóm làm mượt.

Nếu bạn triển khai nhóm làm mượt trên mô hình 3D, nhóm đó phải được xuất từ phần mềm 3D và nhập vào công cụ.

Cấu trúc liên kết lưới

Khi bạn tạo một tài sản 3D mới, hãy đảm bảo rằng tài sản đó có cấu trúc liên kết gọn gàng. Cấu trúc liên kết sạch rất cần thiết đối với nhân vật cũng như các đối tượng chuyển động và thay đổi khác. Cấu trúc liên kết không cần phải hoàn hảo. Lưu ý rằng người dùng cuối sẽ không thấy khung dây, đồng thời hoạ tiết và vật liệu sẽ có tác động lớn hơn đến vẻ ngoài của mô hình.

Hình 18. Cấu trúc liên kết, khung dây và phiên bản hoàn thiện của khối đá trong bản minh hoạ công nghệ của Armies.

Phóng đại hình dạng

Bạn có thể phóng đại một số hình dạng để làm cho mô hình dễ diễn giải hơn. Điều này phụ thuộc rất nhiều vào loại và phong cách của trò chơi. Vì màn hình thiết bị di động nhỏ, nên bạn có thể khó thấy được một số hình dạng có kích thước rất nhỏ. Việc phóng đại những hình dạng này có thể giúp người dùng thấy được ngay cả ở khoảng cách xa.

Ví dụ: bạn có thể làm cho các nhân vật có bàn tay lớn hơn để dễ nhìn thấy hơn.

Hình 19. Mô hình ví dụ thể hiện tỷ lệ phóng đại để dễ thấy hơn.