Tiếng ồn Perlin trong Python là gì?

Phân tích sâu hơn về trạng thái bảo trì của ken-perlin-noise dựa trên nhịp phiên bản PyPI đã phát hành, hoạt động của kho lưu trữ và các điểm dữ liệu khác đã xác định rằng việc bảo trì của nó là Không hoạt động

Một tín hiệu bảo trì dự án quan trọng cần xem xét đối với ken-perlin-noise là nó không thấy bất kỳ phiên bản mới nào được phát hành cho PyPI trong 12 tháng qua và có thể được coi là một dự án đã ngừng hoạt động hoặc ít nhận được sự quan tâm từ những người bảo trì dự án.

Trong tháng trước, chúng tôi không tìm thấy bất kỳ hoạt động yêu cầu kéo nào hoặc thay đổi trạng thái vấn đề đã được phát hiện đối với kho lưu trữ GitHub

def tạo tiếng ồn perlin 2d [hình dạng, màu đỏ]. chắc chắn f[t]. return 6*t**5 - 15*t**4 + 10*t**3 delta = [res[0] / shape[0], res[1] / shape[1]] d = [shape[0 . mgrid[0. độ phân giải[0]. đồng bằng [0],0. độ phân giải[1]. đồng bằng[1]]. chuyển vị[1, 2, 0] % 1 # Góc độ dốc = 2*np. pi*np. ngẫu nhiên. rand[res[0]+1, res[1]+1] độ dốc = np. dstack[[np. cos[góc], np. sin[góc]]] g00 = gradient[0. -1,0. -1]. lặp lại[d[0], 0]. lặp lại[d[1], 1] g10 = gradient[1. ,0. -1]. lặp lại[d[0], 0]. lặp lại[d[1], 1] g01 = gradient[0. -1,1. ]. lặp lại[d[0], 0]. lặp lại[d[1], 1] g11 = độ dốc[1. ,1. ]. lặp lại[d[0], 0]. lặp lại[d[1], 1] # Đường dốc n00 = np. tổng[lưới * g00, 2] n10 = np. tổng [np. dstack[[lưới[. ,. ,0]-1, lưới[. ,. ,1]]] * g10, 2] n01 = np. tổng [np. dstack[[lưới[. ,. ,0], lưới [. ,. ,1]-1]] * g01, 2] n11 = np. tổng [np. dstack[[lưới[. ,. ,0]-1, lưới[. ,. ,1]-1]] * g11, 2] # Nội suy t = f[lưới] n0 = n00*[1-t[. ,. ,0]] + t[. ,. ,0]*n10 n1 = n01*[1-t[. ,. ,0]] + t[. ,. ,0]*n11 trả lại np. sqrt[2]*[[1-t[. ,. ,1]]*n0 + t[. ,. ,1]*n1]

Tiếng ồn Perlin là một công thức toán học được sử dụng để tạo ra các cấu trúc 'thực tế'. Đó là tiếng ồn nhưng không giống như tiếng ồn thông thường, nó có cấu trúc nhất quán. Đây là tiếng ồn thường xuyên so với. Tiếng ồn Perlin

tiếng ồn tĩnh và perlin thông thường

Trong mô-đun tiếng ồn python, có một số tham số ảnh hưởng đến những gì bạn thấy khi tạo tiếng ồn perlin

  1. tỉ lệ. số xác định khoảng cách để xem bản đồ tiếng ồn
  2. quãng tám. số lượng mức độ chi tiết mà bạn muốn tiếng ồn perlin có
  3. lỗ hổng. số xác định mức độ chi tiết được thêm vào hoặc loại bỏ ở mỗi quãng tám [điều chỉnh tần số]
  4. kiên trì. số xác định mỗi quãng tám đóng góp bao nhiêu cho hình dạng tổng thể [điều chỉnh biên độ]

Chúng tôi sẽ không lo lắng quá nhiều về tỷ lệ, bạn có thể sử dụng nó để thu nhỏ [tỷ lệ lớn hơn] hoặc thu nhỏ [tỷ lệ nhỏ hơn]

Tiếng ồn Perlin kết hợp nhiều chức năng được gọi là 'quãng tám' để tạo ra các bề mặt trông tự nhiên. Mỗi quãng tám thêm một lớp chi tiết vào bề mặt. Ví dụ. Quãng 1 có thể là núi, quãng 2 có thể là tảng đá, quãng 3 có thể là đá

Lacunarity lớn hơn 1 có nghĩa là mỗi quãng tám sẽ tăng mức độ chi tiết của nó [tăng tần số]. Lacunarity của 1 có nghĩa là mỗi quãng tám sẽ có cùng mức độ chi tiết. Sai lệch nhỏ hơn một có nghĩa là mỗi quãng tám sẽ trở nên mượt mà hơn. Hai cái cuối cùng thường không được mong muốn nên độ thiếu sót của 2 hoạt động khá tốt

Độ bền xác định mức độ đóng góp của mỗi quãng tám vào cấu trúc tổng thể của bản đồ tiếng ồn. Nếu độ bền của bạn là 1, tất cả các quãng tám đều đóng góp như nhau. Nếu bạn kiên trì nhiều hơn 1 quãng tám liên tiếp sẽ đóng góp nhiều hơn và bạn sẽ nhận được thứ gì đó gần với tiếng ồn thông thường hơn [làm hỏng hình ảnh tiếng ồn thông thường ở trên thực sự là tiếng ồn perlin với mức tồn tại là 5. 0]. Cài đặt mặc định hơn sẽ là điện trở nhỏ hơn 1. 0 sẽ làm giảm tác dụng của các quãng tám sau

Trò chuyện đủ rồi. Hãy chạy một số thử nghiệm. Trước tiên, hãy bắt đầu với tiếng ồn perlin mặc định và hình ảnh đi kèm của nó

Cách tiếng ồn perlin này trông trong tập lệnh của chúng tôi là một mảng 2D có giá trị từ -1 đến 1. Các giá trị tối hơn trên bản đồ là các giá trị thấp hơn, các giá trị gần 1 là nhẹ hơn. Điều tôi muốn thử tiếp theo là gán hai màu cho các phạm vi giá trị khác nhau trong bản đồ này để tạo ra một số địa hình

Bản đồ địa hình này khá gọn gàng; . trong khi tôi chưa bao giờ quan sát địa hình tự nhiên trông như thế này nếu chúng ta nhìn vào bất kỳ phần nào của bản đồ, nó có vẻ 'thực tế'. ’ Hãy tiến thêm một bước nữa và thêm núi và tuyết

Điều này thật tuyệt nhưng kiểu địa hình này rõ ràng không phải tự nhiên. Để làm cho nó tự nhiên hơn, chúng tôi sẽ sử dụng bộ lọc tròn để loại bỏ tất cả nhiễu perlin ngoại vi

Chúng tôi sẽ gọi nó là Thế giới của Perlin

Ở đây tôi đang cố gắng tạo một hòn đảo nên tôi đã tạo một bộ lọc hình tròn và sau đó áp dụng nó vào mảng color_world perlin noise. Kết cục của tôi là một hành tinh trôi nổi trong đại dương. Tôi đã thay đổi màu đại dương thành màu đen và nó trông khá tuyệt. Điều đó nói rằng những gì tôi muốn là một hòn đảo, vì vậy hãy thử lại. Lần này chúng ta sẽ tính toán một gradient tròn và sau đó áp dụng nó trên nhiễu perlin như một bộ lọc

Gradient tròn

Tôi đã đấu tranh rất nhiều với phần này. Tôi chắc chắn rằng có một cách hiệu quả hơn để có được độ dốc như thế này nhưng ở trên là những gì tôi nghĩ ra. Tôi đã tính toán một số liệu khoảng cách từ tâm bản đồ và sau đó chuẩn hóa, thu nhỏ và định dạng lại các khoảng cách đó để tạo ra độ dốc hình cầu này. Một lần nữa nhẹ hơn có nghĩa là giá trị càng gần 1, màu tối càng gần 0. Tiếp theo, tôi áp dụng gradient hình tròn này cho tiếng ồn perlin mà chúng tôi đã tạo trước đó

Gradient tròn + Tiếng ồn

Phần này ít phức tạp hơn nhưng vẫn là một nỗi đau. Tôi nhân nhiễu perlin với độ dốc vòng tròn và sau đó tôi tăng độ tương phản bằng cách nhân số dương [giá trị nhẹ hơn] với 20. Sau đó, tôi chuẩn hóa lại thành 0–1 lần nữa

Gradient tròn được tô màu + Tiếng ồn

Điều này thực sự tuyệt vời và nó trông giống như một quần đảo tự nhiên hơn nhiều. Tôi khuyến khích bạn thử các phương pháp tô bóng khác nhau và có thể xóa ngẫu nhiên một số phần. Tôi sẽ thay đổi giá trị ngưỡng và đặt nó là threshold = 0.2. Điều đó sẽ tạo ra một quần đảo nhỏ hơn nhưng thực tế hơn như vậy

chúng ta đây. Chúng tôi có một quần đảo trông tự nhiên. Vì vậy, bây giờ chúng tôi có các đảo của mình, bạn có thể nhận thấy rằng bất kể tần suất bạn chạy lại tập lệnh này, tiếng ồn perlin sẽ tạo ra các đảo giống nhau. Để nhận các đảo mới, bạn có thể đặt tham số base của hàm pnoise2 thành một số nguyên ngẫu nhiên, hãy thử base=5, base=100

Quần đảo được tạo từ cơ sở 5 và cơ sở 100

Phần kết luận

Vì vậy, chúng tôi đã bắt đầu với một số tiếng ồn đơn giản và kết thúc bằng cách tạo ra một số lượng thực sự không giới hạn các quần đảo trông tự nhiên và độc đáo. Tôi hy vọng bạn thích bài viết này

Chức năng tiếng ồn Perlin hoạt động như thế nào?

Tiếng ồn Perlin là chức năng để tạo tiếng ồn nhất quán trong một không gian . Nhiễu kết hợp có nghĩa là đối với hai điểm bất kỳ trong không gian, giá trị của hàm nhiễu thay đổi trơn tru khi bạn di chuyển từ điểm này sang điểm khác -- nghĩa là không có sự gián đoạn.

Tiếng ồn Perlin nghe như thế nào?

Giống như hình ảnh đại diện của nó, tiếng ồn trắng nghe có vẻ nhân tạo, trong khi tiếng ồn Perlin nghe tự nhiên hơn. Tôi thấy nó giống với âm thanh bạn nghe thấy trong cabin của một chiếc máy bay đang bay, hoặc có thể là âm thanh tắc nghẽn của xe cộ mà bạn nghe thấy từ tầng cao nhất của một tòa nhà cao tầng.

Perlin là gì?

Trong kiến ​​trúc, kỹ thuật kết cấu hoặc tòa nhà, xà gồ [hoặc xà gồ trong lịch sử, purloyne, purling, perling] là dầm ngang hoặc thanh được sử dụng để hỗ trợ kết cấu trong các tòa nhà, phổ biến nhất . Xà gồ được hỗ trợ bởi xà nhà hoặc tường của tòa nhà. . Purlins are supported either by rafters or the walls of the building.

Tiếng ồn Perlin trở lại là gì?

PerlinNoise trả về “ Giá trị float giữa 0. 0 và 1. 0 ” nhưng vẫn cảnh báo rằng “giá trị trả về có thể vượt quá 1 một chút. 0f”.

Chủ Đề