目錄
視訊投影分享
前置知識
物體與紋理
物體組成
紋理映射
3D 轉換
1. 存在一個物體
2. 存在一個相機,用于觀察物體
3. 根據相機參數的不同,得到不同的結構
4. 最終得到規範立方體(canonical view volume)
5. 由最終三維場景到二維圖像
視訊投影分析
1. 建立與現實一緻的虛拟世界
2. 擷取視訊紋理,分析投影過程
3. 關鍵代碼解析

GPU 将圖像渲染到螢幕上
視訊投影:将視訊作為圖檔式貼在模型上
視訊投影兩個關鍵元素,模型與視訊材質
在虛拟世界中,所有物體由三角面構成(也有用四角形的,主流是三角形)
一般模型都是一張皮,内部是空心的
簡單模型
将一張圖檔貼在模型上,模型就是一張皮,可以看成是地球儀表面平鋪為世界地圖,模型上每一個頂點對應紋理上的一個位置,頂點間用插值計算紋理顔色,紋理坐标使用的是百分比
将紋理圖檔(2k像素)貼在一個平面上
将紋理坐标和頂點坐标一一對應,剩下部分利用插值計算
随着取樣點變少,圖像失真程度越高,當取樣點變成像素時,便可以将紋理圖像完全貼在物體表面(自動過程),程式需要做的,将紋理圖像的關鍵點坐标與物體點坐标對應上
在三維世界中,物體就是由自己所有的頂點以及每個頂點表示的顔色組成,顔色可以是自定義,也可以從圖檔材質中擷取
我們能看到一個三維物體,我們需要四種元素,第一:眼睛;第二:大腦,對眼睛接受的資料進行處理;第三:三維世界,我們身處于三維世界中,比如地球,那我們就能描述我們的位置;第四:物體,否則看到就是透明空氣了。
重新定義這四個概念,眼睛---相機,大腦---渲染器,三維世界---場景,物體---物體
看到場景物體的流程
物體本身具有頂點坐标(原始坐标資料:position),以及自己的移動(模型矩陣:modelMatrix)
茶壺模組化完成後會有自己的頂點資料,以及每個頂點對應的顔色,茶壺可以自己進行旋轉、移動和縮放,這三類操作會産生模型矩陣,用于計算。将茶壺自己元素坐标資訊與模型矩陣加入到程式中,就相當于将茶壺經過轉換,重置了茶壺上的每個頂點位置。
相機位置、相機朝向和相機向上方向用來唯一确定相機具體方位,由這三個資訊可組成視圖矩陣(viewMatrix)
将視圖矩陣加入程式中,就相當于鎖定人眼了。
比如:一個眼睛大,看得遠,一個眼睛小,看得近,一個近視眼,一個遠視眼。相機屬性構成了投影矩陣 (projectionMatrix)
将投影矩陣加入到程式中,得到的就是從一個具體的人眼看到的三維世界
在立方體内的物體就是我們看到的物體,立方體外的都可以剔除掉,那些都是視野外的。于此同時,由于視圖矩陣和模型矩陣的加入,相機位于原點,看向 z 負軸。(規範立方體 (-1,-1,-1)到(1,1,1))
總結剛剛的過程,最終得到的物體坐标為
規範立方體得到了,z 坐标 從 1 到 -1 ,z 坐标代表這個物體深度。好似從前往後發射射線,碰到的第一個點就将其顔色指派在平面上,最終形成二維圖檔
關鍵:将視訊紋理與模型上對應的頂點一一對應起來
模型比例與現實保持一緻;投影的相機所處位置,參數,朝向,向上方向保持一緻
目前整個場景有兩個相機,一個是主相機,就是上帝視角的這個相機;另一個是用作投影的相機,這裡就叫投影相機。
首先,先擷取到視訊作為紋理對象,可以直接将視訊看作一張圖檔,這裡叫投影圖,投影圖就是投影相機拍出來的,是以,投影相機看到的二維圖像就是投影圖
現在我們可以得到三個圖
上帝視角圖
投影相機視角圖
視訊中的投影圖
其中,投影相機視角圖 = 視訊投影圖 (等式 1),2 = 3
是以,現在我們求出投影相機與模型産生的交點,并且根據 “等式1” 找到這個點的顔色,并将顔色指派上去,最終便得到視訊投影效果
投影相機看到的視角圖
真實世界錄影機的視角圖
一一對應上,最終完成
頂點處理
顔色處理
希望讀者在看完後能提出意見, 點個贊, 鼓勵一下, 我們一起進步. 加油 !!