2012-10-18 64 views
5

Tôi có hình nghệ thuật 2 ký tự sẽ được ánh xạ tới bộ khung Box2d. Ví dụ, cánh tay của nhân vật có thể là 2 hình chữ nhật vật lý được kết nối với một khớp ở khuỷu tay. Mỗi hình chữ nhật sẽ có chữ nghệ thuật tương ứng của riêng nó. Nghệ thuật cho cánh tay thấp hơn sẽ không hoàn toàn hình chữ nhật. Nó có thể là một nguồn png hình chữ nhật, nhưng sẽ có rất nhiều không gian âm nơi cánh tay không nhất thiết phải vẽ.Cách chia nhỏ hình ảnh 2d thành hình tam giác sử dụng OpenGL

Câu hỏi của tôi là cách tốt nhất để chia nhỏ nghệ thuật 2d thành hình tam giác là gì? Tôi có nên xử lý tất cả các sprites phẳng như một hình chữ nhật đơn giản tạo thành 2 hình tam giác, để lại rất nhiều không gian alpha? Hoặc là tốt nhất để chia hình thành nhiều hình tam giác và cố gắng để phù hợp với hình dạng thực tế (có thể với một fan hâm mộ tam giác)? Điều gì có thể là một số lợi thế/bất lợi của mỗi cách tiếp cận? Tôi sẽ cập nhật các kết cấu như những điều khác nhau xảy ra với nhân vật.

Dưới đây là một minh chứng về những gì tôi đang nói về:

img

(các hình vuông màu đỏ là hình dạng vật lý, và các đường màu xanh là cấu hình tam giác có thể)

Trả lời

1

Ít hình học thường là tốt hơn cho hiệu suất (thứ 3 từ bên trái).

Triangulation "chính xác" (thứ 4 từ trái sang) sẽ hữu ích cho việc phát hiện xung đột độ trung thực cao (laser phản chiếu một tiểu hành tinh sáng bóng?).

Hãy cẩn thận với các cập nhật kết cấu thường xuyên. glTexSubImage2d() là con đường để đi.

Nếu việc triển khai GL của bạn hỗ trợ nó, bạn có thể tải lên không đồng bộ using PBOs.

+0

Cảm ơn. Tôi không xem xét các hình dạng nghệ thuật thực tế để phát hiện va chạm. Điều đó có lẽ tất cả sẽ được thực hiện với mô hình vật lý. Tôi cho rằng tôi đã tự hỏi liệu tất cả không gian alpha được thêm vào sẽ loại bỏ lợi ích của sự đơn giản của giải pháp tam giác ... đặc biệt là khi kết cấu trở nên ít hình chữ nhật hơn. . Một cái gì đó tròn, giống như một kết cấu sao băng, sẽ có rất nhiều không gian âm trong kết cấu hình chữ nhật. Chồng chéo một số khu vực alpha = 0 này với nhau sẽ phải có một số tác động tiêu cực, phải không? –

+2

Nếu bạn không cần pha trộn alpha thực sự (yêu cầu băng thông bộ nhớ nhiều hơn do đọc điểm ảnh được thêm vào), bạn có thể thoát khỏi [thử nghiệm alpha] (http://www.opengl.org/wiki/Transparency_Sorting#Alpha_test) , chỉ đơn giản loại bỏ một pixel đến nếu giá trị alpha thấp hơn một ngưỡng nhất định. Trên thực tế, tôi nghĩ bạn có thể kết hợp thử nghiệm pha trộn và alpha để có được kết quả tốt nhất của cả hai thế giới: Với giá trị ngưỡng 0 điểm tinh khiết thấp bị loại bỏ sớm (trước khi trộn) trong khi vẫn cho phép bạn làm mờ alpha ở các cạnh của đối tượng. – genpfault

+0

Tuyệt vời ... có ý nghĩa rất nhiều và rất hữu ích. –

Các vấn đề liên quan