Làm thế nào tôi có thể đạt được hiệu ứng cháy tốt với hỗn hợp alpha và các hạt?


41

Sử dụng cài đặt sau cho hiệu ứng hạt OpenGL:

SRC: GL_SRC_ALPHA
DST: GL_ONE

Tạo ra một hỗn hợp phụ gia, trông thật ngoạn mục trên nền đen nhưng khủng khiếp với màu sáng hơn, vì nó bắt đầu mờ dần thành màu trắng.

Sau đó tôi đã sử dụng pha trộn alpha:

SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA

Điều này cho phép các nền khác được sử dụng mà không ảnh hưởng đến màu sắc của các hạt, nhưng bản thân các hạt trông xỉn màu so với hỗn hợp phụ gia. Làm thế nào tôi có thể đạt được hiệu ứng cháy tốt với hỗn hợp alpha và các hạt?

Phụ gia:

Phụ gia màu đen Phụ gia trên màu xanh

Alpha:

Alpha trên màu đen Alpha trên màu xanh

CẬP NHẬT:

Theo lời khuyên của David dưới đây, tôi đã tạo ra một kết cấu riêng biệt và sau đó sử dụng hỗn hợp phụ gia vào hiệu ứng hạt trước khi vẽ lên kết cấu. Vấn đề với điều đó là việc vẽ trên kết cấu alpha = 0 dẫn đến chỉ các phần màu của hạt xuất hiện trước bản đồ thế giới của tôi, vì thông thường bạn có nền đen thay thế. Bí quyết là sử dụng hai kết cấu. Tôi tạo ra một kết cấu màu đen và sau đó vẽ các hạt trên đó. Sau đó, tôi loại bỏ lớp alpha của các hạt khỏi kết cấu này, loại bỏ hiệu quả tất cả các màu đen xung quanh và làm mờ dần các hạt nhìn thấy được một phần, trong khi để lại màu đen bên dưới như bạn mong đợi khi tạo các hạt pha trộn phụ gia trên nền đen. Nói tóm lại, một quá trình mệt mỏi, nhưng cuối cùng tôi đã đến đó:

Phụ gia thông thường và phiên bản của tôi

Đây là chủ đề nơi tôi đã đăng quá trình của mình: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528

Video: http://www.youtube.com/watch?v=JptGbEO3b5E

Câu trả lời:


17

Tôi thừa nhận tôi không biết về bất kỳ giải pháp lý tưởng nào cho vấn đề này, vì vậy tôi sẽ mô tả một cách giải quyết mà bạn có thể hoặc không thể thoải mái với:

  1. Kết xuất tất cả các hạt bằng cách trộn phụ gia vào một kết cấu riêng (hoặc kết xuất mục tiêu) với nền của nó được xóa trong suốt .
  2. Kết xuất kết cấu đó (hoặc kết xuất mục tiêu) trên đầu cảnh của bạn bằng cách trộn alpha .

Tôi đã thử nó trong Photoshop và đây là những gì tôi nhận được - Nó không hoàn hảo, nhưng ít nhất nó giữ được màu sắc ban đầu tốt hơn:

nhập mô tả hình ảnh ở đây

Đây là kết cấu ban đầu mà không cần trộn phụ gia vào các hạt:

nhập mô tả hình ảnh ở đây


Điều này có thể tách chúng thành hai kết cấu và giống như tôi có một kết cấu của hỗn hợp phụ gia được vẽ trên nền không?
Aram Kocharyan

@AramKocharyan Tôi thực sự chưa từng thử nó ngoài Photoshop mà kết quả có vẻ hợp lý. Nhưng tôi nghĩ rằng nó sẽ trông giống như hình ảnh đầu tiên của bạn nhưng với tất cả các màu đen được thay thế bằng màu nền của bạn. Nói cách khác, các hạt được thêm vào với nhau dẫn đến sự nổi bật lớn ở giữa vụ nổ, nhưng không phải với nền. Sau đó, vụ nổ kết quả được dán trên nền của bạn mà không cần thêm mà giữ nguyên giao diện ban đầu.
David Gouveia

Cảm ơn điều đó có ý nghĩa, nó giống như một sự pha trộn bình thường trong Photoshop so với lớp phủ, nhưng nó trông giống như một hình ảnh của lớp phủ ngồi trên một lớp nền. Tôi sẽ thử nó và cho bạn biết.
Aram Kocharyan

@AramKocharyan Tôi sẽ đăng kết quả tôi nhận được trong photoshop trong vài phút để bạn có thể so sánh.
David Gouveia

5
Chỉ cần ném nó ra khỏi đó - kỹ thuật này có thể làm tăng mối quan tâm về hiệu suất ...
phải là


4

Như David Gouveia đã chỉ ra, không có sự thay thế thỏa mãn nào cho sự pha trộn phụ gia trên nền sáng. Hiệu ứng tốt nhất mà tôi tìm thấy (không yêu cầu thứ gì đó như kết xuất với bộ đệm ngược) là sử dụng hỗn hợp GL sau đây:

SRC: GL_ONE
DST: GL_ONE_MINUS_SRC_ALPHA

Nó không đẹp như pha trộn phụ gia, nhưng cách tốt hơn GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA. Nếu bạn điều chỉnh giá trị alpha và màu bắt đầu và kết thúc một chút, bạn có thể nhận được kết quả thực sự gần với pha trộn phụ gia.

chế độ trộn hạt

Trong hình trên có GL_SRC_ALPHA, GL_ONEbên trái, ở giữa có GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHAvà bên phải bạn có thể thấy chế độ hòa trộn tôi sẽ đề xuất cho thiết lập này.


Tôi đồng ý rằng để kiểm soát hoàn toàn màu sắc, phương pháp này hoạt động rất tốt.
Aram Kocharyan

Chỉ cần lưu ý, tôi nhận thấy rằng với phương pháp này, cách tốt nhất để làm mờ đám cháy là làm cho nó giảm xuống kích thước bằng 0, vì giảm alpha làm cho nó mờ dần thành màu trắng.
Aram Kocharyan

3

Bạn đã thử sử dụng cả hai? Lớp trên một số hạt với pha trộn alpha, sẽ có được màu sắc của bạn theo cách bạn muốn, sau đó quay lại với một số pha trộn phụ gia để có được điểm nhấn đẹp mà bạn đang tìm kiếm.


Đó có thể là lựa chọn tiếp theo của tôi, tôi muốn giữ các hạt ở mức tối thiểu. Hy vọng tôi có thể một nửa cả hai.
Aram Kocharyan

3

Trước hết, các hình ảnh hạt bạn đang sử dụng dường như có nền đen, dẫn đến các viền tối trong hình ảnh thứ hai đó. Đừng làm vậy; nghĩa là, đừng vẽ hình dạng của hạt trên các kênh màu. Thay vào đó, hình ảnh phải có màu đặc và chỉ xác định hình dạng trong kênh alpha.

Làm điều đó sẽ cải thiện giao diện trong suốt alpha đáng kể. Sau đó, bạn có thể cải thiện hơn nữa giao diện của hiệu ứng tổng thể bằng cách cho các hạt thay đổi màu sắc trong suốt vòng đời của chúng. Giống như, hình ảnh cơ sở rất sáng, cung cấp cho bạn khu vực màu vàng sáng trung tâm. Sau đó nhuộm các hạt màu đỏ cam và tăng màu theo thời gian. Bằng cách đó, các hạt sẽ tối đi khi chúng di chuyển ra khỏi trung tâm.


Vâng, kết cấu chỉ là một bàn chải màu trắng với alpha thay đổi từ trung tâm.
Aram Kocharyan

huh, nếu đó là sự thật thì thật kỳ lạ với tôi rằng ảnh chụp màn hình trong suốt alpha của bạn có những quầng sáng tối xung quanh các hạt.
jhocking

Vâng, tôi không chắc tại sao chúng hình thành xung quanh pha trộn alpha. Nhưng với những gì tôi có bây giờ, nó có vẻ ổn.
Aram Kocharyan


Điều đó có vẻ khá tốt, bạn nên đặt nó trong bản cập nhật câu hỏi của bạn.
jhocking
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.