2011-10-14 54 views
2

我正在開發一個增強現實項目,該項目使用多個標記來獲取我打算覆蓋的3D模型的位置。 (我從零開始使用OpenCV進行此操作,但我沒有使用ARToolkit或任何其他現成的標記檢測庫)。桌面增強現實應用程序的3D模型操作

環境:VISUAL C++ 2008,Windows 7中,酷睿2 1GB內存,OpenCV的2.3

我想要的3D模型由用戶操作因此它會變成一種模擬。

爲此我計劃使用OpenGL。你有什麼建議,建議?模擬部分可以使用OpenGL本身完成,還是需要使用OpenSceneGraph/ODE/Unity 3D/Ogre 3D之類的東西?

如果我能生產更多的自編碼系統而不是使用現成的產品,這對於一個學術項目來說更好。

+1

OpenGL是用於渲染。如果你的模擬涉及物理學,你應該考慮整合某種類型的3D物理庫來確定你的虛擬物體的位置。基於這些計算,您可以使用OpenGL渲染模型。 – Pedro

+0

+1的回覆。我急切地等待,直到有人回覆。謝謝。到目前爲止,我的範圍是操縱模型,讓我們說改變顏色,3D模型的大小。如果使用「場景」圖表,那麼它是不必要的嗎?謝謝。 – coder9

+0

我自己並沒有使用任何場景圖庫,但據我所知它用於在場景中以父子關係分級存儲所有對象。假設場景圖庫提供了將對象從一個本地座標系轉換爲另一個本地座標系的方法,例如,當一個對象被附加到一個新的父節點上時如果你有一個複雜的場景,並且有許多處於父子關係中的對象,場景圖將是有用的如果你只是想切換顏色,例如取決於哪個標記是可見的,我想這是沒有必要的。 – Pedro

回答

2

看起來OpenGL足夠滿足您的需求(繪製具有特定顏色和大小的模型)。

如果您是OpenGL的新手,並且您不打算將其用於您的未來項目,那麼使用舊的固定功能管線可能更容易,該管線已經具備照明和顏色系統,並且不會你不需要學習如何編寫着色器。

對於您的項目,您需要一個紋理,您可以使用glTexSubImage2D()將相機中的圖像複製到相機中,然後再將其繪製到背景中(或者,您可以使用glDrawPixels()以防您不需要任何縮放)。之後,你需要有你的模型,完整的照明法線。模型可以是例如。從Blender或3DS Max導出爲ascii格式,這很容易解析。然後你可以繪製模型。在繪製模型之前可以使用glColor3f()更改顏色(確保在繪製模型時不指定不同的顏色)。模型的定位使用矩陣完成。舊的OpenGL有一些方便和易於使用的功能來旋轉和翻譯對象。還有用於縮放對象的功能(改變大小),因此覆蓋非常容易。所有你需要的是找出相對於標記的相機位置(我相信這是在OpenCV中實現的)。

如果您要使用向前兼容的OpenGL,則需要設置頂點緩衝區對象以包含模型數據,並編寫頂點和片段着色器以陰影和顯示模型。這是更多的工作,您可以獲得更大的靈活性。但是,如果您決定需要它們(例如,用於某些特殊效果),您也可以在舊的OpenGL中使用着色器。

學習如何使用場景圖或引擎(食人魔)可能需要一些時間,我不會爲你的任務推薦它。

相關問題