Tóm lại: những đường nối cứng nơi một vật liệu gặp vật liệu khác (cỏ đâm vào đá, bùn gặp đá) là một trong những dấu hiệu lớn nhất của một môi trường nghiệp dư. Vẽ vertex pha trộn vật liệu ngay trên một mesh để xóa những đường nối đó, và một "height blend" khiến chuyển tiếp trông tự nhiên thay vì như một sự mờ dần. Bài viết này giải thích vẽ vertex hoạt động thế nào, mẹo height-blend tách chuyển tiếp tốt khỏi chuyển tiếp nhòe nhoẹt, vẽ nó ở đâu, nó tốn gì lúc runtime, và nó ăn khớp thế nào với decal và texture tiling.
Thiên nhiên không có cạnh cứng. Nơi nước gặp phù sa gặp cỏ, chuyển tiếp bất quy tắc và cài vào nhau: chính xác những gì vẽ vertex tái tạo để vật liệu của bạn thôi gặp nhau ở những đường thẳng, lộ liễu.
Vấn đề: đường nối phản bội tất cả
Bề mặt thật chuyển tiếp bất quy tắc: cỏ len vào sỏi, bùn đọng ở chỗ trũng, rêu leo lên phía khuất bóng của đá. Một đường thẳng cứng giữa hai vật liệu đọc là giả ngay tức khắc, dù mỗi texture tốt đến đâu.
Bạn có thể có hai texture chân thực và vẫn có một môi trường trông sai, vì chuyển tiếp giữa chúng là nơi sự đáng tin sống. Trong thế giới thật, vật liệu thâm nhập lẫn nhau: đất trôi vào các vết nứt, cỏ mỏng dần thành một lối mòn, tuyết tụ trên các gờ. Một bề mặt game chuyển từ cỏ sang đá dọc một cạnh polygon sắc gào lên "làm từ ô gạch". Vẽ vertex là công cụ chính để hòa tan những cạnh ấy, để vật liệu loang vào nhau như chúng làm ngoài trời.
Vẽ vertex hoạt động thế nào
Mỗi vertex lưu dữ liệu màu/alpha; một vật liệu blend đọc nó để trộn hai hay nhiều texture mỗi pixel trên khắp bề mặt. Vẽ dữ liệu vertex trong engine và vật liệu chuyển tiếp ở bất cứ đâu bạn đã vẽ, không cần UV hay hình học thêm.
Mỗi vertex trên một mesh có thể mang một chút dữ liệu thêm: màu vertex, thường bốn kênh. Một vật liệu blend diễn giải dữ liệu đó như một mặt nạ: nơi một kênh mạnh, hiện vật liệu A; nơi nó yếu, hiện vật liệu B; và nội suy ở giữa. Vì bạn vẽ dữ liệu vertex ngay trên mô hình trong trình chỉnh sửa, bạn điều khiển chuyển tiếp bằng tay, chính xác nơi bạn muốn: bùn dọc chân một bức tường, sự mòn ở các góc một sàn nhà, rêu ở một bên một tảng đá. Nó không tốn bộ UV thêm và không thêm hình học (ngoài việc có đủ vertex để vẽ chi tiết vào đó), đó là lý do nó là kỹ thuật blend ngựa thồ cho địa hình và mesh lớn.
Mẹo height-blend
Đừng blend tuyến tính trên alpha; hãy blend bằng một height map để vật liệu trên lấp các vết nứt và chỗ trũng trước. Blend tuyến tính cho một sự mờ dần mềm nhòe nhoẹt; height blend cho một chuyển tiếp sắc, tự nhiên, cài vào nhau.
Đây là nâng cấp đơn lẻ quan trọng nhất cho vật liệu blend của bạn, và là thứ tách một chuyển tiếp chuyên nghiệp khỏi một cái nhòe. Một blend ngây thơ mờ dần tuyến tính giữa hai texture dọc mặt nạ, tạo một sự chồng lấp mềm, ma mị trông như một gradient Photoshop. Một height blend thay vào đó dùng thông tin chiều cao/displacement của vật liệu để quyết định chuyển tiếp: vật liệu đến lắng vào các vùng thấp trước (các đường vữa, các vết nứt, các chỗ móp) trước khi phủ các điểm cao, chính xác như đất, cát hay tuyết thật tích tụ. Kết quả là một ranh giới sắc, bất quy tắc, đáng tin thay vì một sự mờ dần mờ ảo. Nếu các blend của bạn trông nhòe nhoẹt, thêm một chuyển tiếp dựa trên chiều cao gần như luôn là cách sửa.
Rìa rừng là một blend trong hoang dã: đường cây không dừng ở một đường, nó tản ra và mỏng dần. Vẽ vertex dựa trên chiều cao tái tạo chuyển tiếp lởm chởm, cài vào nhau đó thay vì một ranh giới sạch.
Vẽ nó ở đâu
Vẽ chuyển tiếp nơi các bề mặt tương tác tự nhiên: chân các bức tường (đất/ẩm), các góc và cạnh của sàn (mòn), các phía khuất bóng của đá (rêu), các chỗ trũng (bùn/vũng), và bất cứ đâu hai lớp địa hình gặp nhau.
Vẽ vertex đền đáp nhiều nhất ở những nơi mắt kiểm tra sự chân thực: điểm tiếp xúc và vùng mòn. Vài nơi giá trị cao luôn nên cân nhắc: đất và ẩm bò lên chân tường; vết trầy và vật liệu lộ ra ở các góc sàn và bậc thang nơi chân đáp; rêu và địa y trên các mặt bắc/khuất bóng của đá; bùn và nước đọng ở các điểm thấp nhất; và các đường nối giữa các lớp địa hình trên một phong cảnh. Đây là cùng những nơi một người kể chuyện trang trí, vì đó là nơi một chỗ phô lịch sử của nó. Vẽ chúng và một bộ kit sạch, trông mới bỗng đọc là phong sương và thật.
Hiệu năng và giới hạn
Vật liệu blend tốn nhiều hơn mỗi pixel (chúng lấy mẫu nhiều bộ texture), vậy nên dùng chúng nơi chuyển tiếp quan trọng, không phải mọi nơi. Chi tiết vertex bị giới hạn bởi mật độ mesh: bạn chỉ có thể vẽ mịn đến mức các vertex của bạn cho phép.
Blend không miễn phí: một vật liệu blend hai hay ba lớp lấy mẫu vài texture mỗi pixel, nên đắt hơn một vật liệu đơn. Điều đó ổn trên địa hình chủ đạo và các bề mặt camera nghiên cứu, nhưng áp một blend bốn lớp tràn lan lên mọi mesh là phí GPU. Giới hạn kia là độ phân giải: vẽ vertex chỉ chi tiết đến mức mesh dày, nên một bức tường low-poly không thể mang một chuyển tiếp vẽ mịn; đó là nơi decal vào để thêm chi tiết ở quy mô nhỏ hơn lên trên. Dùng đúng công cụ ở mỗi quy mô: vertex blend cho chuyển tiếp rộng, decal cho chi tiết cục bộ sắc.
Nó ăn khớp với các công cụ khác ở đâu
Vertex blend xử lý chuyển tiếp vật liệu quy mô trung; texture tiling cung cấp chi tiết nền rẻ; decal thêm các đặc điểm cục bộ sắc (nứt, ố, rỉ) quá mịn để vẽ mỗi vertex. Chúng chồng lên nhau.
Không công cụ nào trong số này cạnh tranh; chúng phân lớp. Texture tiling cho bạn chi tiết tần số cao phải chăng trên các bề mặt lớn. Vẽ vertex trộn các vật liệu tiling đó để chúng không gặp nhau ở những đường cứng. Decal rồi ngồi lên trên cho những chi tiết cụ thể, sắc mà độ phân giải vertex không chạm tới: một vết nứt, một vết cháy, một vết ố nước trên một đường nối. Một bề mặt môi trường trưởng thành thường là cả ba cùng lúc. Đưa việc pha trộn vật liệu đáng tin vào một game, và bake nó xuống thành vật liệu engine chuẩn để nó không tốn gì bất ngờ lúc runtime: chính xác là loại công việc bề mặt mà Numivo được xây để biến thành thường lệ, để các đường nối biến mất mà không cần một shader đặt riêng cho mỗi cuộc gặp của hai vật liệu.
Những con số thực địa đáng đánh cắp
- Nâng cấp sửa các blend nhòe nhoẹt: height blend, không phải alpha tuyến tính
- Trần chi tiết vẽ vertex = mật độ vertex của mesh, mesh dày hơn, vẽ mịn hơn
- Vùng vẽ giá trị cao nhất: chân tường, cạnh sàn, đá khuất bóng, chỗ trũng
- Chi phí vật liệu blend tỉ lệ với số lớp được lấy mẫu, dành các blend nhiều lớp cho bề mặt chủ đạo
- Ngăn xếp đầy đủ: nền tiling → vertex blend → decal cho chi tiết cục bộ
Hỏi-Đáp nhanh
Vẽ vertex so với một splat/weight map cho địa hình? Cùng ý tưởng, lưu trữ khác: địa hình thường dùng layer weight map (một mặt nạ texture) thay vì màu vertex, tách chi tiết khỏi mật độ mesh. Mesh dùng màu vertex; các địa hình lớn thường dùng layer map. Nguyên lý height-blend áp dụng cho cả hai.
Sao blend của tôi trông mềm và nhòe nhoẹt? Bạn gần như chắc chắn đang blend tuyến tính trên alpha. Chuyển sang một blend do chiều cao/displacement điều khiển để chuyển tiếp lắng vào các vùng thấp trước, và sự mềm biến thành một cạnh sắc, tự nhiên.
Bao nhiêu lớp blend là quá nhiều? Hai thì rẻ và bao phủ hầu hết chuyển tiếp; ba thường gặp cho địa hình; bốn trở lên trở nên đắt và khó tạo. Nếu cần nhiều hơn, hãy hỏi liệu decal hay một vật liệu thứ hai có phục vụ tốt hơn.
Tôi có cần một shader tùy chỉnh cho việc này? Logic blend đủ chuẩn để hầu hết engine và bộ công cụ cung cấp nó, và bake xuống thành vật liệu engine thường giữ chi phí runtime có thể dự đoán. Bạn hiếm khi cần code shader đặt riêng; bạn cần thiết lập height-blend và một nơi hợp lý để vẽ.
Đường nối là nơi các môi trường đáng tin được thắng hay thua. Vẽ các chuyển tiếp của bạn nơi các bề mặt thực sự tương tác, blend theo chiều cao thay vì một sự mờ dần phẳng, và chồng tiling cùng decal quanh nó, và vật liệu của bạn sẽ gặp nhau như chúng làm trong thế giới: bất quy tắc, cài vào nhau, và không một đường thẳng tố giác nào.

