Kết xuất Dựa trên Thực thể (PBR) cho phép bạn đại diện cho các ánh sáng và bóng chân thực bằng cách sử dụng nhiều loại hình ảnh texture, hay bản đồ, trên một đối tượng duy nhất. Việc kết hợp nhiều bản đồ texture có thể mô phỏng chính xác hơn về màu sắc, độ nhám và độ phản chiếu trong bất kỳ môi trường ánh sáng nào và có thể nâng cao các yếu tố hình ảnh của tài sản và môi trường của bạn.


Có nhiều ứng dụng và quy trình khác nhau cho việc tạo ra các texture PBR. Bạn có thể sử dụng chúng trong quá trình mô hình hóa và tạo texture của các đối tượng 3D tùy chỉnh, với điều kiện rằng Roblox Studio hỗ trợ các bản đồ texture cụ thể mà bạn đang sử dụng.
Hướng dẫn này cung cấp hướng dẫn về cấu hình các đối tượng mesh của bạn để sử dụng các bản đồ texture PBR và mô tả các trường hợp sử dụng phổ biến và thực tiễn tốt nhất cho các bản đồ texture được Roblox hỗ trợ. Khi tạo bề mặt của riêng bạn, hãy xem tài liệu tham khảo vật liệu cho các giá trị vật liệu thông thường, so sánh hình ảnh và ví dụ về quần áo.
Kích hoạt vẻ bề ngoài
Bạn có thể thêm các texture PBR vào bất kỳ MeshPart nào bằng cách thêm một đối tượng SurfaceAppearance, mà ghi đè lên texture đã được chỉ định ban đầu. Nói chung, bạn không thể sửa đổi các thuộc tính của SurfaceAppearance bằng các script trong quá trình trò chơi vì engine yêu cầu một số tiền xử lý để hiển thị các đồ họa này. Tương tự như việc thêm một texture cơ bản, mỗi bản đồ hình ảnh texture phải trỏ đến ID tài sản hình ảnh đã tải lên thích hợp.
Để kích hoạt bề ngoài cho một MeshPart:
Trong cửa sổ Explorer, di chuột qua MeshPart và nhấp vào nút ⊕.
Chèn một SurfaceAppearance từ menu ngữ cảnh.

Khi bạn sẵn sàng thêm các bản đồ texture vào đối tượng SurfaceAppearance, bạn có thể nhấp vào mỗi thuộc tính bản đồ trong cửa sổ Properties và nhập một ID tài sản.
Bản đồ texture
Studio hiện hỗ trợ 5 loại bản đồ texture PBR: màu sắc, bình thường, nhám, kim loại, và phát quang. Mỗi bản đồ trong số này tương ứng với một khía cạnh quan trọng của vẻ bề ngoài bề mặt của đối tượng. Các bản đồ texture chỉ thay đổi vẻ ngoài hình ảnh và không ảnh hưởng đến hình học của đối tượng MeshPart.
Xem các ví dụ sau đây để có cái nhìn tổng quan về các bản đồ texture được Roblox hỗ trợ và các tài nguyên bổ sung:
Thuộc tính ColorMap thiết lập dữ liệu màu của bề mặt, bao gồm bất kỳ độ trong suốt nào có trong bản đồ. Xem màu sắc (albedo) để biết thêm thông tin.



Màu sắc (albedo)
Bản đồ màu sắc, hoặc albedo, xác định màu sắc của texture của bạn và chủ yếu bao gồm thông tin màu với ít hoặc không có thông tin về ánh sáng hoặc kết cấu. Để tùy chỉnh thêm, bạn cũng có thể thêm độ trong suốt vào texture albedo của mình bằng cách thêm độ mờ cho bản đồ hình ảnh của bạn.
Chế độ alpha
Đối với các đối tượng yêu cầu các phần trong suốt một phần hoặc hoàn toàn, chẳng hạn như cỏ, lá cây, ren, hoặc các vật liệu như bụi bẩn hoặc bụi bẩn, bạn có thể sử dụng nhiều chế độ alpha khác nhau để áp dụng độ trong suốt cho bản đồ màu của bạn. Nếu định dạng hình ảnh của bản đồ màu của bạn hỗ trợ kênh alpha, bạn có thể áp dụng một bản đồ alpha grayscale nơi 0.0 là trong suốt và 1.0 là không trong suốt. Tương tự, khi sử dụng định dạng hình ảnh như .png, bất kỳ độ mờ nào trên bản đồ màu sẽ áp dụng như độ trong suốt trên tài sản.
Bạn có thể áp dụng độ trong suốt trong hai hành vi khác nhau bằng cách thiết lập các giá trị AlphaMode sau:
- Không trong suốt — Bỏ qua kênh alpha của ColorMap và sử dụng giá trị màu trực tiếp từ bản đồ màu.
- Lớp phủ — Lớp phủ ColorMap lên màu của mesh bên dưới thuộc tính MeshPart.Color. Các bản đồ màu sử dụng chế độ lớp phủ tiết lộ màu cơ bản của mesh ở mọi nơi có độ trong suốt. Đây là cài đặt mặc định.
- Độ trong suốt — Loại bỏ mesh có thể nhìn thấy dựa trên độ trong suốt trong ColorMap. Điều này làm cho mesh trở thành trong suốt và không tiết lộ màu gốc của mesh khi có độ trong suốt.
Không trong suốt
Bạn có thể sử dụng chế độ Enum.AlphaMode.Opaque để bỏ qua hoàn toàn kênh alpha của ColorMap. Trong trường hợp này, giá trị alpha được giả định là 1 (hoàn toàn không trong suốt).
Ví dụ sau đây minh họa cách thức chế độ Opaque hoạt động bằng cách sử dụng một đối tượng màu xanh lam làm tham khảo:
Lớp phủ
Bạn có thể sử dụng Enum.AlphaMode.Overlay để tiết lộ các phần màu gốc của mesh. Vì các khu vực trong suốt của bản đồ màu tiết lộ màu bên dưới, bạn có thể thiết kế một bản đồ texture độc đáo có thể tiết lộ một phần hoặc hoàn toàn thuộc tính Color của mesh cho các tông màu da tùy chỉnh hoặc các tình huống khác với các màu sắc độc đáo.
Ví dụ sau đây minh họa cách chế độ Overlay hoạt động bằng cách sử dụng một quả cầu màu xanh lam nhạt làm tham khảo:
Ví dụ tiếp theo sử dụng chế độ Overlay cho các nhân vật tùy chỉnh, tiết lộ tông màu da gốc của nhân vật:


Xem tông màu da tùy chỉnh để biết thêm thông tin về việc tối ưu hóa một lớp phủ cho da và các ứng dụng tương tự.
Độ trong suốt
Bạn có thể sử dụng chế độ Enum.AlphaMode.Transparency để tạo ra các đối tượng phức tạp hoặc tinh xảo, chẳng hạn như ren hoặc lưới, bằng cách loại bỏ các phần có thể nhìn thấy của mesh như là một lựa chọn thay vì tạo hình học của mesh. Vì điều này không ảnh hưởng đến hình học của đối tượng mesh, điều này có thể cho phép bạn tạo ra các đối tượng chi tiết mà không gây ảnh hưởng đến hiệu suất của một mô hình mesh phức tạp.
Ví dụ sau đây minh họa cách một độ trong suốt một phần và hoàn toàn trong chế độ này trực quan loại bỏ các phần của mesh:



Có hai kết quả cho chế độ Transparency, tùy thuộc vào việc MeshPart.Transparency được thiết lập là 0 hoặc ít nhất là 0.02, mặc dù độ chính xác số có thể dẫn đến các giá trị nhỏ như 0.01 sẽ kích hoạt độ trong suốt không trong suốt.
- Khi alpha được sử dụng để cắt ra hình dạng của các đối tượng hầu như không trong suốt với các cạnh cứng như cây cỏ, vải ren, và lưới, hãy đặt MeshPart.Transparency là 0. Khi các phần của bề mặt hoàn toàn không trong suốt, engine Roblox có thể hiển thị chúng với độ che chắn dựa trên độ sâu. Bề mặt không trong suốt cũng thường hoạt động tốt hơn với các hiệu ứng dựa trên độ sâu như DepthOfFieldEffect, khúc xạ thủy tinh và nước, và phản chiếu nước.
- Khi alpha được sử dụng để thêm chi tiết vào các đối tượng nửa trong suốt hoặc các đối tượng với các độ mờ mượt mà, hãy đặt MeshPart.Transparency là ít nhất 0.02. Điều này cải thiện chất lượng của những đối tượng như cửa sổ bẩn và lông vũ có cạnh mịn, nhưng nó sẽ không hoạt động với tất cả các hiệu ứng.
Mặt nạ tông màu
Bạn có thể sử dụng chế độ Enum.AlphaMode.TintMask để áp dụng tông màu SurfaceAppearance.Color cho các vùng chọn lọc của bề mặt. Việc tông màu là mạnh nhất nơi kênh alpha hoàn toàn có thể nhìn thấy và không được áp dụng nơi kênh alpha là trong suốt.

Tông màu màu
Bạn có thể áp dụng một tông màu cho bản đồ màu của mình bằng cách sửa đổi thuộc tính SurfaceAppearance.Color. Việc tông màu không ảnh hưởng đến hiệu suất và bạn có thể tiết kiệm bộ nhớ bằng cách sử dụng một bản đồ màu duy nhất với các tông màu khác nhau. Sử dụng tông màu để tạo ra sự khác biệt chi phí thấp bổ sung giữa các texture PBR của MeshPart của bạn hoặc để lập trình thay đổi màu bề mặt PBR của bạn theo thời gian thực.



Tông màu SurfaceAppearance.Color được áp dụng như một yếu tố nhân, vì vậy vẻ ngoài cuối cùng là một hàm của Color3 (màu texel) nhân với SurfaceAppearance.Color. Điều này có nghĩa là việc tạo các SurfaceAppearance.ColorMap ban đầu của bạn với các màu gần như trắng trong gam màu xám sẽ tạo ra hiệu ứng tông màu mạnh nhất khi thuộc tính này được áp dụng.
Việc tông màu chỉ áp dụng cho SurfaceAppearance.ColorMap và không áp dụng cho MeshPart.Color. Bạn vẫn có thể tiếp tục sử dụng các kênh alpha khi áp dụng độ trong suốt.
Khi SurfaceAppearance.AlphaMode được đặt thành Overlay và có một kênh alpha hiện diện, màu gốc của MeshPart.Color được tiết lộ và việc tông màu SurfaceAppearance.Color chỉ áp dụng cho bản đồ màu SurfaceAppearance có thể nhìn thấy.
Khi SurfaceAppearance.AlphaMode được đặt thành TintMask và có một kênh alpha hiện diện, kênh alpha kiểm soát mức độ tông màu của SurfaceAppearance.Color. Việc tông màu là mạnh nhất ở nơi mà kênh alpha hoàn toàn có thể nhìn thấy và không được áp dụng ở nơi mà kênh alpha là trong suốt.

Bình thường
Bản đồ bình thường, hoặc bề mặt, thêm chiều sâu cho kết cấu của bạn và hoạt động tương tự như một bản đồ chiều cao. Do đó, hiệu ứng có thể phai yếu hoặc mạnh phụ thuộc vào góc nhìn và môi trường ánh sáng.
Trong hình dưới đây, bạn có thể chuyển đổi giữa mẫu tham khảo và mẫu bản đồ để so sánh các giá trị bản đồ bình thường:



Các kênh R, G, và B của hình ảnh tương ứng với các thành phần X, Y, và Z của vector bề mặt cục bộ. Một hình ảnh đồng nhất có màu [127, 127, 255] chuyển đổi thành một bản đồ bình thường hoàn toàn bằng phẳng. Roblox chỉ hỗ trợ các bản đồ bình thường theo định dạng OpenGL - Không gian Tangent.
Các bản đồ bình thường ảnh hưởng rõ rệt đến bề mặt hình ảnh của một mô hình và có thể làm nổi bật các đường nối không hoàn hảo trong texture của bạn. Bất cứ khi nào có thể, hãy giữ cho các đường nối của texture được ẩn để tránh các vấn đề hình ảnh với mô hình của bạn.
Nhám
Các bản đồ nhám, hoặc microsurface, xác định cách ánh sáng được phân tán trên bề mặt của mô hình của bạn. Khi độ nhám ở mức 0%, bề mặt sẽ không phân tán ánh sáng chút nào, dẫn đến độ phản chiếu và độ bóng sắc nét và sáng hơn rất nhiều trên vật liệu của bạn. Ở mức 100%, ánh sáng và phản chiếu được phân tán đều trên mô hình dẫn đến một bề mặt mờ như không phản chiếu.
Hình dưới đây cho thấy sự so sánh của các giá trị bản đồ nhám khác nhau:



Độ nhám có thể ảnh hưởng đến mức độ phản chiếu của một đối tượng ở các góc độ khác nhau, được gọi là hiệu ứng Fresnel. Quy trình fresnel của Studio nhằm đạt được độ chính xác về mặt vật lý trong thế giới thực, mặc dù bạn có thể gặp phải đóng góp specular bất ngờ ở những góc độ nhất định ngay cả với các bề mặt nhám. Trong một số trường hợp, bạn có thể bù đắp bằng cách tăng giá trị bản đồ nhám của bạn khoảng 0.1 nham nhở hơn để đạt được một phản ứng chiếu sáng nhất quán với các vật liệu của bạn.
Mặc dù Roblox thể hiện chính xác hiệu ứng ánh sáng này, độ sáng và độ phản chiếu của một bề mặt có thể không phản ứng đồng nhất giữa phần mềm tạo nội dung texture của bạn, chẳng hạn như Substance Painter, và Studio. Xem ví dụ về quần áo để thấy sự khác biệt trong việc hiển thị giữa các ứng dụng.
Kim loại
Kim loại xác định độ phản chiếu của bề mặt. Trong hầu hết các trường hợp, bạn nên đặt giá trị này là 0% (không phải kim loại) hoặc 100% (kim loại), mặc dù bạn có thể sử dụng các giá trị kim loại một phần khi tạo các bề mặt có tính chất phản chiếu trung bình như satin hoặc lụa. Thực tiễn này có thể giả định một cách tinh tế các phản chiếu trong vật liệu để làm nổi bật màu sắc từ bản đồ màu/albedo so với các màu sắc phản chiếu trong môi trường.
Xem hình dưới đây để so sánh các giá trị bản đồ kim loại khác nhau:



Các renderer PBR khác nhau sử dụng nhiều quy trình khác nhau để xử lý độ phản chiếu. Studio chỉ sử dụng quy trình kim loại hóa xác định xem một vật liệu là không phải kim loại hay kim loại, đôi khi được gọi là cách điện hoặc dẫn điện.
Mặt nạ phát quang
Một chất liệu texture EmissiveMaskContent grayscale áp dụng một mặt nạ phát quang trên bề mặt. Điều này cho phép bạn sử dụng một texture để kiểm soát khả năng phát quang để có nhiều kiểm soát nghệ thuật hơn so với chất liệu Neon tất cả mọi thứ và cho phép bạn tạo ra các hiệu ứng phát sáng chi tiết như văn bản phát sáng, áo giáp tương lai, hoặc các sinh vật phát quang.
Thuộc tính liên quan EmissiveTint xác định màu sắc của sự đóng góp phát quang, và EmissiveStrength xác định độ mạnh của sự đóng góp phát quang.







