來(lái)源:量子位 QbitAI
二維圖片轉(zhuǎn)3D模型的技術(shù)不少,但能用你畫(huà)的草圖實(shí)時(shí)生成骨骼綁定的3D模型見(jiàn)過(guò)嗎?
像這樣,順著已有的圖片描了幾筆,立馬就可得到三維模型。
一共描了五次輪廓就得到了一只完整的3D貓模型,還綁定了骨骼:

看,可以像這樣活動(dòng)骨架關(guān)節(jié),隨時(shí)來(lái)一段鬼畜貓:

對(duì)比現(xiàn)有的很多自動(dòng)生骨架建模方法,這一方法并不是在整個(gè)網(wǎng)格模型構(gòu)建完成后,采用算法處理并提取骨架。
而是基于草圖,實(shí)時(shí)進(jìn)行形狀建模和骨架創(chuàng)建。
并且,實(shí)驗(yàn)也證明這一新方法的學(xué)習(xí)成本更低,不同經(jīng)驗(yàn)的專(zhuān)業(yè)人員都能快速上手。
這項(xiàng)研究來(lái)自浙江大學(xué),相關(guān)論文發(fā)布在Computers & Graphics上,代碼現(xiàn)已開(kāi)源:

從草圖中創(chuàng)建動(dòng)態(tài)骨架
要實(shí)時(shí)地從草圖中創(chuàng)建動(dòng)態(tài)骨架,研究者主要分為三步來(lái)實(shí)現(xiàn):
第一步是提取局部骨架。
首先是從原始草圖中進(jìn)行簡(jiǎn)單的多邊形采集,不過(guò)手繪圖像難免會(huì)因?yàn)槭侄痘虍?huà)技問(wèn)題出現(xiàn)線條的斷裂、不平滑等問(wèn)題:
(也就是計(jì)算機(jī)圖像問(wèn)題中常說(shuō)的噪音)

所以,需要將原始線條均勻地離散小段直線來(lái)平滑這些噪音,再用DP(Douglas-Peucker)算法找到一個(gè)最接近形狀的簡(jiǎn)化多邊形。
對(duì)于得到的簡(jiǎn)化多邊形,通過(guò)連續(xù)向內(nèi)偏移的輪廓線將多邊形劃分為單調(diào)的區(qū)域,提取得到一種直線骨架:

將上面得到的直線骨架中包含的不必要的頂點(diǎn)和邊緣刪掉,并折疊小于特定閾值的短骨架邊緣,將直線骨架進(jìn)行簡(jiǎn)化。
全部變化流程如下:

第二步,連接子骨架。
研究團(tuán)隊(duì)以交互式的成對(duì)方式連接子骨架。
當(dāng)用戶(hù)創(chuàng)建一個(gè)新的子部件或移動(dòng)一個(gè)現(xiàn)有的子部件時(shí),立即檢查當(dāng)前子部件是否與其他子部件相交。
如果相交,就把當(dāng)前子部分的骨架與被交的子部分的骨架連接起來(lái):

這符合用戶(hù)交互式地逐個(gè)創(chuàng)建三維模型的真實(shí)場(chǎng)景:新的子部件被連接到現(xiàn)有的子部件上,同時(shí),新的子骨架被連接到相應(yīng)的子骨架上。
第三步、全局骨架細(xì)化。
在上一步中,當(dāng)兩個(gè)或多個(gè)子骨架連接到父骨架的類(lèi)似位置時(shí),常常會(huì)生成多余的短骨。
因此,這一步中首先要進(jìn)行曲線簡(jiǎn)化、關(guān)節(jié)合并、分支修剪和邊緣折疊。
其次,為了控制模型不同部位的骨架的復(fù)雜性,研究者將3D模型旋轉(zhuǎn)到XY平面,把子形狀和分支從三維空間映射到二維空間。
然后通過(guò)在二維空間運(yùn)行BoundedDP算法,將簡(jiǎn)化后的分支重新映射到其原來(lái)的三維位置。

△BoundedDP算法步驟
最終,一個(gè)最開(kāi)始是手繪草圖的圖像,就變成一個(gè)綁定了骨骼的3D模型了:

算法速度更快,安裝即玩
研究者首先對(duì)比了本文提出的骨骼模型生成算法與已有方法的執(zhí)行時(shí)間,可以看到,其速度優(yōu)于大多數(shù)方法:

研究者還請(qǐng)來(lái)了12位經(jīng)驗(yàn)各異的用戶(hù)來(lái)使用MonsterMash2、RigMesh3,以及本文提出的系統(tǒng)來(lái)創(chuàng)建3D模型。
可以看到,使用本文提出的系統(tǒng)創(chuàng)建得到的模型精度最高,但花費(fèi)時(shí)間卻較少:

在開(kāi)源文件中,研究者提供了一個(gè)exe的可執(zhí)行文件,安裝即玩。
如果要進(jìn)行測(cè)試,要先安裝Qt、 OpenCV、 Boost、 Libigl (Tetgen、 Triangle、 CGAL、 Eigen) ,并根據(jù)庫(kù)的安裝路徑修改相關(guān)文件。
目前的測(cè)試環(huán)境則是這兩種:

話不多說(shuō),去找張狗勾圖片試試能不能搞個(gè)鬼畜狗模型了!
論文:
https://arxiv.org/abs/2110.05805
下載鏈接:
https://github.com/jingma-git/RealSkel
開(kāi)源前哨日常分享熱門(mén)、有趣和實(shí)用的開(kāi)源項(xiàng)目。參與維護(hù) 10萬(wàn)+ Star 的開(kāi)源技術(shù)資源庫(kù),包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。