劉浩君



摘要:三維影像投射技術的英文是3D projection mapping,中文有人翻譯為三維影裝,指運用影像邊緣融合算法,開發一種將預先制作好的或實時生成的靜態或動態影像,通過單臺或多臺投影儀投射在三維靜態或動態物體上的技術。三維影像投射方式分為四類:第一類將動態的影像內容投射在具有一定進深的二維為主的物體上,對物體的形態和邊緣進行影像創意。第二類則是將動態的視頻內容投射在靜態的、規范的三維幾何形體上,所投射的影像多為硬拼接,不需要使用影像邊緣融合技術進行投射。第三類是第一類和第二類的結合,即將事先制作好的、或實時生成的動態視頻內容投射到異形三維立體上。第四類是第三類的發展,使用多臺投影儀運用影像邊緣實時融合技術,在繞軸進行360度自轉的異形三維物體上,進行動態、實時影像內容的投射。本文是第四類投影方式,通過進一步研究虛擬空間和現實空間的關系,完成兩者的同步,虛擬攝像機拍攝到的內容即是投影儀需要顯示的內容,最終實現對物體的完全覆蓋。
關鍵詞:旋轉物體;三維影裝;三維影像投射;投影儀
1.引言
隨著投影技術的發展,虛擬世界和現實世界有了一種很好地同步結合方式——三維影像投射。通過三維影像投射技術。藝術家可以將虛擬世界創造的藝術作品與現實世界的物體進行同步,完成虛擬世界到現實世界的轉換,將虛擬世界的內容通過異面投影技術真實的展現在人們面前。相對于傳統形式,三維影像投射技術更加自由,任何可以反射投影光的物體都可以作為被投影介質,而投影物體的立體性可以很好地增加投影內容的真實感,可以很好地吸引觀眾的目光,同時使用實時渲染三維影像投射系統可以便捷地更換顯示內容,豐富展示的多樣性。不會讓人感覺到枯燥。
本文主要研究一種新的投影融合算法設計技術,設計了一個軟件與硬件結合的系統,最終可以在這樣的系統中,將動態的科學與藝術結合的影像內容,對360度繞軸旋轉的三維異形物體進行預先制作好的或者實時生成的動態影像內容的投射,從而在科學普及、科學與藝術結合的展示領域,形成具有強烈藝術感染力的三維動態影像投影效果和作品。本文對于系統的設計思路與實現方法進行了深入的探討。
2.渲染內容的簡介
2.1模型內容的建立
首先需要明確的是三維掃描后錄入的數據其形式。通過三維掃描儀錄入電腦的是點云,及每一次激光反射的位置和距離,這樣的一系列點集構成了整個模型的點云。通過三維掃描儀自帶的軟件進行補洞操作后,完整模型就完成了,但是補洞的模型只有大致形狀,沒有任何走線,所有面由無數小三角面構成,顯然這些密集的三角面是不能作為虛擬模型加載的。其占用資源過多,需要進行拓撲。
在獲得了已經補完洞的模型后,需要對模型進行拓撲。拓撲的方式完全依靠模型師的經驗和手法,如何體現物體的細節,如何保證拓撲的模型既與原物體基本一致,又要保證盡量少的走線。這些都與模型師的經驗息息相關??偟膩碚f拓撲的最佳結果是保證最少的走線和最佳的模型形狀,盡量貼合三維掃描的模型,滿足上述條件的拓撲模型才是比較好的模型,相對來說技術要求較高。
獲得拓撲模型后需要將其轉換成WW可以識別的模型形式,VVVV主要使用DirectX進行渲染,使用的也是DirectX默認的后綴名為.X的模型文件。默認包含兩部分,包含模型文件以及動畫鍵。MAYA和3DMAX都有其轉換插件,這部分交給插件即可。
最后需要對模型文件進行加載,VVVV中加載模型文件有自己的節點。但是只提供了基本的模型信息,其余的位移、旋轉、變形矩陣等信息需要自行設計,基本設計如圖1所示。
至此,模型模塊從錄入、拓撲、到加載完成了整個的流程,成為了構建虛擬空間的基礎。
2.2實時渲染的設計
擁有模型之后。虛擬世界才算是有建立的基礎,實時渲染的基本要素如圖2所示:
構成本文虛擬空間的基本要素如圖2所示,分別是:
(1)模型:在獲得拓撲模型后,轉換成VVVV可以識別的模型文件,同時要保證文件的UV合理展開,保證模型的大小合適,方便調整。滿足如上要求才算符合要求。
(2)著色器:DirectX擁有自己的渲染器,需要利用其自己的語言來完成對模型渲染的操作,包括燈光、融合拼接等。
(3)攝像機:作為與現實世界同步的虛擬構建,攝像機的參數需要保證與投影儀的參數完全保證一致,焦距,高度,距物體距離,中心位置等等,必須與現實世界同步。
(4)相對位置信息:除基本的位置、角度信息外,物體與物體之間的相對位置也需要保證,其中之后同步階段需要虛擬世界和現實世界保持一致的旋轉參數等。
(5)藝術視頻文件:在UV基礎上根據藝術內容進行加載的圖形視頻文件,對于藝術設計而言,這將是展現整個視覺效果的部分,在之前藝術設計部分已經詳細描述。
其中不得不說的是融合拼接的方式。一般的平面投影的拼接方式較簡單,根據融合公式即可進行較完整的融合拼接。但顯然在不規則曲面上沒有辦法找到一個普適的算法可以讓所有的物體都可以做到很好地融合。每一個投影儀根據其位置和角度不同,所能顯示模型的角度和大小都不可能完全一樣,所以類似平面上通過投影儀畫面做切割進行融合的方式在異面投影上是不可取的。
異型投影的融合通常分兩類。一類是完全的硬拼接。通常立方體等有明顯的面變化,或者形狀簡單,可以對模型形狀和大小可以精確變換的模型可以使用硬拼接。另一類是軟拼接,通過劃分融合帶,對兩個融合帶進行疊加來達到融合拼接的目的。本文的汽車沒有明顯的面與面的劃分,由于點數眾多,也沒有辦法進行精確的形狀調整,只能使用軟拼接的方式完成融合。
根據汽車模型的特點,其形狀類似長方形,故一臺投影最多可以覆蓋其中的三個面,顯然,光路直線的原理表明,投影儀最多只可能覆蓋到三個平面,不可能超過三個。
以汽車作為示例,由于汽車的前面和尾部的面較小,所以并不需要單獨分割出來,連接到汽車頂面即可,故整個分割方案如圖3所示:
紅色和綠色線內為融合帶,通過融合算法進行軟拼接,
設計完融合帶分割方案后,還需要根據物體轉動情況確定融合帶精確位置,具體算法如下:
頂面分割方案相對簡單,首先依據輸入角度來進行位置映射,根據同步模塊反饋的角度信息R,以及當前渲染點坐標信息來判斷渲染點處理方案;整個融合帶由六條直線構成最終形成如圖3所示,根據與各邊相交點。通過斜率公式(1)??梢缘玫街本€的斜率式(2):
我們只需要根據斜率求出相應的系數A、B、C即可獲取直線的標準式,從而通過點到直線標準式(3):
在獲得基本分割信息后,需要結合之前獲取的信息進行落點判定,判定方法為利用點到直線距離d,界定當前渲染點距離分割方案中直線的與點的距離,以此判斷出當前點屬于哪一個區域,不同區域對應不同的處理算法進行數據處理。判定結果分為三種,如圖4所示:
其中1區域為全顯示區域,圖像亮度不做任何變換,2為反向融合帶,3為正向融合帶。判斷點處于哪個區域時首先判斷是否處于兩條紅線范圍內即是否是1或3區域,然后判斷是否處于紅線和綠線之間,完成對點顯示亮度的映射。具體算法描述如下:
算法一頂面融合帶算法
任務:求解每個渲染點亮度變換系數初始化:獲取同步模塊角度信息,獲取分割方案中六條直線對應系數A1..A6,B1..B6,C1..C6。
重復以下步驟直至所有貼圖點都完成渲染:
(1)獲取當前渲染點坐標X,Y,以及當前渲染點顏色COL
(2)通過點到直線公式(3)判斷渲染點坐標與各直線位置。
(3)落點處于圖4中1區域的,當前點顏色COL不進行改變。跳轉到(7)
(4)落點處于圖4中2區域的。當前點顏色COL進行反向融合帶矯正,根據公式(3)所得距離d,判斷出點在融合帶中的相對位置。跳轉到(6)
(5)落點處于圖4中3區域的,當前點顏色COL進行正向融合帶矯正。根據公式(3)所得距離d,判斷出點在融合帶中的相對位置。跳轉到(6)
(6)根據相對位置以及邊緣融合算法求出當前亮度系數,與COL相乘得出當前點新的顏色。
(7)判斷是否是最終渲染點,是則結束,否則跳轉到(1)
輸出:完整的一幀圖像內容算法流程圖如圖5所示:
相對于頂面分割來說,側面分割比較繁瑣,首先要考慮到的是分割帶位置問題,由于光線的直線性,融合帶的最佳位置與貼圖并不是線性關系,如圖6分解所示:
假設圖左為投影覆蓋范圍,那么顯然融合帶位置起始到消失的角度范圍是與物體寬度有關的,首先討論投影角度范圍,由圖6可知,投影角度范圍可由:
其中s為物體寬度,d為投影垂直位置與轉臺中心之間的距離,由此得出投影帶角度范圍為;但顯然,剛到角度時,投影角度并不好,角度旋轉后也不是按照線性關心來確定融合帶位置的,經過反復驗證,使用一個正弦函數來進行數據建模比較符合實際規律,即融合帶位置與角度關系公式如下:
其中為當前轉臺角度,P為融合帶在貼圖上的位置,通過公式(5)即可獲得一個由角度到位置的關系函數,從而確定融合帶具體位置。具體算法如下:
算法二側面融合帶算法
任務:求解每個渲染點亮度變換系數
初始化:獲取同步模塊角度信息。獲取由公式(4)所得角度范圍。重復以下步驟直至所有貼圖點都完成渲染:
(1)獲取當前渲染點坐標X,Y,以及當前渲染點顏色COL。
(2)通過點到直線公式(3)判斷渲染點坐標與各直線位置。
(3)落點處于圖4中1區域的,當前點顏色COL不進行改變。跳轉到(7)
(4)落點處于圖4中2區域的。當前點顏色COL進行反向融合帶矯正,根據公式(3)所得距離d,判斷出點在融合帶中的相對位置。跳轉到(6)
(5)落點處于圖4中3區域的。當前點顏色COL進行正向融合帶矯正。根據公式(3)所得距離d,判斷出點在融合帶中的相對位置。跳轉到(6)
(6)根據相對位置以及邊緣融合算法求出當前亮度系數,與COL相乘得出當前點新的顏色。
(7)判斷是否是最終渲染點,是則結束,否則跳轉到(1)
輸出:完整的一幀圖像內容
算法流程圖如圖7所示:
完成著色器后,需要對模型的位置,攝影機的位置等相對位置進行確定,之前已經提到。
至此虛擬世界部分設計基本完成,從模型的構建到渲染再到同步接口的設計,完成了虛擬世界的構建。
3.渲染結果
通過實時渲染軟件對三個部分進行實施渲染,后通過三臺投影儀分別對分割部分的圖像進行輸出,最終完成現實世界和虛擬世界的匹配,對三個投影圖像進行軟拼接,形成完整的360度覆蓋投影,如圖8所示:
經測試,融合帶基本完全覆蓋,頂部有少許偏差,數以正常范圍允許之內。算法分割成功,解決了運動物體全覆蓋投影的難題。
4.結束語
通過對輸出圖像進行精確的分割,并結合融合帶,最終完成了三臺投影分別輸出不同圖像,覆蓋整個物體的方案,以此類推??梢酝瓿扇魏涡螤詈痛笮〉奈矬w投影覆蓋方案,只要物體處于投影儀投影范圍以內,都可以通過對物體進行分割渲染的方式,完成物體圖像的拼接。最終形成完全的圖像覆蓋方案,做到對旋轉物體的三維影像全投射。