Cách tạo đường mòn plasma cho tàu vũ trụ


13

Tôi đã thấy rất nhiều trò chơi không gian tìm kiếm tuyệt vời mà tất cả đều sử dụng các hiệu ứng tương tự. Tôi thực sự quan tâm đến việc tìm hiểu làm thế nào một số các hiệu ứng này thường được thực hiện.

Cụ thể tôi muốn biết làm thế nào một số con đường phía sau tàu vũ trụ hoặc tên lửa được thực hiện mà không sử dụng tất cả các tài nguyên có sẵn.

Ví dụ về hiệu ứng tôi có nghĩa là xem các ảnh chụp màn hình cho Gimbal , và thậm chí cả video ở cùng một liên kết. Ngoài ra các đường mòn tên lửa trong Ether Vapor .

Cả hai đều là cùng một kỹ thuật? Tôi chủ yếu quan tâm đến 2D, nhưng tôi không thể tưởng tượng nó sẽ quá khác biệt.

Vì vậy, làm thế nào tôi sẽ đi về việc tạo ra loại hiệu ứng này? Có phải chúng ta đang nói về shader pixel, Blendmodes / bộ lọc, hiệu ứng bitmap, hệ thống hạt hay gì? Không thực sự nền tảng cụ thể. Tôi chỉ tìm kiếm lý thuyết, nhưng các ví dụ hoặc liên kết cụ thể sẽ là tuyệt vời. Và càng chi tiết càng tốt.

Câu trả lời:


7

Vì vậy, làm thế nào tôi sẽ đi về việc tạo ra loại hiệu ứng này? Có phải chúng ta đang nói về shader pixel, Blendmodes / bộ lọc, hiệu ứng bitmap, hệ thống hạt hay gì? Không thực sự nền tảng cụ thể. Tôi chỉ tìm kiếm lý thuyết, nhưng các ví dụ hoặc liên kết cụ thể sẽ là tuyệt vời. Và càng chi tiết càng tốt.

Tất cả những điều trên.

Trừ khi bạn chọc qua mã nguồn của họ, bạn có thể không biết chính xác họ đã làm như thế nào.

Tuy nhiên, từ vẻ ngoài của hai trò chơi, cả hai đều có những thứ dường như là hình học được kết nối và bám theo con tàu. Có thể không nhất thiết phải là một hệ thống hạt điểm cơ bản, nhưng nó cũng không quá khó.

Một số trò chơi sẽ sử dụng thuật toán đường cong và tạo ra một danh sách các đỉnh từ đó và thực hiện một chút họa tiết với các kết cấu khác nhau được áp dụng ở hai điểm cuối của đường mòn, để tại một thời điểm, ống xả trông nóng và ở điểm khác thì nó mát hơn và con đường mòn đi vào không gian.

Tàu của người chơi là một trường hợp thú vị bởi vì các chuyển động không thể đoán trước được và bạn có thể cần cập nhật các điểm kiểm soát của thuật toán đường cong của mình hoặc kết thúc việc lấy mẫu vị trí tàu mới nhất và tạo ra các vị trí đỉnh dựa trên đó.

Hãy xem câu trả lời này từ một câu hỏi trước đó nếu bạn muốn có một cái gì đó hoạt động ngoài các điểm kiểm soát. Đối với nhu cầu của bạn, lấy mẫu vị trí người chơi có thể sẽ hoạt động tốt hơn rất nhiều và dễ hiểu hơn.

Đây là một cái gì đó khiến bạn suy nghĩ:

Bắt đầu lấy mẫu vị trí người chơi. Những điểm này sẽ tạo thành các đoạn cơ thể của đường mòn của bạn, từ đó hình học có thể được xây dựng. Đó là một ý tưởng tốt để giữ một phân đoạn đuôi riêng biệt có kết cấu riêng biệt. Bạn có thể muốn phát hiện khi người chơi quay và tăng tần suất của các phân đoạn này, nếu không, bạn sẽ kết thúc với các đường cong khối. Trừ khi đó là hiệu ứng bạn sẽ làm :)

Tại một số sự kiện nhất định, các phân đoạn cần ngừng tạo và các phân đoạn hiện tại sẽ bắt đầu giảm dần từ từ xuống, bắt đầu từ phân đoạn cơ thể gần đuôi nhất (nhưng không phải là đuôi). Đây là trong trường hợp người chơi chậm lại. Nhưng, nếu tốc độ mà các phân đoạn được thu nhỏ lại phù hợp với tốc độ tàu của người chơi, thì một phân đoạn mới sẽ được hình thành đúng lúc khi một phân đoạn được đưa ra. Vì vậy, điều này cũng hoạt động tốt cho một con tàu đang chuyển động hoàn toàn. Độ dài của đường mòn sẽ luôn giống nhau - điều này mang lại một dòng chảy ổn định, nhất quán.

Đoạn đầu phải luôn ở vị trí hiện tại của người chơi. Nếu bất kỳ lượt nào được phát hiện, đoạn đầu hiện có sẽ được thêm vào đoạn cơ thể và đoạn đầu mới được bắt đầu. Nói lại. Tùy thuộc vào kết cấu của bạn, mỗi phân đoạn cũng có thể có độ dài tối đa.

Điều này cho chúng ta một cách dễ dàng để mô hình hóa hiệu ứng này: giải quyết ý tưởng rằng hiệu ứng sẽ luôn tự giảm / co lại trừ khi có nhiều phân đoạn được cung cấp và chơi xung quanh với tốc độ để giữ cho nó không bị co lại.


4

Có rất nhiều khả năng khác nhau để tạo ra những con đường như vậy. Bạn có thể sử dụng các dòng đơn giản, đa giác, đám mây điểm, v.v.

Tất cả chúng thường dựa trên một trong hai khái niệm:

  • Theo dõi các vị trí trước đó và sử dụng chúng để vẽ đuôi.
  • Theo dõi vận tốc / hướng và điều chỉnh đuôi dựa vào đó.

Cách thứ nhất phù hợp hơn với những thứ như tên lửa, trong khi cách tiếp cận thứ hai tốt hơn đối với một số thứ gắn liền theo thứ gì đó (như đuôi rồng).

Việc thực hiện đơn giản cho đuôi động cơ không quá phức tạp. Bạn sẽ chỉ cần một số bộ đệm để lưu trữ các vị trí trước đó. Tôi không biết bạn đang sử dụng ngôn ngữ nào, nhưng đối với điều này tôi sẽ sử dụng bộ đệm vòng hoặc một loại bộ đệm tương tự (xóa nhanh và chèn vào phần cuối).

Mỗi khung hình x / th cập nhật (bạn không phải thực hiện hàng trăm lần mỗi giây), về cơ bản bạn bỏ phần tử cũ nhất / cuối cùng vào bộ đệm của bạn và thêm vị trí hiện tại vào phía trước (chỉ khi bộ đệm được lấp đầy; đảm bảo nó luôn chứa n phần tử, trong đó n xác định độ dài đuôi của bạn).

Sau đó, trong khi vẽ, bạn chỉ cần bắt đầu ở vị trí hiện tại của mình và vẽ một tập hợp các đường qua tất cả các điểm trong bộ đệm của bạn, trong khi giảm độ mờ của bạn với mỗi đỉnh tiếp theo.

Bằng cách này, bạn sẽ kết thúc với một cái đuôi đẹp và sạch sẽ. Dựa trên nền tảng của bạn, bạn có thể mở rộng điều này, ví dụ như sử dụng các shader hoặc bằng cách gói một số đồ họa đuôi đẹp dọc theo đường dẫn đó.

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.