2015-10-25 61 views
1

我正在研究一個研究項目,該項目涉及到將java中的三維位置座標(x,y,z)與其他特徵(例如點的大小)一起可視化。java中的三維運動圖

如果在2D中的位置,谷歌運動圖將是完美的。然而,它在3D中,因爲我正在觀察(隨着時間的推移)在三維空間中的運動。

我已經研究了很長一段時間了,我確實發現我可以在java3D中做到這一點,但庫看起來已經過時了,我不確定它是否可以處理流暢的動畫(假設我有座標在每個時間點而不是路徑)。與openGL(JOGL)的連接對於此任務似乎非常複雜。我不確定處理可以處理它。

在java3D的動畫中,是否有直接的3D動畫球體動畫方式?同時改變他們的周長?我一直在閱讀一些教程,但沒有完全做到這一點。或者,我是否以錯誤的方式去解決這個問題,是否可以使用某種數學/幾何圖書館?

這裏是什麼,我想實現一個例子:

Second 0: 
- sphere at (0,0,1): (relative) size 1, colour green 
- sphere at (1,1,1): size 2, colour green 

Second 1: 
- sphere at (0,2,2): size 3, colour green 
- sphere at (4,4,1): size 4, colour red 
- sphere at (1,2,1): size 1, colour green 

Second 2: 
- sphere at (1,0,1): size 2, colour red 

帶或不帶平滑過渡。我不知道如何開始JOGL或如果可能的話。

+1

嗨,dorien,如果我沒有理解,你需要基本上渲染多個球體並更新它們在運行時的位置。這在opengl/jogl中是一個相對簡單的任務。改變他們的周圍似乎有點棘手。有幾個選項可供選擇,您可能需要對其進行縮放,以便一切都變得更大/更小,或者您可能需要使用另一組幾何體,這取決於您是增加還是減少它。無論如何,你應該嘗試更深入地解釋你真正需要的東西。有多少球體,它們之間的增量多少,更新頻率多少,ecc – elect

+0

爲了更清楚地說明,我已經添加了一個我想在問題中實現的最小范例。 – dorien

+1

通過平滑的轉換,你的意思是,例如,spere [(0,0,1),1,green]變成[(0,2,2),3,綠色],或者第二個0的球體應該消失,而那些第二個1應該出現? – elect

回答

1

我從來沒有使用Java3D,但我知道喬吉。

你描述的是,正如我已經提到的,在OpenGL中一個相當簡單的任務。

基本上你需要的是像這樣的僞代碼:

loadData(); 

for(each spehere) { 
    updatePositionAndScale(time); 
    render(); 
} 

您先加載三角形頂點單個球狀幾何。由於三角洲半徑看起來很小,您可能需要加載一個球體,否則您可以加載幾個球體,這取決於幾何體的豐富程度。我的意思本質上是相似的

enter image description here

反正東西,因爲球的數量是非常低(現代GPU可以輕鬆處理三角形幾百),你可能想要去與一個高詳細spehere。

然後,您將循環播放您的球體併爲每個時間刻度計算當前球體的轉換位置和縮放比例。如果你需要線性的東西,你可以通過一個簡單的插值來實現。 所有這些參數,位置和縮放,會影響它被稱爲模型矩陣是改變你的幾何形狀爲模型空間的空間,你的三角形首先存在,進入世界空間。 對於每個球體,您將更新這些參數,然後您只需渲染它。

講起現在的後果^^

學習的OpenGL會要求你投資一些時間。這真的很難估計,因爲一切都取決於你開始的知識水平和你想要達到的水平。 如果你想保持儘可能最小,那是儘可能簡單,我會說這不會是一個特別複雜的任務(最後的名言)。 你可能會在幾天內完成,這也取決於你的數學技能。 您將學習着色器的基本知識,他們如何讀取數據及其如何工作,轉換和OpenGL中的(簡單)照明。假設球體的數量也很少,那麼你可以在java中完全做到這一點,而不使用任何加速度(比如OpenGL)並且節省一些痛苦的時間。 但是既然你已經在研究Java3D和Jogl,我只想告訴你,你想要達到的是真正的基礎(當然,如果你已經知道OpenGL的話)。

所以缺點是你必須在幾天(幾周)內學習一個新的API的基礎,比如OpenGL,然後才能達到你想要的。 相反,你會學到一些新的東西(這總是很好),你會得到硬件加速,這意味着你可以使用所有這些功能,通過使用燈光效果使這些球體高度細緻和美觀。 如果你想快速瀏覽一下,這個簡單的Hello Triangle看起來像

+0

非常感謝您的詳細解釋。我想我需要學習這一點。希望它會很快:) – dorien