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


Nhiều ứng dụng và quy trình làm việc có sẵn để tạo ra các kết cấu PBR. Bạn có thể sử dụng chúng trong các giai đoạn mô hình hóa và kết cấu của việc tạo ra đối tượng 3D tùy chỉnh, với điều kiện rằng Roblox Studio hỗ trợ các bản đồ kết cấu cụ thể mà bạn đang sử dụng.
Hướng dẫn này cung cấp hướng dẫn về cách thiết lập các đối tượng lưới của bạn để sử dụng các bản đồ kết cấu PBR, và mô tả các trường hợp sử dụng phổ biến và thực hành tốt nhất cho các bản đồ kết cấu được Roblox hỗ trợ. Khi tạo bề mặt riêng của bạn, hãy xem tham chiếu vật liệu để biết các giá trị vật liệu chung, so sánh hình ảnh và ví dụ về trang phục.
Kích hoạt vẻ bề ngoài của bề mặt
Bạn có thể thêm các kết cấu PBR vào bất kỳ MeshPart nào bằng cách tạo một đối tượng SurfaceAppearance mà sẽ ghi đè lên kết cấu gán ban đầu. Nói chung, bạn không thể thay đổi thuộc tính của SurfaceAppearance bằng các tập lệnh trong suốt trò chơi vì động cơ yêu cầu một số xử lý trước để hiển thị đồ họa này. Tương tự như việc thêm một kết cấu cơ bản, mỗi bản đồ hình ảnh kết cấu phải trỏ đến ID tài sản hình ảnh đã tải lên thích hợp.
Để kích hoạt sự hiện diện bề mặt cho MeshPart:
Trong cửa sổ Explorer, di chuột qua MeshPart và nhấn 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 đồ kết cấu 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.
Các bản đồ kết cấu
Studio hiện tại hỗ trợ 4 loại bản đồ kết cấu PBR: màu sắc, bình thường, độ nhám, và kim loại. Mỗi bản đồ này tương ứng với một khía cạnh quan trọng của sự xuất hiện bề mặt của đối tượng. Các bản đồ kết cấu chỉ thay đổi diện mạo 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 để có cái nhìn tổng quan về các bản đồ kết cấu đượ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 sắc của bề mặt, bao gồm bất kỳ độ trong suốt nào hiện có trong bản đồ. Xem màu sắc (albedo) để biết thêm thông tin.



Màu sắc (albedo)
Màu sắc, hoặc albedo, bản đồ xác định màu sắc của kết cấu của bạn và chủ yếu bao gồm thông tin màu sắc với ít hoặc không có thông tin á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 kết cấu albedo của bạn bằng cách thêm độ mờ vào bản đồ hình ảnh của bạn.
Chế độ Alpha
Đối với những đố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á, ren, hoặc nhãn dán như bụi bẩn hoặc cái bẩn, bạn có thể sử dụng nhiều chế độ alpha khác nhau để áp dụng độ trong suốt vào 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 ở màu xám trong đó 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 đều áp dụng như độ trong suốt trên tài sản.
Bạn có thể áp dụng độ trong suốt theo hai cách khác nhau bằng cách thiết lập các giá trị sau cho AlphaMode:
- Chồng lên — Chồng lên ColorMap lên MeshPart.Color của lưới phía dưới. Các bản đồ màu khi sử dụng chế độ chồng lên sẽ tiết lộ màu gốc của lưới ở bất kỳ đâu có độ trong suốt. Đây là cài đặt mặc định.
- Độ trong suốt — Loại bỏ lưới có thể nhìn thấy dựa trên độ trong suốt trong ColorMap. Điều này làm cho lưới trở nên trong suốt và không tiết lộ màu lưới gốc bất cứ khi nào có độ trong suốt.
Mờ
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 thể hiện cách hoạt động của chế độ Opaque bằng cách sử dụng một đối tượng màu trắng làm tham chiếu:


Chồng lên
Bạn có thể sử dụng Enum.AlphaMode.Overlay để tiết lộ các phần của màu gốc của lưới. Vì các vùng trong suốt của bản đồ màu tiết lộ màu phía dưới, bạn có thể thiết kế một bản đồ kết cấu độc đáo mà tiết lộ một phần hoặc toàn bộ giá trị màu Color cho các tông màu da tùy chỉnh hoặc các tình huống có màu sắc độc đáo khác.
Ví dụ sau thể hiện cách hoạt động của chế độ Overlay bằng cách sử dụng một quả cầu màu trắng làm tham chiếu:


Ví dụ sau 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 chồng 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 rất mảnh mai, 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 lưới như một phương án thay thế cho việc điêu khắc hình học lưới. Vì điều này không ảnh hưởng đến hình học của đối tượng lưới, điều này cho phép bạn tạo ra các đối tượng chi tiết mà không ảnh hưởng đến hiệu suất của một mô hình lưới phức tạp.
Ví dụ sau thể hiện cách một độ trong suốt một phần và hoàn toàn trong chế độ này loại bỏ trực quan các phần của lưới:



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

Tẩy màu sắc
Bạn có thể áp dụng một màu tẩy cho bản đồ màu của bạn bằng cách sửa đổi thuộc tính SurfaceAppearance.Color. Tẩy 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 tái sử dụng một bản đồ màu duy nhất với các tẩy khác nhau. Sử dụng tẩy màu để tạo ra sự biến thể chi phí thấp bổ sung giữa các kết cấu PBR của MeshPart hoặc để lập trình sửa đổi màu sắc bề mặt PBR của bạn trong thời gian thực.



Sử dụng tẩy màu SurfaceAppearance.Color áp dụng như một hệ số nhân, vì vậy diện mạo cuối cùng là một hàm của Color3 (màu công cụ) nhân với SurfaceAppearance.Color. Điều này có nghĩa là việc tạo bản đồ SurfaceAppearance.ColorMap ban đầu của bạn với màu gần trắng sẽ tạo ra tác động tẩy mạnh nhất khi thuộc tính này được áp dụng.
Tẩy màu chỉ áp dụng cho SurfaceAppearance.ColorMap và không phải là MeshPart.Color. Bạ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à một kênh alpha tồn tại, màu lưới MeshPart.Color lộ ra và tẩy 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à một kênh alpha tồn tại, kênh alpha điều khiển lượng tẩy SurfaceAppearance.Color. Tẩy mạnh nhất ở những nơi mà kênh alpha hoàn toàn nhìn thấy và không được áp dụng ở những nơi mà kênh alpha trong suốt.

Bình thường
Bản đồ bình thường, hoặc bề mặt, thêm độ sâu kết cấu vào bề mặt của bạn và hành xử tương tự như một bản đồ độ cao. Vì vậy, hiệu ứng có thể phai mờ hoặc tăng cường tùy thuộc vào góc nhìn và môi trường ánh sáng. Khi không có bản đồ bình thường, giá trị được đặt thành 0.0.
Trong hình sau, bạn có thể chuyển đổi giữa tham chiếu mô hình và tham chiếu bản đồ để so sánh giá trị bản đồ bình thường:



Các kênh R, G và B của bức ảnh tương ứng với các thành phần X, Y và Z của vector bề mặt địa phương. 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 phẳng. Roblox chỉ hỗ trợ các bản đồ bình thường định dạng OpenGL - Không gian tiếp tuyến.
Các bản đồ bình thường ảnh hưởng mạnh mẽ đến bề mặt hình ảnh của một lưới và có thể làm nổi bật các đường nối khó chịu trong kết cấu của bạn. Khi nào có thể, hãy giữ cho các đường nối kết cấu của bạn được ẩn để tránh các vấn đề hình ảnh với lưới của bạn.
Độ nhám
Độ nhám, hoặc bề mặt vi mô, bản đồ xác định cách ánh sáng được khuếch tán trên bề mặt của mô hình của bạn. Khi độ nhám ở mức 0.0, bề mặt không khuếch tán ánh sáng một chút nào, dẫn đến sự phản chiếu sắc nét và sáng hơn và độ bóng trên vật liệu của bạn. Ở mức 1.0, ánh sáng và phản chiếu khuếch tán đều trên mô hình dẫn đến một bề mặt mờ ít phản chiếu hơn.
Độ nhám có thể ảnh hưởng đến độ 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. Xem fresnel để biết thêm chi tiết và thực hành tốt nhất để duy trì hành vi phản chiếu nhất quán.
Hình sau cho thấy các so sánh giá trị bản đồ độ nhám khác nhau:



Fresnel
Fresnel đề cập đến lượng phản chiếu của một bề mặt trong mối liên hệ với góc nhìn hiện tại. Quy trình Fresnel của Studio nhằm đạt được độ chính xác thực tế thế giới vật lý, mặc dù bạn có thể nhận được sự đóng góp hình ảnh không mong muốn ở một số góc độ thậm chí 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 làm cho bản đồ độ nhám của bạn xung quanh 0.1 thô hơn để đạt được phản ứng ánh sáng nhất quán với các vật liệu của bạn.
Mặc dù Roblox hiển thị hiệu ứng ánh sáng này chính xác, độ sáng và khả năng phản chiếu của một bề mặt có thể không phản ứng nhất quán giữa phần mềm nội dung kết cấu của bạn, chẳng hạn như Substance Painter, và Studio. Xem ví dụ về trang phục để biết sự khác biệt trong việc kết xuất giữa các ứng dụng.
Kim loại
Kim loại xác định độ phản chiếu của một bề mặt. Giá trị kim loại nằm trong khoảng từ 0.0 đến 1.0. Roblox đặt giá trị mặc định là 0.0 nếu không có bản đồ kim loại nào tồn tại.
Xem hình sau để so sánh các giá trị bản đồ kim loại khác nhau:



Các trình tạo PBR khác nhau sử dụng các quy trình làm việc khác nhau để xử lý độ phản chiếu. Studio chỉ sử dụng quy trình kim loại xác định liệu một vật liệu là không kim loại hay kim loại, đôi khi được gọi là cách điện hoặc dẫn điện.
Trong hầu hết các trường hợp, bạn nên đặt giá trị này thành 0.0 (không kim loại) hoặc 1.0 (kim loại). Bạn có thể sử dụng các giá trị kim loại một phần khi tạo ra các bề mặt không phổ biến hơn với các thuộc tính phản chiếu vừa phải, chẳng hạn như satin hoặc lụa. Thực hành này có thể giả lập nhẹ 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 ở trên các màu sắc phản chiếu trong môi trường.

