浙大開(kāi)源:5 筆涂出一只 3D 貓咪模型,可跑可跳無(wú)需手動(dòng)綁定骨骼

來(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 等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容