2011-10-24 42 views
0

我有一組點,侷限於二維座標平面,特別是第一和第四象限(正x值)。我能夠通過這些要點畫出一條線。OpenGL - 掃描表示

我還可以在3D空間中,在另一個窗口中將這些點繪製爲一條線。我將如何圍繞軸掃描它們,比如Y,以便我可以實現3D網格?我相信通常的例子是使用點在Maya中創建一條線,創建一個高腳杯等。

我似乎無法通過谷歌搜索術語「掃代表」,這是我的課本是指將這個過程稱爲發現很多。我只是在尋求一些思考過程或指導方針,呃,引導我!

+2

您正在尋找的概念通常稱爲「掃面」或「擠壓」或「旋轉表面」(當專門圍繞軸旋轉時)。 –

+1

可能使用http:// stackoverflow。com/questions/4117084/opengl-how-to-lathe-a-2d-shape-in​​to-3d/4117489#4117489 –

+0

是的,這幾乎解釋瞭如何生成點。但是,您仍然需要生成三角形或線段來將它們相互連接。 – Robinson

回答

2

有很多方法可以做到這一點,但重要的原則是圍繞某個軸旋轉原始線,然後從當前線發出頂點到下一線以生成三角形,請記住通過將最後一行加入第一行來「封閉」形狀。

就我個人而言,我會生成一個頂點緩衝區和一個索引緩衝區。我會圍繞Y軸旋轉N行,將每個旋轉的線的點存儲到頂點緩衝區中。

然後,算法會產生一個或多個線帶指數(多條線是比較容易,因爲否則你需要創建退化三角形,從一個條轉到下一個)

的下一部分因此,假設您有一個頂點緩衝區V,原始線P中的點數和線N的數量,您可以簡單地遍歷,通過發出索引I和索引I + P,P * N次來生成三角形條帶。給定頂點緩衝區和索引緩衝區,然後渲染N個三角形條。

如果你要聰明一點,你可以存儲索引緩存與一個單個條帶指數,並在每次渲染時添加P到頂點的基礎指標。請注意具有大量索引的高度鑲嵌網格。有些牌的最大頂點指數是65535,其他牌只有一個稍大。

我希望有道理!

0

不太清楚你想要達到的,但據我瞭解,你有一個「行」(這是一條直線曲線「線」? - 這個不太清楚) - 最後的圖像,並且希望將它們圍繞某個軸旋轉,以便創建某種類似於光盤或圓錐體等二維「網格」?

,你可以簡單地嘗試glRotatef(A,X,Y,Z)其中:

「a」 是要旋轉和 是圍繞着你旋轉向量的夾角。

因此,如果您要繪製的圖形繞Y軸的10倍,那麼它可能是這樣的:

for(int i = 0; i<10; i++) 
{ 
    float da = 2.0*3.14/10.0 
    plotLine(); // function for plotting the line once in 3 space 
    glRotatef(da, 0, 1, 0); 
} 

這將繪製線,旋轉通過少量的完整數字,然後劇情它會重複10次,這樣原始線條圍繞一個軸繪製10次 - 創建我認爲您試圖實現的「網格」。

+0

這將確實重複Y軸的「線」,但不會水平連接點嗎?難道它不僅僅是一堆太空中的「垂直」線段嗎?我還需要將這些觀點「水平地」彙總在一起。 – Josh

+0

此外,「線」只是通過GL_LINE_STRIP連接在一起的一組用戶定義的點。 – Josh

+1

我明白你的意思了。所以上述工作,你只需要他們都水平連接以及? – drjrm3