Thuật toán đá thủ tục


7

Tôi đang tìm cách tạo ra một số tảng đá poly thấp và các tảng đá cho một trò chơi.

Đây là một ví dụ về những gì tôi muốn đạt được

Tôi chưa tìm thấy nhiều thông tin thú vị trên internet ngoài các bài viết về phần mềm 3D. Không biết đường nào để đi.


1
Giống như @jackmott đề nghị bạn có thể sử dụng một quả cầu. Nhưng tôi cũng sẽ đề nghị sử dụng bản đồ chiều cao ngẫu nhiên trên quả cầu. Bạn có thể tạo một bản đồ chiều cao đá "mẫu" và sau đó chọn ngẫu nhiên từ đó.
Andrew Wilson

1
Bạn chắc chắn nên kiểm tra một trang web tuyệt vời của thiên tài thủ tục Inigo Quilez: iquilezles.org . Cũng xem shadertoy.com của mình .
Qbic

1
par_shapes.hThư viện tệp đơn của Philip Rideout cho các lưới tham số có rockthuật toán tạo dựa trên nhiễu đơn giản. Bạn có thể có được một số cảm hứng từ việc thực hiện.
Lars Viklund

Câu trả lời:


4

Một cách tiếp cận có thể là bắt đầu với một hình cầu, có thể chọn một số tham số ngẫu nhiên để kéo căng nó với số lượng khác nhau để một số tảng đá có hình tròn, trong khi những cái khác có hình trứng, sau đó sử dụng tiếng ồn perlin 3D hoặc Simplex và biến thể fractal (xem các phương pháp fbm trong liên kết) để đẩy các đỉnh về phía trung tâm, hoặc kéo chúng ra, bằng một số bội số của kết quả nhiễu perlin. Bạn chỉ cần chuyển tọa độ 3d của từng đỉnh cho hàm nhiễu perlin 3d, lấy lại một số float trong phạm vi [0,1] và sử dụng nó để đẩy hoặc kéo đỉnh.

Nếu bạn cho tôi biết môi trường / ngôn ngữ bạn đang làm việc với tôi có thể đi vào chi tiết hơn.


Tôi đang sử dụng C ++ và Direct3D. Tôi bắt đầu cố gắng sửa đổi một đám mây lồi điểm nhưng kết quả không được tốt lắm. Tôi sẽ thử những gì đã được đề xuất ở đây và bắt đầu từ một quả cầu.
dotminic

Tôi đã có một số mã nhiễu perlin tiện dụng trong c ++ tại đây: github.com/jackmott/FastNoir-SIMD mặc dù nếu các quả cầu có poly thấp đủ thì có thể có ý nghĩa hơn khi thực hiện một số chuyển vị ngẫu nhiên của đỉnh. Sử dụng tiếng ồn sẽ là quá mức cần thiết.
jackmott

3

Khi tôi tạo đá trong phần mềm mô hình hóa, tôi bắt đầu từ một icosaeder, sau đó kéo căng nó ra, thu nhỏ nó thành nit, sau đó tôi chỉ cần chọn các đỉnh ngẫu nhiên và tôi kéo chúng ra một chút. Tôi cho rằng, điều tương tự có thể được thực hiện với mã

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.