2013-08-07 50 views
1

我正在開發一個qt-vtk項目。我們有一個畫線功能。在兩個鼠標單擊位置之間創建直線。但是一旦演員被創建,它就不可見。剛剛添加演員後我正在調用渲染函數。但它沒有奏效。但是,如果我相機 - > resetview()線變得可見,但整個透視變化。我在哪裏做錯了?VTKActor渲染後不可見,但在相機上可見 - > resetview()

感謝 Rwik

回答

0

我認爲這是一個有點難以幫助,沒有看到代碼,但你嘗試過使用

ui->qvtkwidget->update(); 

,其中UI是從QMainWindow中得到的類的實例?

+0

我試過更新,同時渲染。但只有重置相機的作品。但重置會改變觀點。 – rwik

1

這可能與您無關,但我有這個問題(在ActiViz [託管VTK]),並爭執了一個星期,所以我希望這可以幫助那裏的人。事實證明,這是我們想要在畫布上畫線的位置的問題;它們距離攝像機太遠(在Z軸上)可見。

對於我們來說,我們試圖在用戶點擊的任何地方繪製一個十字。數據點在那裏,演員和其他人也在那裏,但只有在您調用resetCamera()並因此更改相機配置時纔會在場景中可見。 最初,我責怪我們必須添加到cirvumvent默認交互者吞下MouseUp事件(預期行爲)的自定義交互器。調查顯示,這似乎不太可能。

之後,我把責任推到相機上,懷疑可能是重置呼叫正在調用某種我不知道的更新方法。我調用了resetCamera(),然後將相機值恢復爲最初的值。 成功完成後,會發現相機縮小後會出現十字,然後一放好就消失,此時我意識到這與場景有關。

此時,我檢查了我們用於檢索3D中鼠標位置的方法,並意識到z值非常大,並且它將點放得太遠,因爲VTK的方法的副產品將2D位置轉換爲控制場景中的3D位置,反之亦然。

因此,畢竟,源自方法renderer.DisplayToWorld()和WorldToDisplay()的一個非常平凡和可避免的錯誤。 這可能不是每個人都有的問題,但我希望我可以在VTK周圍擺弄一週。