2012-01-27 57 views
4

給定相機朝向的3D矢量和3D空間中3D對象的方向/方向矢量,我怎麼能爲了在視覺上沿着所述物體的方向移動,計算鼠標指針在屏幕上必須遵循的二維斜率?3D空間:使用鼠標指針跟隨物體指向的方向

基本上我希望能夠點擊一個箭頭並通過拖動來回移動,但只有當鼠標指針沿着箭頭的長度(大致)拖拽時,它指向。

謝謝

回答

1

我不知道我100%理解你的問題。你介意張貼一張圖嗎?

您可能會感興趣。我回答以前的問題calculate a local X Y Z axis given a camera direction(看)矢量,也是一個問題translate an object in a plane parallel to the camera

這兩個例子都使用Vector dot product,Vector cross product來計算所需的向量。在你的例子中,一旦找到它們,vector dot product也可以用來輸出兩個向量之間的角度。

+1

此處是一個簡單的例子..我希望它清理了一下。 1)http://screencast.com/t/Vl7R1hnhZTY 2)http://screencast.com/t/wq8x9fwnJ – user1070447 2012-01-27 09:42:11

+0

基本上我猜我在問什麼是如何獲得對象在屏幕上的二維座標3D空間 – user1070447 2012-01-27 09:46:16

+0

@ user1070447因此打擊3D中物體的基本測試?看看我鏈接到的上一個問題。有幾個答案可能會有所幫助:http://stackoverflow.com/questions/8633034/basic-render-3d-perspective-projection-onto-2d-screen-with-camera-without-openg/8758027#8758027 – 2012-01-27 09:54:04

0

它在一定程度上取決於您用於將3d真實世界座標轉換爲2D屏幕座標的轉換。透視圖,等軸測圖等等......你通常會有一個向前的(3d-> 2d)和向後的(2d - > 3d)轉換,反向轉換會丟失信息。 (即前進每個3d點將映射到唯一的2d點,但從點返回可能不會產生相同的3d點)。您通常可以將鼠標點投影到對象上以獲取缺少的維度。

對於鼠標拖動,您通常會讓用戶指定一個操作(在投影平面上平移,放大或縮小或圍繞錨點旋轉)。您的輸入是拖動開始和結束時的鼠標座標,您將其轉換爲三維座標系以獲得兩個三維座標,這將爲您提供拖動/平移等的dx,dy,dz ...