我正在WPF中創建應用程序。我使用了很多3DTools。我有一個四面體,裏面有一個立方體。我想在3D方向上移動立方體。我的四面體以(0,0,0)爲中心,使用軌跡球旋轉(以編程方式,我的視口上有一個透明邊框來捕捉事件)。WPF3D如何在平行於攝像機的平面上操作對象
應用程序的用戶認爲移動立方體的更自然的方法是將其始終移動到2D平面(平行於屏幕)。所以,如果我想在屏幕上更深地移動它,例如,我旋轉四面體並將其移動到Y軸上。我認爲這可能是一個很好的解決方案。
我有問題,我希望能幫助解決這個問題:首先,當我移動我的四面體時(軌跡球內),軌跡球看起來像移動所有系統座標。我說這是因爲我爲調試目的繪製軸,而那些軸也在旋轉。但事實並非如此 - 它們正在移動,只是因爲軌跡球內的物體(對吧?)。其實,我認爲軌跡球內部的座標系真的在變化。當我在Y-X軸上移動立方體時,我表現良好。但是,如果我稍微轉動一下,並嘗試在Z軸上移動,則會看到它變大(靠近相機)和變小(遠離相機)。 =(
所以我的問題是如何界定,這將不會被軌跡球?被旋轉平面對於我來說,答案看起來像「OK,只是把它定義軌跡球之外」,但正如我說(和3DTools文檔說)我有一個邊界在我的視口...所以我不知道如何處理這個。
我的tetraedron在一組ScreenSpaceLines3D。我將不得不保持立方體在裏面。我的第二個問題是如何追蹤旋轉的四面體頂點的位置?當Position屬性給我原來的位置而沒有別的東西時,我真的很失望,我應該保持矩陣變換並應用當我需要時,我的觀點?
對不起長文本,但我真的堅持在這個沒有那麼多編程問題。我在WPF中知道,我仍然有一些概念缺乏。
由於提前,
佩德羅
出於好奇,爲什麼這3DTools而不是OpenGL? –
WPF,而不是OpenGL,被用於(據說)更簡單和更輕。他們已經有了.NET Forms應用程序,只需要一個組件。該團隊在WinForms中有經驗,但沒有3D編程。他們發現如果更接近他們所知道的,那麼他們很容易維護後者。是不是我的決定:) 3DTools只是WPF的圖書館 –
@PedroDusso我已經更新了我的答案,以提供更多的細節。請看看並隨意發表評論:-) –