999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

三維動畫模型的表面分布與應(yīng)用

2021-01-22 12:27:22
科技創(chuàng)新與應(yīng)用 2021年6期
關(guān)鍵詞:效果模型

李 擘

引言

我們在制作三維動畫的過程中,經(jīng)常會用到軟件提供的一些功能,比如毛發(fā)系統(tǒng),粒子的表面發(fā)射。在開發(fā)游戲制作室外場景的時候,經(jīng)常會在地面上制作植被,樹、花草等覆蓋地面,還有常見的地板鋪裝等。夏天飲料瓶上凝結(jié)的水珠,糖葫蘆與漢堡上的芝麻等,這些可否不用模型一個個復(fù)制而用程序來實現(xiàn)呢?通過制作、分析這些效果不難看出這些效果的制作與模型表面網(wǎng)格相關(guān),對于藝術(shù)生來說,基本思路是用程序?qū)⒁粋€模型復(fù)制分布到另一個模型的表面上。

1 規(guī)矩分布

我先來看地板鋪裝,來研究表面分布基本的算法。先準備幾個測試用的簡單模型,一個平面的四邊形模型作為地面,作為最大鋪裝外尺寸的限定,但是要注意最好是長寬都比地板模型大;一個地板模型,給出具體的長、寬、高三個尺寸,也可以把這個參數(shù)化、虛擬為代理模型,之后再替換。通常我們生活中鋪的地板大都是木頭條形板材,橫向錯半個長度來鋪裝的。按照這個模式我們寫一個簡單的循環(huán)來實現(xiàn)。

根據(jù)地面模型來計算鋪裝的最大范圍,橫向X,豎向Z,獲得四個點的順序和位置,得到起始點Pos0《x0,y0,z0》,再與其它點計算,豎向Z長度Depth Max和橫向X寬度Width Max;指定一個地板的三維參數(shù),Width寬12cm、Height高1.5cm、Depth長92cm;指定一個偏移值Offset這里為0-1的小數(shù),也可以采用百分比或別的形式。這里我們可以用Width Max/Width算出橫向X上能擺放的最大數(shù)量NumX0,和用Depth Max/Depth算出豎向Z上能擺放的最大數(shù)量NumZ0,也就是鋪裝的總個數(shù),循環(huán)的個數(shù),但是這個數(shù)往往是小數(shù),所以需要使用NumZ1=ceil(NumZ0)和NumZ2=trunc(NumZ0)來取比它本身大和小的兩個整數(shù)。

基礎(chǔ)算法,橫向重復(fù)的數(shù)列0,1,2,3,4,5...我們通過其中每一個i分別與2計算求余數(shù)來獲得新的數(shù)列0,1,0,1,0,1...這樣我們就可以根據(jù)這個奇偶信息,將地板在橫向X排列的時候,每隔一個在豎向Z錯位一個偏移值Offset。當i%2==1的時候錯位,當i%2==0的時候不錯位。編寫腳本實現(xiàn)第一步錯位鋪裝(圖1)。

圖1

那么問題來了,多出的部分怎么裁掉呢,可以直接設(shè)置模型長度、模型縮放變換信息、調(diào)整模型一端的所有點的位置來解決,我們使用縮放、移動變換信息來處理模型。豎向Z超出已知地面最大范圍的地板只出現(xiàn)在上上兩端,也就是鋪裝開始和結(jié)束的地方。

在處理的時候,我選擇從左向右,從上到上的順序。當i%2==0的時候(左邊第一數(shù)列)判斷,當j==0的時候不偏移,不裁剪,當j==1的時候不偏移,裁剪;當i%2==1的時候(左邊第二數(shù)列)判斷,當j==0的時候偏移,裁剪,當j==1的時候偏移,裁剪,而且還需要補漏,當偏移值大于需要裁剪的長度的時候就會漏出空隙。

(1)第一橫排偶數(shù)列(注意我們數(shù)數(shù)是從1開始,編程計算循環(huán)內(nèi)從0開始)根據(jù)輸入的值來計算縮放倍率:

(i%2==1&&j==0)Remainder=Depth-(Depth*Offset);

Scale Rate=Depth/Remainder;

在運算的時候?qū)Ψ蠗l件的物體進行縮放。

(2)最后橫排奇數(shù)列縮放倍率:

(i%2==0&&j==NumZ0)Extra=Depth*NumZ1-Depth Max;

Scale Rate=Depth/Extra;

(3)最后橫排偶數(shù)列縮放倍率:

(i%2==1&&j==NumZ0)Extra2=Extra-Remainder;

Scale Rate=Depth/Extra2;

(注意:這一個漏的位置需要多復(fù)制一個模型并縮放、移動。)

最后實現(xiàn)的效果如圖2。因為程序編寫的時候,鋪裝的地板長、寬、高、偏移值都是變量,所以可以實時改變觀看效果。因為一個循環(huán)上來,這個執(zhí)行效率并不高。關(guān)于這個還有可以擴展的空間,比如:地磚,瓦片等的分布,旋轉(zhuǎn),更多的切割裁剪等。

演示效果見:https://www.bilibili.com/video/BV1Mf4y1z7 x9?p=2。

圖2

2 隨機分布

以模擬漢堡上的芝麻來做實驗:在表面上分布、離散復(fù)制物體。我在MAYA中利用MEL語言編寫腳本來實驗并解密其基礎(chǔ)計算和實現(xiàn)方法。

首先進行一個簡單的測試,準備一個只有兩個面的簡單模型作為A目標物體,每個面四個點;和一個圓錐模型作為要復(fù)制到目標物體表面的B復(fù)制物體,B放置在坐標系的原點。在我選擇的實驗環(huán)境MAYA軟件中,使用MEL語言獲得A模型中每個子表面的點在空間中,也就是世界坐標系中的三維坐標值,并通過簡單的數(shù)學(xué)計算,將所有點的位置轉(zhuǎn)換成向量求和后除以其數(shù)量,得到一個平均值(向量),這個平均值很接近子表面的中心C,這個位置就是我將要復(fù)制模型的初始位置。

C點計算公式偽代碼:Vector$average=$VerticePos[sum]/size($Vertices);

編寫腳本針對選中的表面來批量計算,體復(fù)B物體并移動到A目標物體的每個子表面中心點C上,這樣我們得到了初步的效果,即復(fù)制物體分布到目標物體上,我們發(fā)現(xiàn)復(fù)制后的B物體,模型變換信息與在坐標系原點的默認狀態(tài)一致,需要根據(jù)A物體子表面調(diào)整B的朝向,也就是調(diào)整其變換信息。

分別獲取A物體中每個子表面的法線信息,存儲為向量V1(Z);獲取B物體的變換信息跟向量<<0,1,0>>記作V2來進行比較(在MAYA中Y軸向上),使用Cross來計算V1和V2的切線,并且使用Unit規(guī)格化后得到向量V3(X)并使用Mag得到其長度,根據(jù)長度判斷,0的話,該子表面與Y軸平行,那么它的V3(X)就是<<1,0,0>>,非0有夾角。使用Cross來計算V1和V3的切線并且使用Unit規(guī)格化后得到向量V4(Y)。這樣我們就有了這個A物體中每一個子表面網(wǎng)格的中心坐標和朝向V1(Z)、V3(X)和V4(Y),用腳本循環(huán)復(fù)制B物體的時候需要對其進行旋轉(zhuǎn),使用Rot向量計算出來弧度,將弧度轉(zhuǎn)換為角度后再來旋轉(zhuǎn)它,使它與子表面網(wǎng)格朝向一致(圖3)。

圖3

V3(X)的計算公式偽代碼:Vector V3(X)=unity(cross(V1(Z),V2));

V4(Y)的計算公式偽代碼:Vector V4(Y)=unity(cross(V1(Z),V3(X)));

接上來將實驗對象跟具體化,制作一個芝麻和一個漢堡的面包模型,盡量符合實際尺寸和比例,并且細分模型使模型網(wǎng)格數(shù)量足夠多,這樣可以得到更多的外觀差異和多樣性(圖4)。

圖4

增加分布的隨機度,給位置、旋轉(zhuǎn)和縮放的對應(yīng)分量加上隨機數(shù),這樣會看起來自然很多,也可以進一步形成一個基本的算法。隨機度在位置上我們可以給得到的C點添加類似Rand或者Noise隨機值,為了只在子表面上移動,所以只能在物體的局部坐標系上移動,同時還要考慮移動后不要離開子表面、超出邊界;在旋轉(zhuǎn)上我們只旋轉(zhuǎn)Y軸(與網(wǎng)格法線平行),根據(jù)實際情況判斷哪個軸可以旋轉(zhuǎn)以及旋轉(zhuǎn)的最大值和最小值極限,可以把屬性對應(yīng)的參數(shù),編寫到插件界面上,提供給用戶來自定義變量的值;在縮放上我們采取跟位移和旋轉(zhuǎn)類似的處理方法。

增加可分布的樣本,將B復(fù)制物體多做幾個不同外觀的模型,編輯成為一個組或者資源庫文件,放到數(shù)組中保存,用腳本循環(huán)從中隨機選取。

做更多的測試,比如甜甜圈上的糖粒。

效果展示視頻鏈接:https://www.bilibili.com/video/BV1Mf4y1z7x9/或B站搜索“體育場的老李”,稿件中搜索“表面分布”。

3 結(jié)論

需要解決的問題,當增加復(fù)制物體的數(shù)量和隨機度的同時,也要考慮因分布的位置太近而導(dǎo)致的重疊,或者超出表面界限之外,接近表面邊緣的不和其他表面的同種情況重疊。雖是隨機的但也要判斷其合理性。

當網(wǎng)格比要復(fù)制的物體小的話,如果從每個子表面去分布就會出現(xiàn)重疊,需要解決模型網(wǎng)格不均勻和過小所帶來的問題。忽略小的子表面,或者合并計算。也可以增加更多的自由度,比如網(wǎng)格大的復(fù)制的數(shù)量多些,用面積縮放密度,或者用黑白圖來控制密度,甚至是面的法線于世界坐標系的Y軸角度的不同來控制密度。可以通過重建模型網(wǎng)格來解決密度問題,也可以根據(jù)模型的UVs來計算分布狀況,再轉(zhuǎn)換到三維空間的表面上。也可以通過邊界盒,約束等來進行輔助計算。

總體的分布數(shù)量控制,不根據(jù)表面的面數(shù)多少,同樣不依賴面的大小。還可以分層控制,比如一個表面分兩層去分布,A物體分布1%,B物體分布36%等;也可以不同物體在不同層上制作不同分布比例,來得到更多的隨機性,看起來更自然。

通過上述實踐,我實現(xiàn)了想要的基本效果,從中可以看出把復(fù)制物體可以換成復(fù)制曲線,來創(chuàng)建毛發(fā);或者替換成別的模型來實現(xiàn)不同的分布、離散復(fù)制效果,比如花園;表面發(fā)射粒子、表面破碎效果等。通過對某個效果的基本算法的研究,我們不僅可以更好的利用已有的軟件功能,還可以通過編程來實現(xiàn)自己的想法,編寫出工具來提高制作效率,寫出擁有自主知識產(chǎn)權(quán)的插件。

附錄:早期相關(guān)研究,我在國外網(wǎng)站https://www.highend3d.com/上發(fā)布的插件“3D particlizer for Maya”(2013年),用戶名“l(fā)ibo19780926”,利用模型邊界盒,自己寫算法,將模型表面像素畫、元素化,用小方盒替代。

猜你喜歡
效果模型
一半模型
按摩效果確有理論依據(jù)
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
迅速制造慢門虛化效果
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
3D打印中的模型分割與打包
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
3D—DSA與3D—CTA成像在顱內(nèi)動脈瘤早期診斷中的應(yīng)用效果比較
主站蜘蛛池模板: 黄色网页在线播放| 欧美日韩中文国产| 超碰免费91| 九九热在线视频| 六月婷婷激情综合| 在线va视频| 国产专区综合另类日韩一区| 亚洲午夜国产精品无卡| 亚洲一区二区三区在线视频| 四虎精品国产AV二区| 国产一区二区人大臿蕉香蕉| 色成人亚洲| 四虎亚洲精品| 国产另类视频| 黄色网页在线观看| 五月婷婷中文字幕| 激情综合激情| 欧美影院久久| 三上悠亚精品二区在线观看| 最新亚洲av女人的天堂| 亚洲精品视频网| 又黄又湿又爽的视频| 中文字幕永久在线看| h网址在线观看| 精品视频免费在线| 一级做a爰片久久免费| 欧美精品成人一区二区视频一| 亚洲乱伦视频| 久久精品aⅴ无码中文字幕| 国产91成人| 欧美日韩成人| 99国产精品免费观看视频| 国产成人久久综合777777麻豆| 中文字幕日韩丝袜一区| 国产麻豆aⅴ精品无码| 日本精品影院| 国产精品无码作爱| 亚洲丝袜中文字幕| 日韩a级片视频| 国产激情无码一区二区APP| 国产成人亚洲精品色欲AV| 尤物午夜福利视频| 最新国产成人剧情在线播放| 成人一级黄色毛片| 亚洲国产高清精品线久久| 国产经典免费播放视频| 在线色国产| 国产三级国产精品国产普男人 | 亚洲成人一区二区三区| 男女男免费视频网站国产| 又黄又湿又爽的视频| 国产成人h在线观看网站站| 免费高清毛片| 国产成人三级在线观看视频| 亚洲天堂久久久| 亚洲最大综合网| 91亚洲精品国产自在现线| 又猛又黄又爽无遮挡的视频网站| 欧美不卡视频在线| AV天堂资源福利在线观看| 亚洲精品成人7777在线观看| 无码精品国产VA在线观看DVD| 在线观看国产精品日本不卡网| 免费福利视频网站| 91亚洲视频下载| 中文字幕免费视频| 国产一级精品毛片基地| 欧美天堂在线| 人妻丝袜无码视频| 999国产精品| 久青草免费视频| 久久综合九九亚洲一区| 99r在线精品视频在线播放| 国产精品九九视频| 华人在线亚洲欧美精品| 伊在人亚洲香蕉精品播放| 天天色综合4| 国模极品一区二区三区| 沈阳少妇高潮在线| 亚洲第一成人在线| 欧美亚洲另类在线观看| 嫩草国产在线|