作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 將圖片貼圖到3D model上
時間Thu Jun 25 09:44:24 2009
※ 引述《OOXXOO (一個人生活)》之銘言:
: 簡單的來說就是3D model的重建~
: 我用雷射掃描建出了一個3D的 model(obj檔之類的)
: 但貼圖可能要用相機拍各個角度的照片~
: 然後想辦法把各個角度的照片貼到3D model上~
: 但我不知該如何做~
: 如何把各個角度的照片對應到3D model的3D座標~
: 我知道opengl如何貼圖~
: 但不知照片的2D座標該對應到3D座標的那個點~
: 就像你說的不知道相機位置~
: 有C++ code可下載嗎?我都找不到~
: 我只有找到opengl教我如何把貼圖貼到一個四方體~
: 但我的3D model是很複雜的~有很多頂點很多面~
: 可能要把很多照片分割成很多區塊貼到3D model的各個部位~
: 或是用3dsmax軟體可以手動把貼圖和3D model對應的座標都定義出來嗎?
: 因為用C++好難寫~
嗯 你的問題很大
基本上這種情況不能用 3D 軟體去指定 texture coordinate
因為你的來源是照片
而照片照出來的結果會經過 perspective transform
所以直接拿照片來貼會產生扭曲
一個可行的想法是 structure from motion
首先在這些照片中進行 feature detection & matching
藉由這些 feature 計算出他們所對應的 3D coordinate
然後設法把這些 3D coordinate 對應到雷射掃瞄出來的 3D model 上面 (註1)
這樣基本上就可以算出 3D model 上的某一點會對應到照片上的哪一點
然後把第一步 structure from motion 中算出來的 camera parameter
對照片做一個 inverse transform
應該就可以把 texture 做出來了
註1:我不確定這邊有沒有已知的演算法,強者板友請補充
另外這邊有一篇
Modeling and Rendering Architecture fromPhotographs:
A hybrid geometry- and image-based approach
http://www.cs.berkeley.edu/~malik/papers/debevecTM96.pdf
這篇 paper 則是假設你的 model 由一些基本的幾何形狀所組成
可以參考看看
-
不過不管你用這麼方法
因為這問題很大
所以都不是短時間內可以寫出來的程式
我估計大概數千行到一萬行左右吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
→ MasterChang:以前用過OpenGL寫過類似的東西,程式差不多逼近萬行, 06/25 10:06
→ MasterChang:還不包括GUI的部分,原PO要有心理準備長期抗戰。 06/25 10:07
推 QQ29:littile大 想不到你連圖學都有涉略....真的很佩服... 06/25 11:24
推 OOXXOO:恩恩~感謝~這就是我要的其中之一@@~ 06/25 18:23