2010-10-04 12 views
5

Có ai có kinh nghiệm để so sánh khá VTK và OpenSceneGraph không? Tôi quen thuộc hơn với VTK, nhưng tôi tò mò muốn biết liệu có ai đã thử cả hai.VTK (bộ công cụ trực quan) so với OSG (OpenSceneGraph), khác?

Tôi đã xây dựng, 5.6 vtk và 2.9.9 osg, có thể chạy các ví dụ ... ở cái nhìn đầu tiên OSG có vẻ 'thô' hơn, nhưng có lẽ điều đó là OK. Đặc biệt tôi lo lắng về việc có thể fiddle với OpenGL cấp thấp trong VTK; ví dụ. Tôi đặt cược glReadPixels sẽ hoạt động độc đáo hơn với OSG. Bình luận?

(hoặc là có một đẹp 'khác' mà tôi đang thiếu? Tôi biết những người khác tồn tại, nhưng xin hãy nhìn vào phạm vi lớn của OSG và VTK ...)

Trả lời

10

VTK và OSG thực sự giải quyết các vấn đề khác nhau, do đó bạn nên sử dụng tùy thuộc vào những gì bạn đang cố gắng hoàn thành! VTK chủ yếu dành cho trực quan khoa học, và như vậy là hướng tới các thuật toán trực quan hóa dữ liệu. Nó có thể có một số khả năng làm việc trong một chế độ đồ thị cảnh, nhưng chủ yếu là để các tập dữ liệu khác nhau có thể được đăng ký (phủ lên) trên đầu trang của mỗi khác. Nó không thực sự có ý định đại diện cho các cảnh tùy ý (mặc dù nó có thể được shoehorned vào nó). Và bạn nói đúng, không có ý định kết hợp các cuộc gọi OpenGL với VTK. Một lần nữa, nó có thể được thực hiện, nhưng nó không nhất thiết phải dễ dàng.

Mặt khác, OSG là người kế thừa tinh thần cho SGI's Performer và dự định nhiều hơn cho những cảnh đồ họa tùy ý. Nó rất phụ thuộc vào ẩn dụ của đồ thị cảnh, mà tôi sẽ khuyến khích bạn đọc về (wikipedia có một bài viết phong nha). Tôi không có nhiều kinh nghiệm với nó (được nhiều hơn trên mặt sci-vis của sự vật).

Tóm lại, nếu bạn muốn xem các bề mặt nổi của dữ liệu thể tích, hiển thị trường dòng hoặc các trực quan hóa khác lấy từ dữ liệu khoa học, hãy đi với VTK. Nếu bạn đang cố gắng để thực hiện một thế giới ảo của một số loại, đi với OSG (hoặc một cái gì đó tương tự). Nếu bạn đang cố gắng thực hiện điều gì khác, hãy cho chúng tôi biết và có lẽ ai đó có thể giới thiệu một công cụ thích hợp hơn cho nhu cầu của bạn.

+0

Tôi thực sự đang ở trong một khu vực màu xám, do đó tôi cần phải quyết định cẩn thận. Tôi cần một "thế giới vritual" nhưng nó có thể cực kỳ đơn giản, tôi nghĩ rằng một vài tòa nhà vtkPolyData và một hình chữ nhật lớn cho mặt đất với kết cấu dán trên sẽ làm điều đó. Điều tôi thực sự cần làm là đọc dữ liệu hình ảnh được hiển thị, thực hiện một số tính toán ở nơi khác trên nguồn cấp dữ liệu hình ảnh, sau đó có thể cập nhật hình học. Vì vậy, tôi thực sự cần một cách để 'screengrab' hiệu quả; ví dụ. glReadPixels() sẽ là tuyệt vời nếu VTK có thể làm điều đó, tôi chỉ không biết nơi để thực hiện cuộc gọi đó. –

+0

Tôi thấy có một 'vtkOpenGLStateCache', nhưng tôi sẽ chỉ đường ống tất cả mọi thứ để OpenCV anyway vì vậy tôi thà tránh nhiều vtk OO-gói hơn cần thiết. –

+1

Tôi hiểu. Trước hết, nếu bạn có vtkRenderWindow, bạn có thể gọi vtkRenderWindow :: Nhận [RGBA] PixelData trên đó, và nó sẽ trả về một khối pixel - hoặc là một con trỏ thô, hoặc thành một loại vtkArray. Nói thẳng thắn, cả âm thanh OSG và VTK giống như một chút quá mức cần thiết - bạn có cân nhắc sử dụng OpenGL đơn giản không? Hoặc, tùy thuộc vào ngôn ngữ lập trình của bạn, có thể có một số thư viện hiển thị cảnh trọng lượng nhẹ mà bạn có thể sử dụng. – Gretchen