2011-08-30 52 views
1

我想繪製一個立方體和像這樣的圓圈(沒有填充的球體)。我使用OpenTK沒有填充3D圖形的球體

http://farm7.static.flickr.com/6074/6097051938_cb0b798ce0_z.jpg

我一直有問題如下: 我嘗試立方的頂部畫一個圓。但是當我們旋轉立方體和圓時,這個圓就變成了橢圓。

我試着畫圈而不是圈。但不能使它像上面的圖像。 有人有解決辦法嗎?提前致謝!

這是我 http://farm7.static.flickr.com/6061/6096573967_22d56b2c2a_z.jpg

回答

0

繪製一個始終面向相機的圓圈,繪製圓圈很容易。只需創建一個頂點環並使用GL_LINE_STRIP來繪製它。 創建一個總是看​​着相機的轉換矩陣有點涉及。這是執行此操作的代碼。只需將其設置爲您的世界矩陣。

Matrix4 createBillbordMatrix(Vector3 position, Vector3 cameraPosition, vector3 up) 
{ 
    Vector3 Z = Vector3.Normalize(direction - cameraPosition); 
    Vector3 X = Vector3.Normalize(Vector3.Cross(up, Zaxis)); 
    Vector3 Y = Vector3.Cross(ZAxis, XAxis); 
    Vector3 T = cameraPosition; 

    return new Matrix4(X.X, X.Y, X.Z, 0, 
         Y.X, Y.Y, Y.Z, 0, 
         Z.X, Z.Y, Z.Z, 0, 
         T.X, T.Y, T.Z, 1); 
} 

如果你知道matricies是如何工作的,你應該能夠知道它是如何工作的)。否則,不要擔心,你不應該有執行它的問題。

0

繪製2D平面上的一個圓。

使用特殊的2D變換,並且由於這些只是線網尋找效果圖和所有相同的顏色,所以可以最後繪製2D部分。

所以:

1. Draw the 3D part 

2. Transform the corners to the 2D coords 

3. Draw the circles. 

林假設你想圓是恆定的形狀和大小,無論立方體的旋轉。

這可能會幫助你開始: http://www.opentk.com/node/2478

這將是遠遠不是試圖讓它幫你畫一個球體,甚至無陰影的速度更快。