Tạo lưới cây 3d


16

Tôi chưa tìm thấy câu hỏi nào trên các dòng này, hãy sửa cho tôi nếu tôi sai.

Cây cối (và động vật nói chung) là phổ biến trong các trò chơi. Do bản chất của họ, họ là một ứng cử viên tốt cho thế hệ thủ tục.

SpeedTree , tất nhiên, nếu bạn có thể đủ khả năng đó; theo như tôi có thể nói, nó không cung cấp khả năng tạo lưới cây của bạn khi chạy. Sau đó, có SnappyTree , một trình tạo cây dựa trên webgl trực tuyến dựa trên proctree.js , có khoảng ~ 500 dòng javascript.

Người ta có thể sử dụng một trong hai cách trên (hoặc một số trình tạo cây khác mà tôi chưa từng vấp phải) để tạo ra vài chục lưới cây trước đó - hoặc mô hình chúng từ đầu trong một bộ điều biến 3d - và sau đó nhân bản ngẫu nhiên / nhân rộng chúng cho một vài biến thể khác ..

Nhưng tôi muốn có một trình tạo lưới cây miễn phí, có thể liên kết.

Phương pháp khả thi:

  • Chuyển proctree.js sang c ++ và xử lý giấy phép nguồn mở (dường như không phải là gpl, vì vậy có thể thực hiện được; tác giả cũng có thể sẵn sàng hợp tác để làm cho giấy phép trở nên miễn phí hơn nữa).
  • Cuộn của riêng tôi dựa trên hệ thống L.
  • Đừng bận tâm, chỉ sử dụng cây được tạo ngoại tuyến.
  • Sử dụng một số phương pháp khác tôi chưa tìm thấy.

Cập nhật 2015 : đã kết thúc việc chuyển proctree.js sang c ++ https://github.com/jarikomppa/proctree


5
Để tự mình thực hiện, tôi muốn giới thiệu cuốn sách 'vẻ đẹp thuật toán của thực vật' của Prusinkiewicz và Lindenmeyer, có sẵn tại Thuật toánbotany.org / con / # abop . Cuốn sách và trang web cũng liệt kê rất nhiều tài liệu nghiên cứu về thế hệ thực vật ảo.
Exilyth

Tôi đã tạo ra một công cụ trực tuyến có tên 3DFlora với WebGL. Nó có hơn 80 tham số và cho phép bạn tải xuống các kết quả dưới dạng tệp obj. Bạn có thể tạo ra hầu hết các loại cây với nó. CheckIt nó ra ở đây: 3dflora.sina-s.com
user2002741

Câu trả lời:


12

Tôi đã thực hiện một chút công việc trong lĩnh vực này, mặc dù hầu hết các bản demo của tôi đều cũ hơn:

(flash 2010)
http://genesisbbs.com/appstem.html (nhấp và kéo chuột)
http://genesisbbs.com/appstem2.html
(directX 2006)
http://vimeo.com/5206795

Tôi rất khuyến khích bạn tự lăn, nếu bạn đang làm điều này cho vui. Bạn gần như chắc chắn sẽ cần phải làm việc với Quancyions . Hiểu chúng là rất khó, nhưng bạn không cần phải đi quá sâu để sử dụng chúng. Hãy nghĩ về một tứ phương như một vectơ với một thành phần phụ: xoay. Nếu bạn muốn cây của bạn xoắn và xoay khi chúng phát triển, chúng sẽ cần tứ phân.

Những thứ khác để học:
Số liệu Lichtenberg
Laplacian Tăng trưởng
Biểu đồ Voronoi
gần nhất (google chúng)

Tôi (cá nhân) sẽ không khuyến khích việc sử dụng L-Systems, ngoài việc có thể ra lệnh một ngữ pháp cho những gì phát triển ở đâu, tức là [hạt giống -> [gốc] / [thân cây>> nhánh -> [hoa / lá]]. Hệ thống L không tốt để đáp ứng với các kích thích của môi trường như hướng ánh sáng mặt trời, trọng lực, chướng ngại vật, v.v.

Đối với mối quan tâm về tốc độ, một cây duy nhất có thể được tạo ra trong thời gian thực. Đối với mục đích bộ nhớ và hiệu năng, bạn có thể chỉ muốn tạo một nhóm cây nhỏ và ví dụ chúng một chút nếu bạn đang xử lý rừng.

Hầu hết các máy tạo cây hiện tại không phải là tuyệt vời (IMHO), bên cạnh các máy phát điện cao cấp được sử dụng cho Maya và như vậy.

Tôi cũng rất, rất khuyến khích sử dụng voxels để tạo cây (sau đó bọc da bằng lưới nếu cần). Ưu điểm của voxels là bạn có thể dễ dàng mô phỏng các thuật toán tăng trưởng bằng cách sử dụng những thứ như tăng trưởng Laplacian và automata khác nhau (không phải trò chơi cuộc sống của Conway, nhưng các quy tắc khác tạo ra kết quả thú vị).


3

Cá nhân tôi có thể sẽ bắt đầu với những cây được tạo sẵn và chỉ một lần tôi có một công cụ kết xuất rừng kick-ass - hoàn chỉnh với các bụi cây, cỏ, nấm và các thứ - tôi sẽ bắt đầu tìm kiếm nếu tôi cần nhiều lưới cây khác nhau.

Điều đó đang được nói, bạn có thể xem ngPlant . Nó bao gồm một ứng dụng mô hình cây thủ tục GPL, nhưng các thư viện thực hiện tất cả các công việc nặng đều được cấp phép BSD. Nó được viết bằng C ++.

Đối với kết xuất rừng, có Hình học Paged (được cấp phép của MIT) cho công cụ kết xuất Ogre .


3

Vấn đề chính với các cây thủ tục là không tạo ra chúng, nhưng hiển thị tất cả các khung trong thời gian chạy. Đây là lý do bạn sẽ thấy nhiều cây giống hệt nhau trong các trò chơi AAA, không phải là họ không thể triển khai hoặc viết công nghệ tạo ra những cây độc đáo, điều đó có nghĩa là bạn sẽ phải cắt bỏ vô số tính năng khác cho trò chơi chạy.

Nếu bạn có nhiều cây giống hệt nhau, bạn có thể xoay chúng và có thể chia tỷ lệ chúng đồng đều để làm cho chúng trông khác nhau từ mọi góc độ, và vì chúng giống hệt nhau, bạn có thể lấy chúng để tiết kiệm mili giây quý giá trên mỗi khung.

Chỉ cần suy nghĩ về vấn đề này trong một giây, có thể có một phương tiện hạnh phúc - làm thế nào về việc bạn tạo ra một vài bộ phận cây, thân, cành, lá khác nhau .. nhưng những thứ đó khớp với nhau theo cách mô đun, như cây lego. Sau đó, bạn có thể có nhiều kết hợp và một số cây khá độc đáo, nhưng bạn cũng có thể ví dụ tất cả nhiều phần để trò chơi chạy nhanh hơn.


Ngoài ý tưởng từng phần, câu trả lời này không thực sự bổ sung bất cứ điều gì mới.
Jari Komppa

3
luôn luôn tốt đẹp khi OP được đánh giá cao. Đối với một trang web QandA, bài viết của bạn thiếu câu hỏi rõ ràng. Bên cạnh câu trả lời này trực tiếp giải quyết các điểm đạn của bạn.
SirYakalot

Vâng, đã có mình, xin lỗi.
Jari Komppa

1

Tôi tình cờ gặp cây [d] cách đây một thời gian ... Tôi chỉ sử dụng nó trong một khoảng thời gian nhỏ để thử nghiệm một dự án nhưng đó chỉ là do tôi đã ngừng phát triển - công cụ cung cấp cho bạn một loạt các tùy chọn máy phát để chơi và , từ những gì tôi nhớ, là khá nhanh. Một liên kết dưới đây.

Nhược điểm là nó không phải là một trình tạo cây mà bạn có thể kết hợp. Bạn sẽ phải tạo trước một vài cây và sau đó sửa đổi dữ liệu khi đặt chúng vào thời gian chạy để điều chỉnh tính duy nhất của chúng.

Tốt nhất trong tất cả các TreeD là miễn phí sử dụng và bạn có thể bao gồm các cây bạn tạo trong các dự án của riêng bạn, thương mại hoặc miễn phí, miễn là chúng không phải là gói mô hình, gói kết cấu, trình tạo mô hình 3D hoặc trình tạo kết cấu.


Rất vui khi thấy các trình tạo miễn phí khác, ngay cả khi nó ở định dạng thư viện.
Jari Komppa

1

Đây là một giải pháp nhỏ gọn và tôi đã sử dụng nó trong một dự án và có thể nói với bạn rằng nó đủ nhanh để tạo cây khi đang di chuyển tại sao trò chơi đang chạy. Nó chắc chắn không chi tiết, nhưng nếu bạn thoát khỏi biển quảng cáo thì nó có thể khá gọn gàng.

http://ltrees.codeplex.com/


Có vẻ như là một giải pháp tốt cho người dùng XNA.
Jari Komppa
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.