2010-04-13 72 views
1

我想通過DirectShow提供一個虛擬攝像頭,它將使用來自現有攝像頭的視頻饋送,運行一些跟蹤軟件來查找用戶臉部,然後覆蓋3d模型其目的只是爲了改變用戶的面貌。我正在使用第三方api來進行臉部跟蹤,這很好。我從該api獲取位置和旋轉數據。如何將3d模型渲染爲directshow虛擬相機輸出

我的問題是最好的方式來呈現3D模型,並進入視頻飼料,並直接顯示?

我在windows xp上使用C++。

回答

2

您可以使用VMR濾鏡 - 具有多個輸入引腳的視頻渲染器來疊加圖形。 VMR-9濾波器基於Direct3D,因此您可以爲您的模型使用Direct3D渲染,並將輸出饋送到VMR的輔助引腳,以便與攝像機輸出疊加或進行alpha混合,然後饋送到主引腳VMR。

+0

如何從Direct3D輸出到輔助引腳? – 2010-04-13 18:54:27

+0

您需要一個連接到VMR的過濾器。當你得到一個IMediaSample緩衝區來填充時,查詢IVMRSurface9接口。這將使您能夠訪問底層D3D表面,您可以在將IMediaSample對象交付給渲染器之前使用它。 – 2010-04-16 09:13:10

0

如果您使用的是DirectShow,那麼使用DirectX進行渲染似乎是合理的。

+0

我可以使用DirectX渲染到directshow虛擬攝像頭源,而不是直接渲染到顯示器上嗎? – 2010-04-13 16:40:30