2008-10-06 57 views
6

Tôi biết cách vẽ các đối tượng cơ bản bằng cách sử dụng JOGL hoặc LWJGL để kết nối với OpenGL. Những gì tôi muốn là cái gì đó có thể tạo ra một số loại hình học cho cây, tương tự như những gì SpeedTree nổi tiếng. Rõ ràng tôi không mong đợi cùng chất lượng như SpeedTree.Có cách nào để vẽ các cây 3D bằng Java và OpenGL?

Tôi muốn cây không bị lặp lại. Tốc độ không phải là một mối quan tâm, tôi không mong đợi cần nhiều hơn 100 cây trên màn hình cùng một lúc.

Có thư viện vẽ cây miễn phí nào có sẵn trong Java không? Hoặc mẫu mã hoặc trình diễn? Có bất kỳ điều gì trong các ngôn ngữ khác mà tôi có thể chuyển hoặc học hỏi từ không?

Trả lời

2

Có hàng nghìn phương pháp. Một câu hỏi hay hơn sẽ định nghĩa 'tốt nhất' theo cách hạn chế hơn. Chúng ta đang nói 'tốt nhất' như ở tốc độ vẽ (thích hợp cho hàng ngàn hay hàng triệu cây)? Tốt nhất là đẹp nhất? v.v.

2

2D hoặc 3D?
Trong 2D, cách thông thường là sử dụng L-systems.
Tôi cũng đã thử một cách tiếp cận OO, xác định các đối tượng cho thân cây, cành, lá, tất cả mở rộng một lớp trừu tượng và thực hiện một giao diện kiểu gen (để thay đổi loại cây).
Không chắc chắn nếu nó hiệu quả (nhiều đối tượng được tạo ra, đặc biệt nếu tôi tạo hiệu ứng cho cây) nhưng thú vị để làm.

0

Nếu bạn đang sử dụng nhật thực/SWT, hãy thử Vẽ 2D.

0

Nếu bạn nghiêm túc về việc có cây đẹp, nhanh, có thư viện C++ thương mại SpeedTree. Rất nhiều trò chơi lớn sử dụng nó (ví dụ: GTA, Elder Scrolls).

+0

SpeedTree là tuyệt vời, nhưng tôi đang lên kế hoạch một số phần mềm mà sẽ là nguồn mở miễn phí (có thể là GPL được cấp phép) và vì vậy tôi cần phải hoặc tìm một giải pháp miễn phí hoặc tự làm. – Liam

0

Sự kết hợp giữa OpenSceneGraph và SpeedTree đã hoạt động đối với tôi.

0

Tôi biết hai thư viện cho phép sử dụng OpenGl với java.

LWJGL (Thư viện trò chơi Java trọng lượng nhẹ), imo là tốt hơn do tính đơn giản và tính tương đồng của nó khi sử dụng opengl với c/C++.

JOGL Nếu bạn muốn kết hợp các thành phần swing với opengl thì đây có thể là lựa chọn tốt hơn, tôi chưa bao giờ sử dụng nó nhưng vài năm trước nó được biết là khá lỗi, tôi không biết liệu nó có trưởng thành hay không.

Đối với việc vẽ cây, có nhiều cách để làm như vậy giống như các poster khác nói, bạn có thể muốn cụ thể hơn.

chỉnh sửa: Tôi đoán tôi đã hiểu nhầm câu hỏi một chút, tốt:/Bạn có thể tải trong mô hình 3D của cây và hiển thị hình ảnh đó.

1

Dưới đây là một vài nguồn lực có thể hữu ích:

  • gamedev thread on the subject - chứa một số lời khuyên hữu ích/gợi ý
  • ngPlant - một mã nguồn mở công cụ thế hệ nhà máy thủ tục. Nó không được viết bằng Java, nhưng bạn có thể tìm thấy các ý tưởng trong các thuật toán của nó.
Các vấn đề liên quan