朱惠娟,管 悅
1(南京理工大學(xué)紫金學(xué)院 計算機學(xué)院,南京 210023)
2(南京郵電大學(xué) 傳媒與藝術(shù)學(xué)院,南京 210023)
藝用人體解剖學(xué)是根據(jù)藝術(shù)探究的需要,以人的骨骼和肌肉作為研究對象,研究人體內(nèi)部結(jié)構(gòu)、外部形象以及人體動作和姿態(tài)等基本規(guī)律的一門學(xué)科.藝用人體解剖和醫(yī)用人體解剖不一樣,其目的是在藝術(shù)創(chuàng)作中更準(zhǔn)確地表達(dá)人體的外形.據(jù)不完全統(tǒng)計,為了更好地讓學(xué)生掌握人體結(jié)構(gòu)繪畫和動畫制作的方法,很多高校的動畫專業(yè)或者美術(shù)專業(yè)都需要學(xué)習(xí)藝用人體解剖的知識[1].
藝用人體解剖已經(jīng)作為必修內(nèi)容,但是教學(xué)方法上一直存在缺陷.很多教師還是以灌輸?shù)姆绞皆谑谡n,作為一門理論課程,學(xué)生需要反復(fù)記憶一些骨骼和肌肉的名稱和作用,效率低,很難引起學(xué)生的興趣,也無法學(xué)以致用,經(jīng)調(diào)查發(fā)現(xiàn)[2],傳統(tǒng)的學(xué)習(xí)中主要存在以下幾個問題:
(1)在學(xué)習(xí)初期,學(xué)生大多只知道人物的大致畫法,但對人物比例,骨骼肌肉狀態(tài)的掌握相對比較稚嫩,繪畫時經(jīng)常容易造成一些錯誤,同時老師在授課時傳統(tǒng)的圖片展示,以及視頻講解往往不能更加直觀有效的讓學(xué)生去理解.
(2)在學(xué)習(xí)過程中,學(xué)生雖然掌握了解了基礎(chǔ)的骨骼和肌肉的知識,但是通常人物姿態(tài)發(fā)生變化后,學(xué)生不能夠清楚正確意識到人物骨骼肌肉變化規(guī)律,在繪畫時通常會造成錯誤.
(3)在課下自由練習(xí)時,學(xué)生無法花巨額的資金去聘請模特,對模特相片繪畫,只能選擇相片拍攝者給出的角度,往往不具備美感.
為了解決上述問題,學(xué)者們都從提高藝用人體解剖的實踐性方面開展研究[3].隨著虛擬仿真技術(shù)的發(fā)展,仿真模擬系統(tǒng)已廣泛應(yīng)用在各行業(yè)[4].本文引入虛擬現(xiàn)實技術(shù)(Virtual Reality,VR),開發(fā)基于Forge 平臺的藝用人體結(jié)構(gòu)仿真系統(tǒng).系統(tǒng)按照人體結(jié)構(gòu)進行模型構(gòu)建及可視化過程,完全遵照動畫運動規(guī)律,模擬骨骼肌肉的運動仿真.通過“漫畫人物姿態(tài)仿真”模塊,實現(xiàn)學(xué)習(xí)者對漫畫人物動作姿態(tài)的深刻認(rèn)知,提高繪畫技巧.學(xué)習(xí)者通過該平臺可以全方位、多角度的自由瀏覽和認(rèn)識人體骨骼系統(tǒng)和肌肉系統(tǒng),仔細(xì)觀察特定部位的運動仿真,充分表現(xiàn)了虛擬現(xiàn)實的沉浸感和交互性.
藝用人體結(jié)解剖繪畫仿真系統(tǒng)的設(shè)計要求能模擬人體結(jié)構(gòu)以及人體骨骼與肌肉的運動過程,同時考慮到使用該系統(tǒng)的用戶主要是美術(shù)專業(yè)、繪畫專業(yè)、動漫專業(yè)的學(xué)生,他們雖然從理論課的學(xué)習(xí)中大致了解了人體結(jié)構(gòu),但是將理論運用在繪畫和動畫制作上尚有一段距離,所以系統(tǒng)的設(shè)計旨在為用戶提供一個虛擬的人體結(jié)構(gòu)仿真平臺,通過對人體結(jié)構(gòu)的模擬,實現(xiàn)骨骼和肌肉系統(tǒng)動畫.同時為了讓用戶了解在繪畫時不同的位姿對應(yīng)的骨骼和肌肉變化,把握繪畫的技巧,加入了漫畫人物姿態(tài)仿真功能,實現(xiàn)漫畫人物的姿態(tài)仿真.
系統(tǒng)框架如圖1,通過對人體結(jié)構(gòu)的了解,人體結(jié)構(gòu)從類型上分為男性和女性兩類;從認(rèn)識的結(jié)構(gòu)層次分為骨骼、肌肉、外部形態(tài),從認(rèn)識部位分為頭、軀干、四肢.針對這些實際需求,系統(tǒng)的設(shè)計方案為分類型選擇、分層次學(xué)習(xí).分類型選擇主要是進行平臺后選擇男性或者女性的人體結(jié)構(gòu);分層次學(xué)習(xí)可分為骨骼的認(rèn)識、肌肉的認(rèn)識、骨連接處的肌肉運動演示、繪畫中的關(guān)鍵動作對應(yīng)的人體結(jié)構(gòu)狀態(tài)等.學(xué)習(xí)者可以通過單擊可交互結(jié)構(gòu)來實現(xiàn)人體各部位的信息,對人體結(jié)構(gòu)的某一部位進行任意的操作或者從漫畫人物動作庫中任意選擇一個動作進行觀察,實現(xiàn)對人體結(jié)構(gòu)更深入地了解,從而達(dá)到指導(dǎo)繪畫的目的.
根據(jù)系統(tǒng)的需求分析,藝用人體解剖繪畫仿真系統(tǒng)包含人體結(jié)構(gòu)仿真和漫畫人物姿態(tài)仿真.人體結(jié)構(gòu)仿真下用戶可以觀察骨骼、肌肉系統(tǒng)以及對應(yīng)的關(guān)節(jié)動畫;漫畫人物姿態(tài)仿真下,用戶可以用漫畫人物動作庫中任意選擇一個動畫,觀察其對應(yīng)的骨骼和肌肉特征.
1.2.1 人體結(jié)構(gòu)仿真
人體建模一直是計算機圖形學(xué)的研究熱點之一.目前人體建模技術(shù)主要包括三維掃描數(shù)字建模、參數(shù)化建模、三維軟件建模等.雖然三維軟件建模成本相對較大,但是幾種人體建模方法中最精確美觀的,考慮到本系統(tǒng)的使用人群,本系統(tǒng)選用三維軟件建模方式[5],分為骨骼、肌肉、外部形態(tài),選用基于物理的角色運動方法實現(xiàn)運動仿真[6,7].進入仿真平臺后,用戶可以通過菜單選擇學(xué)習(xí)男性人體結(jié)構(gòu)或是女性人體結(jié)構(gòu).通過UI 界面選擇學(xué)習(xí)人體的哪個部位,包括頭部、軀干、四肢,進而選擇學(xué)習(xí)骨骼系統(tǒng)或者肌肉系統(tǒng).用戶每選擇一個對象,都會顯示該對象的基本信息,用戶也可以對該對象進行隱藏、顯示、旋轉(zhuǎn)、縮放、測量、觀看運動動畫等操作.
1.2.2 漫畫人物姿態(tài)仿真
動漫專業(yè)、美術(shù)專業(yè)等都要求學(xué)生掌握漫畫人物的繪畫技巧,而漫畫人物雖形象上與普通人有所不同,但她的動作即便夸張化也應(yīng)當(dāng)符合人體的動畫運動規(guī)律.在漫畫人物姿態(tài)仿真模塊,用戶可以從平臺的漫畫庫中任意選擇漫畫人物的一個動作,查看其對應(yīng)的骨骼和肌肉狀態(tài),體會繪畫時的細(xì)節(jié);可以通過調(diào)整骨骼或肌肉,觀察漫畫人物動作的同步變化,從而更深刻掌握繪畫技巧.
人體結(jié)構(gòu)模型使用幾何建模法在3DsMax 平臺和Zbrush 平臺下按照人體結(jié)構(gòu)比例、采用塊面加線的模式完成人物模型的構(gòu)件和可視化過程.為了準(zhǔn)確表現(xiàn)人體結(jié)構(gòu),首先通過PhotoShop 為繪制人體骨骼、肌肉分布線稿三視圖,并導(dǎo)入MAX 中作為參考.從骨骼開始構(gòu)建人物模型框架,先利用MaxScript 生成對應(yīng)尺寸的初始模型,核心代碼如下:
Cylinder()
$.name=初始名稱
$.height=初始長度(cm)
$.radius=初始半徑(cm)
$.heightsegs=初始的長度/2 (每2 厘米分為一段)
$.position=初始的三維坐標(biāo)
關(guān)鍵步驟如下:
第1 步.將初始模型轉(zhuǎn)換為構(gòu)成算法更加優(yōu)秀的可編輯多邊形,通過修改器中的FFD(自由變形)、擠出、渦輪平滑、球面化等生成骨骼的初步模型.
第2 步.利用Zbrush 平臺,對MAX 中的制作模型進行二次模型雕刻,可以得到更加細(xì)膩的模型.
第3 步.通過Substance Painter 為模型繪制基礎(chǔ)貼圖、高度貼圖、法線貼圖、AO 貼圖,使模型大大提高真實度[8].
在做肌肉模型時,要考慮肌肉與肌腱、腱膜的關(guān)系,以及肌肉的起始點和終止點.這樣制作出來的肌肉才會符合真實人體肌肉[9].
為了在繪畫和動畫制作過程中,使人物顯得更自然、合理,就需要研究時間、空間、張數(shù)、速度的概念以及彼此之間的關(guān)系,也就是處理好動畫和漫畫人物動作的節(jié)奏規(guī)律.動畫運動規(guī)律大致分為人類、動物和自然現(xiàn)象3 個方面.本系統(tǒng)表現(xiàn)的是人體運動仿真,因此首先要研究和掌握人物動作的一些基本規(guī)律,比如走路時,左右腳交替向前,帶動驅(qū)趕朝前運動;奔跑時,身體重心向前傾,兩手自然握拳,手臂略成彎曲狀等[10].
我國在人體運動仿真上也取得了一些研究成果,以醫(yī)學(xué)和體育方向的偏多.文獻[11]提到Minetti 等通過計算機仿真,研究了古希臘運動員為提高奧林匹克跳遠(yuǎn)比賽成績而提重物訓(xùn)練的現(xiàn)象等.本系統(tǒng)中人體運動仿真構(gòu)建的主要方法是先以3DMax 骨骼動畫結(jié)合OptiTrack 三維動作捕捉設(shè)備捕捉到的自然人真實的物理運動過程等數(shù)據(jù)作為基礎(chǔ),運用計算機模擬人體運動過程,并將運動過程賦予計算機建立的虛擬人體模型.
2.2.1 骨骼動畫
骨骼動畫是當(dāng)前模型兩種動畫方式之一,是由互相連接的“骨骼”組成骨架結(jié)構(gòu),通過改變骨骼的朝向和位置來生成動畫.骨骼動畫通常包括骨骼層次結(jié)構(gòu)數(shù)據(jù)、網(wǎng)格數(shù)據(jù)、網(wǎng)格蒙皮數(shù)據(jù)和骨骼動畫關(guān)鍵幀數(shù)據(jù)[12].
骨骼層次結(jié)構(gòu)數(shù)據(jù)決定了模型整體在世界坐標(biāo)系中的位置和朝向,首先要設(shè)置根骨骼,然后根據(jù)骨骼之間的變化關(guān)系計算出各個骨骼的位置和朝向.網(wǎng)格數(shù)據(jù)就是一層皮膚,如果沒有骨骼,網(wǎng)格就和靜態(tài)模型一樣.網(wǎng)格蒙皮數(shù)據(jù)是綁定到骨骼上的頂點數(shù)據(jù),包括頂點受哪些骨骼的影響以及影響的權(quán)重.骨骼動畫數(shù)據(jù)是骨骼的運動數(shù)據(jù),本文使用式(1)的線性插值來產(chǎn)生權(quán)重對動畫的影響效果.
其中,p′表示頂點p點形變后的坐標(biāo),i表示骨骼數(shù)量,pi′表 示各骨骼分別形變后得到的頂點位置,wi表示權(quán)重.通過骨骼的運動帶動蒙皮的運動.由于頂點是綁定骨骼的,因此,當(dāng)骨骼運動時,頂點相對于骨骼并沒有變化,需要通過蒙皮矩陣把頂點轉(zhuǎn)換到世界坐標(biāo)系的坐標(biāo),就可以對頂點進行渲染.
以右手手指運動為例,骨骼層次模型(腕掌關(guān)節(jié)-掌骨間關(guān)節(jié)-掌指關(guān)節(jié)-指間關(guān)節(jié)),通過根骨骼的位置變化改變骨骼的朝向.一個頂點可能有多個骨骼,設(shè)置骨骼的權(quán)值,獲得最合適的骨骼運動效果.
2.2.2 動作捕捉
動作捕捉[13,14]OptiTrack 是一款主動式紅外光學(xué)定位系統(tǒng),它利用多個紅外發(fā)射攝像頭、對室內(nèi)定位空間進行覆蓋,再被追蹤物體上放置紅外反光點,通過捕捉這些反光點反射回攝像機的圖像,確定對象在空間的位置信息.整體流程可見圖2.
圖2 動作捕捉流程
本項目采用了8 個130 萬像素分辨率的Flex13 攝像頭,攝像頭越多,捕捉的動作越精確,但是成本也越高.首先通過攝像頭捕捉3 個光點的移動來計算三維空間的區(qū)域;然后用L 型標(biāo)定直角對地面進行校準(zhǔn);攝像機對空間進行紅外線覆蓋并拍攝,提出畫面中的Mark 點;最后將采集到的動作數(shù)據(jù)與三維人物綁定即可實現(xiàn)動作捕捉動畫.
(1)系統(tǒng)配置
把8 臺攝像放置好并對準(zhǔn)方向后,演員可以任意姿態(tài)站在中間,使用T 型標(biāo)定桿掃描場景,劃定運動空間.用L 型標(biāo)定直角捕獲3 個Mark 點進行地面校準(zhǔn),圖3是從相機視圖中獲取的8 臺相機的二維數(shù)據(jù),圖4是在透視圖中獲取的三維數(shù)據(jù).一旦標(biāo)定完成,不能隨便移動攝像頭的位置,否則會在后續(xù)的捕捉動畫中出現(xiàn)數(shù)據(jù)溢出.
圖3 攝像機視圖
圖4 透視圖
(2)Mark 點捕獲
選擇標(biāo)記定的綁定模式,以Baseline 為例,該模式下綁定標(biāo)記點37 個,測試人員需要完全按照示意圖綁定標(biāo)記點,一旦綁定錯誤,就會影響相機拍攝到的運動軌跡,從而使動畫數(shù)據(jù)出錯.
圖5 標(biāo)記點綁定
(3)校準(zhǔn)Mark 點
如圖6所示,在動作幀面板,紅色代表X 軸,綠色代表Y 軸,藍(lán)色代表Z 軸,從圖中看出動畫有斷裂處,表示動作數(shù)據(jù)出現(xiàn)錯誤,這是由于在標(biāo)定不準(zhǔn)確造成,可通過重新標(biāo)定或手動修補動畫的方式調(diào)整動作.如若不調(diào)整,將對后期動作綁定骨骼有很大的影響.
圖6 動作幀面板
(4)與內(nèi)置Actor 進行數(shù)據(jù)傳輸
通過Motive 軟件獲取動作數(shù)據(jù)后,將動作數(shù)據(jù)導(dǎo)入motion bulider 中,進行骨骼綁定,如圖7所示.
圖7 數(shù)據(jù)傳輸
(5)綁定三維模型
當(dāng)運動數(shù)據(jù)和骨骼綁定后,可以采用逆向動力學(xué)或者正向動力學(xué)來調(diào)整人體的運動,逆向動力學(xué)是一種子節(jié)點驅(qū)動父節(jié)點運動的動畫制作方法,而正向動力學(xué)是父節(jié)點驅(qū)動子節(jié)點的運動,兩者共同點是讓關(guān)節(jié)運動更加連貫,表現(xiàn)更加真實.綁定示意圖見圖8.
本項目的人機交互部分采用了Autodesk Forge API 服務(wù),由于該平臺的數(shù)據(jù)中心是基于AWS 的海外搭建,國內(nèi)部分地區(qū)訪問Forge 云端口的速度會受到影響.特別是Forge Viewer 瀏覽大型模型,以及對反饋時間比較銘感且涉及關(guān)鍵業(yè)務(wù)的工作流等諸多場景時,對服務(wù)端的存取效率有著較高要求.因此,項目中采用離線加載、云端緩存的方案,實現(xiàn)了流程與性能的優(yōu)化.
關(guān)于離線模型加載,可以使用新近瀏覽器原生的Service-Worker 和Cache API 緩存模型的方案,通過靜態(tài)路徑解決Viewer 庫和線上模型資源本身的緩存問題.但是該實現(xiàn)也存在幾點問題:待緩存的靜態(tài)鏈接是根據(jù)展示用的模型所需配置的,模型更換后靜態(tài)鏈接也需要手動更新,一次性緩存了所有實例模型所需的資源,超配且不必要,影響加載性能,Viewer 庫版本一旦更新,需手動更新緩存的靜態(tài)資源鏈接.因此,文獻[15]提出采用先注冊完成緩存任務(wù)的Service Worker再加載Viewer 庫的流程.這樣,Viewer 庫依賴與模型資源的加載請求也會自動得到緩存,無需手動干預(yù)緩存過程,大幅增進代碼的可維護性.
圖8 運動綁定
藝用人體解剖繪畫仿真系統(tǒng)提供了360 度旋轉(zhuǎn)模型、測量模型角度、長度等功能,通過group.addControl()和group.removeControl()新增或移除不需要的功能,使用Three.js 根據(jù)二維鼠標(biāo)坐標(biāo)與旋轉(zhuǎn)角度,計算出當(dāng)前點擊在三維世界的位置并生成彈窗,根據(jù)旋轉(zhuǎn)角度對彈窗大小進行修改,調(diào)用骨骼動畫.本文使用的旋轉(zhuǎn)角度修改彈窗大小的式(2)如下:
其中,Scale表示縮放,α 表示系數(shù),Ratationnow表示當(dāng)前角度,Ratationinit表示初始角度.標(biāo)簽彈窗在初始時Ratation最大,在角度改變時,根據(jù)公式計算縮放比例,從而改變標(biāo)簽彈窗大小,實現(xiàn)三維視角下近大遠(yuǎn)小的視覺效果.
漫畫人物的繪畫創(chuàng)作是美術(shù)專業(yè)學(xué)生的基礎(chǔ)技能之一,要求學(xué)生能從人物內(nèi)部結(jié)構(gòu)出發(fā),描繪出以骨骼為支撐、以肌肉作為填充的飽滿、生動的人物形象.傳統(tǒng)教學(xué)中學(xué)生只能從解剖圖譜、雕塑人體、局部放大的照片或教學(xué)道具中觀察骨骼與肌肉,但是這種理解缺乏交互性.漫畫人物的姿態(tài)仿真可以根據(jù)漫畫人物的動作姿態(tài)在三維模型上呈現(xiàn)對應(yīng)的骨骼和肌肉,學(xué)生通過增減骨骼和肌肉來觀察對應(yīng)的漫畫人物姿態(tài).
在漫畫人物姿態(tài)這部分,漫畫模塊通過與Forge云三維模型模塊的雙向通信來完成實時交互.漫畫模塊可以將自身索引傳給Forge 云模塊,且Forge 云模塊可以傳數(shù)據(jù)給漫畫人物模塊.系統(tǒng)中采用的是連接漫畫人物姿態(tài)的索引與Forge 云3d 模型ID 之間的關(guān)系,使漫畫人物姿態(tài)的索引能映射到模型ID 上,即存在α使式(3)成立:
Im為 模型model 的索引,Ic為漫畫索引.由于模型model 的索引數(shù)量遠(yuǎn)大于漫畫人物姿態(tài)索引的數(shù)量,所以 αIc為Im的子集.
同時Forge 云的索引需要連接三維動畫的部分,比如,如果人物漫畫為躺著的人,那么相應(yīng)的骨骼三維動畫將播放躺著的內(nèi)容.即存在式(4):
連接上述公式得式(5):
由此得到三維動畫索引與漫畫索引的關(guān)系.
在漫畫模塊與Forge 云模塊通信的過程中,按照式(5)做索引轉(zhuǎn)換,以此實現(xiàn)漫畫與Forge 云交互高亮,動畫切換.當(dāng)點擊Forge 云的部分骨骼,將該索引映射到漫畫界面,在漫畫界面將映射后的部分做出顏色修改,以此實現(xiàn)選中骨骼與漫畫高亮,同時當(dāng)點擊漫畫部分肢體時,實現(xiàn)反向傳輸?shù)紽orge 云上,修改相應(yīng)的骨骼狀態(tài)與三維動畫狀態(tài).
為了驗證該系統(tǒng)是否滿足美術(shù)類課程的要求,筆者邀請了動畫專業(yè)的200 名學(xué)生以及5 位教師對該系統(tǒng)各個模塊進行了測試,包括系統(tǒng)的功能測試和性能測試,功能測試.主要包括:1)系統(tǒng)的人機交互是否有好;2)人體結(jié)構(gòu)仿真模型是否具有科學(xué)性;3)人體運動仿真是否符合動畫運動規(guī)律;4)漫畫人物姿態(tài)仿真是否合理.測試結(jié)果如表1所示.
表1 功能測試結(jié)果(%)
測試結(jié)果表明,該系統(tǒng)具有較高的科學(xué)性和仿真度,骨骼肌肉動畫符合人體動畫運動規(guī)律,漫畫人物的姿態(tài)與是三維仿真模型能做到高精度的匹配.
除功能測試外,性能測試主要目的是在大用戶量、數(shù)據(jù)量的超負(fù)荷下,獲得服務(wù)器運行時的相關(guān)數(shù)據(jù),如初步確定系統(tǒng)的最大在線用戶數(shù)、系統(tǒng)在合理壓力下穩(wěn)定性運行情況等,從而進行分析,查看該網(wǎng)站系統(tǒng)是否能符合需求.網(wǎng)絡(luò)測試環(huán)境為CPU2 核、內(nèi)存4 GB,帶寬20 MB,測試結(jié)果如表2所示.
測試結(jié)果表明,并發(fā)人數(shù)對本系統(tǒng)的三維場景加載速度影響較大,對網(wǎng)頁響應(yīng)時間影響較小.但由于三維仿真系統(tǒng)的運行流暢程度與客戶機的配置關(guān)系很大,包括CPU 和內(nèi)存的性能等.為此,筆者也選擇的4 種不同配置類型的機器進行測試,測試結(jié)果如表3所示.
表3 用戶機測試結(jié)果
測試結(jié)果表明,用戶機的配置CPU 在雙核及以上,內(nèi)存在4 GB 及以上,系統(tǒng)運行的流暢度較高.
本系統(tǒng)基于Forge 云開發(fā)了一個藝用人體解剖繪畫仿真系統(tǒng),為美術(shù)類和動漫類學(xué)生提供了一個較為具象的仿真人體結(jié)構(gòu),提供了豐富的人機交互功能,從而加深學(xué)生對人體骨骼以及肌肉系統(tǒng)的認(rèn)知,更加準(zhǔn)確地構(gòu)造漫畫人物造型和位姿.系統(tǒng)采用3Ds MAX 軟件構(gòu)建人體模型,在遵照人物運動規(guī)律的前提下,通過動作捕捉設(shè)備以及骨骼動畫完成人體骨骼與肌肉的運動仿真,采用Forge 云平臺和Three.Js 實現(xiàn)人機交互,為用戶提供了旋轉(zhuǎn)、測量、360 度觀察人體仿真模型的功能.基于繪畫的實踐需求,設(shè)計了漫畫人物姿態(tài)仿真功能,實現(xiàn)了漫畫人物關(guān)鍵動作的三維仿真模擬,允許用戶任意刪減骨骼或模型,實時觀察修改后的漫畫姿態(tài),便于用戶從實踐角度把握繪畫的技巧.通過志愿者對系統(tǒng)的測試證明,該系統(tǒng)的仿真度和易用性較高,打破了現(xiàn)實條件以及空間的限制,為數(shù)字化學(xué)習(xí)和移動學(xué)習(xí)提供了環(huán)境,有助于學(xué)習(xí)者深入理解人體解剖結(jié)構(gòu)的只是并正確掌握漫畫人物的造型方法.