Tôi tìm thấy nếu tôi xác định khoảng cách mặt phẳng xa cho ma trận phối cảnh là 1,000,000,000
, thì tất cả đối tượng bên trong phạm vi đó sẽ bị cắt bớt. Phạm vi của 100,000,000
hoạt động tốt. Bất cứ ai cũng có thể giải thích điều này? Ý tôi là, nó vẫn không xấp xỉ số lượng phạm vi Max. Hay tôi sai về điều này? Đối với tính toán quan điểm tôi sử dụng thư viện GLM. Không có đường ống cố định cứng.OpenGL Far Plane cho các giá trị rất lớn clip mọi thứ
CẬP NHẬT: (JAVA) Perspective ma trận tính:
public static Mat4 perspective(float fovy, float aspect, float zNear, float zFar) {
float range = (float) (Math.tan(Math.toRadians(fovy/2.0f)) * zNear);
float left = -range * aspect;
float right = range * aspect;
float bottom = -range;
float top = range;
Mat4 res = new Mat4(0.0f);
res.matrix[0] = (2.0f * zNear)/(right - left);
res.matrix[5] = (2.0f * zNear)/(top - bottom);
res.matrix[10] = -(zFar + zNear)/(zFar - zNear);
res.matrix[11] = -1.0f;
res.matrix[14] = -(2.0f * zFar * zNear)/(zFar - zNear);
return res;
}
Không chắc tôi hiểu câu hỏi, nhưng một độ chính xác phao duy nhất có thể đại diện cho một ít hơn 7 chữ số thập phân. Số của bạn có 10 chữ số, vì vậy bất kỳ tọa độ nào chỉ khác nhau trong 3 chữ số cuối cùng là "giống nhau". Vì vậy, 999,999,950 có thể bị cắt bớt. Đó có phải là điều bạn thắc mắc không? – Damon
Âm thanh như một vấn đề làm tròn hoặc thứ gì đó tương tự. Tất nhiên nó không vượt qua phạm vi float (nó thậm chí không vượt qua phạm vi int 32-bit). Nhưng chia cho số lượng lớn như vậy có thể biến mọi thứ thành 0. Tương tự như vậy khi thêm một số rất nhỏ vào số lượng lớn này (như trong 'gần + xa' hoặc' gần-xa' được thực hiện trong quá trình tính toán ma trận), con số nhiều khả năng nhất giữ nguyên. Nó cần phải được phân tích như thế nào ảnh hưởng đến tính toán của ma trận nói riêng. –
Cảm ơn câu trả lời.Nhưng một anh chàng ở trên bạn nói ngược lại. –