Tôi đang thiết kế một trò chơi bao gồm một phần khám phá các hành tinh. Tôi muốn sử dụng thế hệ giả ngẫu nhiên cho chúng, tái sinh từ một hạt giống xác định khi tôi phải tải chúng thay vì lưu trữ mọi chi tiết, sẽ quá nặng. Vì vậy, tôi sẽ chỉ lưu trữ trong một tệp các hạt giống ngẫu nhiên và sửa đổi được thực hiện bởi người chơi nếu có.
Người chơi phải có thể nhìn hành tinh từ quỹ đạo (với mức độ chi tiết rất thấp, sau đó đi xuống mặt đất, tăng dần mức độ chi tiết của khu vực nơi anh ta / cô ta hạ cánh và dỡ những cái ở phía bên kia của hành tinh, nằm ngoài tầm nhìn của người chơi.
Nếu tôi phải làm điều đó trên mặt đất, tôi sẽ làm điều đó một cách dễ dàng với hệ thống khối vuông. Nhưng vấn đề ở đây là các hành tinh - gần như - hình cầu.
Vì vậy, cách tốt nhất để tải các chi tiết mặt đất (phù điêu và vật tiếp đất) xung quanh một điểm chính xác là gì?
Tôi đã mặc dù trên hai giải pháp, nhưng cả hai đều có một điểm yếu:
1. Cắt hình cầu theo khối vuông.
Khi người chơi đã đủ gần mặt đất, tôi chỉ cần cải thiện chi tiết các ô vuông gần nhất từ vị trí của anh ấy / cô ấy.
Nếu nó không đủ, tôi vẫn có thể cắt từng ô vuông trong các ô vuông phụ để tải khi người chơi ở trên hoặc thực sự ở gần mặt đất.
Nhưng như bạn có thể thấy trên hình, có một vấn đề nếu người chơi cố gắng hạ cánh trên cột: hình vuông trở thành hình chữ nhật rất mỏng, hoặc thậm chí là hình tam giác cho dòng cuối cùng, và thêm vào đó là thực tế rằng chúng sẽ có nhiều thứ để tải, thế hệ sẽ xuất hiện méo mó.
2. Bắt đầu từ một khối nhựa.
Ở đây, tôi chỉ có thể tăng số tam giác xung quanh vị trí của người chơi khi anh ấy / cô ấy đến gần.
Nhưng tôi không biết làm thế nào để xác định vị trí các hình tam giác gần hơn vị trí của người chơi. Tôi nghe nói tọa độ của Cartesian có thể hữu ích trong trường hợp đó, nhưng tôi không biết cách sử dụng chúng.
Tôi đang sử dụng C ++ / OpenGL cho nó, vì vậy điều chính để tạo và tải ở đây là các đỉnh đại diện cho sự giảm nhẹ bề mặt và màu sắc / kết cấu.