2011-09-22 35 views
6

Tôi đang sử dụng thành công tiếng ồn Perlin để tạo địa hình, đám mây và một vài thứ tiện lợi khác. Tuy nhiên, bây giờ tôi đang cố gắng tạo ra một nhóm côn trùng bay (đặc biệt là đom đóm), và tôi cũng đề nghị sử dụng tiếng ồn Perlin cho việc này. Tuy nhiên, tôi không thực sự chắc chắn làm thế nào để đi về điều này.Tiếng ồn Perlin để chuyển động?

Việc đầu tiên đã xảy ra với tôi là, đưa ra một bản đồ tiếng ồn như vậy:

  1. Gán mỗi con đom đóm một vị trí ban đầu ngẫu nhiên, vận tốc và gia tốc góc.
  2. Trên khung, chuyển vị trí của ruồi sau vector hướng của nó.
  3. Đọc bản đồ tiếng ồn tại vị trí mới và sử dụng nó để điều chỉnh gia tốc góc, gây ra bay tới "lần lượt" về phía pixel nhẹ hơn.
  4. Điều chỉnh gia tốc góc một lần nữa bằng khoảng cách giữa các ruồi khác để tránh khiến chúng tập trung xung quanh các cực đại cục bộ.

Tuy nhiên, điều này không bao gồm các trường hợp ruồi bay tới mép của bản đồ hoặc các trường hợp chúng có thể quay quanh một điểm. Trường hợp thứ hai có thể không phải là một vấn đề lớn, nhưng tôi không chắc chắn về một cách đáng tin cậy để họ quay sang tránh va chạm với cạnh bản đồ.

Đề xuất? Hướng dẫn hoặc giấy tờ (bằng tiếng Anh, xin vui lòng)?

Trả lời

6

Đây là nguồn rất tốt cho tiếng ồn perlin 2D. Bạn có thể làm theo các nguyên tắc chính xác tương tự, nhưng thay vì tạo ra một lưới 2D của gradient, bạn có thể tạo một mảng 1D của gradient. Bạn có thể sử dụng điều này để tạo ra tiếng ồn của bạn cho một trục cụ thể.

Chỉ cần làm theo công thức này và bạn cũng có thể tạo các chức năng tiếng ồn perlin tương tự cho từng trục khác của bạn! Kết hợp những chuyển động này, và bạn nên có một số tiếng ồn tốt trên bàn tay của bạn. (Bạn cũng có thể sử dụng các chức năng này tiếng ồn như accellerations ngẫu nhiên hoặc vận tốc. Kể từ khi chức năng tiếng ồn Perlin là đơn điệu trên toàn cầu, ruồi của bạn sẽ không tên lửa tắt để khoảng cách điên.)

http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html

Nếu bạn tò mò về các loại chuyển động khác, tôi sẽ đề xuất Chuyển động Brown. Đó là cùng một loại chuyển động mà các hạt bụi thể hiện khi chúng trôi nổi quanh phòng của bạn. Bài viết này được đưa vào một số toán học thú vị hơn vào cuối, nhưng nếu bạn đang ở tất cả các familliar với Matlab, một vài bộ hướng dẫn đầu tiên nên khá dễ hiểu. Nếu không, chỉ cần google funcitons, và tìm tương đương nguyên bản của họ cho môi trường của bạn (hoặc tạo chúng cho mình!) Đây sẽ là một ít thực tế hơn, và nhanh hơn nhiều để tính toán hơn Perlin tiếng ồn

http://lben.epfl.ch/files/content/sites/lben/files/users/179705/Simulating%20Brownian%20Motion.pdf

Chúc mừng bay!

+0

Khoảnh khắc khó xử đó khi bạn trả lời câu hỏi cũ một năm. – Peaches491

+0

Đó là một câu trả lời hay. Tốt hơn những gì tôi làm, và sẽ có ích trong tương lai. Cảm ơn. –

1

Có thể bạn đang tìm kiếm những chiếc bình?

Wikipedia page

Nó không có tính năng Perlin tiếng ồn trong khái niệm ban đầu, có thể bạn có thể sử dụng tiếng ồn để tạo attractors hoặc repulsors, như bạn đang cố gắng để làm với 'bay đến nhẹ' hành vi.

PS: trang được liên kết ở trên có liên kết có liên quan đến Firefly algorithm, có thể bạn sẽ quan tâm đến điều đó?

+0

Tôi đã thấy thuật toán Firefly (được đặt tên độc đáo để tạo ra những googling dễ dàng), nhưng cũng đang tìm kiếm thứ gì đó ít cụ thể hơn cho một con đom đóm. Tôi sẽ có một cái nhìn về nắp. –

+0

Thực sự thú vị khi thực hiện bất kỳ mô phỏng kiểu đàn nào, có thể là chim, cá, v.v ... nếu bạn muốn tránh va chạm. Nếu bạn muốn một cái gì đó mà cảm thấy hỗn loạn, tức là không phải tất cả các yếu tố có xu hướng hướng tới một hướng thống nhất, bạn chỉ có thể thiết lập để null ảnh hưởng của lực lượng 'gắn kết'. – jv42

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