Unity3D - Làm thế nào để tessellate 2D spites?


8

Tôi sử dụng ánh sáng đỉnh động trên các họa tiết 2D. Trên các sprite lớn hơn, ánh sáng là xấu hơn so với trên nhỏ hơn. Điều này là do mỗi sprite chỉ là một hình tứ giác của hai hình tam giác. Không đủ đỉnh ở đó để chiếu sáng trên các khu vực lớn hơn.

Có cách nào để sử dụng nhiều hình tam giác hơn trên một sprite không? Thậm chí có thể phụ thuộc vào bao nhiêu không gian màn hình họ bao gồm?


1
Nghe có vẻ như bạn muốn chia nhỏ quad của bạn? Nếu đó là trường hợp tôi có một số ví dụ tốt trong mã giả để thực hiện điều này. Afaik Unity sẽ cho phép bạn truy cập vào lưới các đối tượng trò chơi (và các tam giác / đỉnh của nó) sẽ cho phép thực hiện những gì bạn muốn. Đây là một ví dụ như vậy ở đây trên gamedev để chia nhỏ các quads: Làm thế nào để chia nhỏ một quad? . Đây có phải là dòng của những gì bạn đang tìm kiếm?
Logham

Vâng, chia một quad là cách tiếp cận tôi đang tìm kiếm. Điều này bao gồm cuộn dây và UV tôi đoán. Bằng cách đó tôi sẽ có nhiều hình tam giác hơn.
agssol

Bạn đã thử sử dụng một shader tessname khi vẽ sprite của bạn? docs.unity3d.com/Manual/SL-SurfaceShaderTessellation.html answers.unity3d.com/questions/583960/...
ClassicThunder

2
Khi bạn sắp xếp hình tứ giác, các giá trị ánh sáng cho các đỉnh sẽ chỉ được nội suy. Quad là phẳng, vì vậy với nhiều đỉnh hơn, phép nội suy sẽ chỉ là tuyến tính trên toàn bộ quad. Làm thế nào sẽ thêm nhiều hình tam giác khắc phục vấn đề này. Điều này nghe có vẻ như là một cái gì đó nên được giải quyết với một shader pixel.
Arun R

@ArunR Điểm tốt, nhưng nếu ví dụ: quad lớn hơn phạm vi của ánh sáng điểm thì tam giác sẽ sử dụng ánh sáng nếu đỉnh không sáng nữa. Đáng buồn là sử dụng pixel shader không phải là một tùy chọn trên tất cả các thiết bị.
agssol

Câu trả lời:


2

Âm thanh như bạn cần để tạo đối tượng trò chơi của riêng bạn và sử dụng thuật toán tam giác tùy chỉnh để xử lý chi tiết dựa trên một số phép toán liên quan đến kích thước.

Có lẽ thứ gì đó như thế này có thể giúp ...

http://forum.unity3d.com/threads/tessname-alerskyms-for-polygons.228051/

Các tùy chọn khác có thể là sử dụng trình tạo bóng thông minh hơn và bản đồ vết sưng với cách tiếp cận kiểu dịch chuyển đỉnh của bạn.

Thật khó để nói mà không biết chính xác những gì bạn đang cố gắng để đạt được những gì có thể phù hợp nhất. Hy vọng một trong những giúp đỡ.


Ý tưởng là sử dụng ánh sáng đỉnh trên các họa tiết vì nó nhanh hơn đèn pixel. Đặc biệt là một số nền tảng di động có chip đồ họa spec thấp.
agssol

Vì vậy, câu nói của bạn bạn có một hình tứ giác lớn mà bạn muốn tách sau đó cho mỗi đỉnh ánh sáng kết quả? Bạn có thể nhận được kết quả tốt hơn và nhanh hơn nhiều bằng cách sử dụng ánh sáng trên mỗi pixel trên IMO quad độ phân giải thấp hiện có nhưng nếu đó là những gì bạn muốn thì hãy thực hiện. Chia một quad không nên quá khó phải không?
Chiến tranh

Hãy nhớ rằng những gì bạn tiết kiệm được khi chiếu sáng theo pixel bạn sẽ mất đi một cách hiệu quả bằng cách có bộ đệm đỉnh lớn hơn ... tất nhiên tùy chọn khác là có một số phép toán trong trình tạo bóng đỉnh để chuyển mức ánh sáng cho trình đổ bóng pixel dựa trên một phần của đỉnh để bạn vẫn nhận được một VB nhỏ và không cho mỗi pixel.
Chiến tranh

loại bỏ ý tưởng đó ... sẽ không hiệu quả ... hmmmm
Chiến tranh

1
Nếu bạn cần làm rõ về câu hỏi, gửi bình luận về câu hỏi.
MichaelHouse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.