2011-02-04 43 views
6

Có thư viện (.dll) có sẵn trong .Net hoặc có sẵn dưới dạng Thư viện của bên thứ ba không.Thư viện để tạo lưới trong .Net?

Tính năng nào sau đây?

Chúng tôi chỉ cần thêm như là đầu vào điểm đám mây hoặc điểm trong không gian 3D (với X, YZ Phối)

Và nó hiển thị đối tượng 3D trong ViewPort3D. Có nghĩa là tự động tạo MESH từ Point Cloud và cung cấp cho chúng tôi đầu ra là Đối tượng 3D trong ViewPort3D.

Lưu ý: Xem xét đối tượng sẽ là đối tượng Lồi.

Cảm ơn ..........

Trả lời

5

Tôi vừa mới được tự hỏi điều tương tự và đi đến kết luận rằng OpenTK rất dễ dàng để sử dụng cho điều đó. Tôi nghĩ rằng nó cho phép truy cập trực tiếp nhiều hơn hoặc ít hơn vào API OpenGL và không yêu cầu tải phụ thuộc.

Đây là một bản sao bit'n'paste từ my own question and answer, là kết quả của tôi đã thử nghiệm rất nhiều thư viện khác nhau trong vài ngày qua với mục đích tạo một đám mây điểm dựa trên dữ liệu tôi nhận được từ Kinect.

Nó không cung cấp đầu ra cho ViewPort3D, nhưng từ các thử nghiệm của tôi, nó nhanh hơn sử dụng WPF. Tôi không thể hiển thị (và tiếp tục cập nhật) một đám mây điểm 640x480 trong WPF với tốc độ chấp nhận được.

Tương đối dễ hiểu. Nó đòi hỏi vài dòng mã (và dễ hiểu) để bắt đầu. Nó không giữ các đối tượng cho tôi vì vậy tôi tự do thay đổi bất cứ điều gì cho mỗi vượt qua, đó là tuyệt vời bởi vì tôi chủ yếu làm việc với con trỏ không an toàn vào bộ nhớ.

Đó là khóa học khó kết hợp tốc độ dễ sử dụng. Tốc độ yêu cầu nói chuyện trực tiếp với API 3D trong khi dễ sử dụng yêu cầu trừu tượng hóa. Do đó, điều này phải được coi là API cấp thấp hơn so với một số API khác mà tôi đã thử. Nếu tôi muốn làm một số hoạt hình nhân vật prefab thì XNA có lẽ sẽ là một lựa chọn tốt hơn, nhưng đối với những đám mây điểm thì điều này dường như rất hứa hẹn cho đến nay (4-5 giờ hack).

Một số mã mẫu:

private void Render() 
{ 
    // Every frame 
    GL.Begin(BeginMode.Points); 
    GL.MatrixMode(MatrixMode.Modelview); 
    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); 
    GL.LoadMatrix(ref cameraMatrix); 

    GL.Begin(BeginMode.Points); 

    // Here I can add lots of points. I add 200k without any big problem. 
    // It seems these points could have been passed in as an array pointer too, 
    // but I'll look at that later. 
    GL.Vertex3(x2, y2, z2); 

    GL.End(); 
    glControl.SwapBuffers(); 
}