国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MEL語言在MAYA中筆刷的應(yīng)用

2019-04-27 01:39張亮
科技資訊 2019年2期
關(guān)鍵詞:建模

張亮

摘 要:在maya中筆刷paint是常用的工具方式之一,用戶會(huì)遇到需定義一個(gè)符合自己要求的筆刷之類的問題,同時(shí)可以對(duì)大部分面積模型進(jìn)行操作,這將會(huì)影響今后工作的生產(chǎn)效率。該文借助MEL這一具有強(qiáng)大擴(kuò)展性的腳本語言闡述該實(shí)現(xiàn)功能的基本原理,分析隨機(jī)控制,關(guān)鍵幀設(shè)置的Mel語言實(shí)現(xiàn)流程。通過這一研究,為MEL在maya中具體使用提供一定借鑒意義。

關(guān)鍵詞:Maya 筆刷 建模 MEL

中圖分類號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2019)01(b)-00-02

在maya中制作植物生長,使用者往往遇到想要自定義的植物或者形態(tài),同時(shí)對(duì)這個(gè)形態(tài)進(jìn)行更高塑造。然后對(duì)整個(gè)部分隨機(jī)變化,對(duì)細(xì)節(jié)進(jìn)行調(diào)整。利用Maya系統(tǒng)中可視化的工具或命令進(jìn)行修改,是件繁瑣的事情。怎樣在過程中創(chuàng)作符合要求的工具,和合理的代碼是實(shí)現(xiàn)解決這些問題的關(guān)鍵。制作類似植物生長的方法,包括隨機(jī)、設(shè)置關(guān)鍵幀、調(diào)整形態(tài),有些地方不僅局限在maya中可視化工具,對(duì)于熱衷使用技巧的人來說,script是實(shí)現(xiàn)該方法的捷徑。該文主要闡述畫筆工具基于mel腳本語言快速實(shí)現(xiàn)相關(guān)功能,方便操作;整體控制、隨機(jī)變化,關(guān)鍵幀操作在maya中引用。

1 定義畫筆和畫筆工具的修改

在畫筆工具里,定義筆刷的相關(guān)屬性。

brushPresetSetup();bPset "time" 1;

bPsetName "imageName" "";

brushPresetApply();

presetSetPressure 1 0 0 1;

presetSetPressure 2 0 0 1;

presetSetPressure 3 0 0 1;

rename (getDefaultBrush()) Tubes;

定義好筆刷后,我們需要把筆刷attach到tube上

$sel = `ls -sl`;

string $sel3[];

int $i =0;

clear $sel3;

for ($each in $sel)

{

select $each;

stringArrayInsertAtIndex ($i, $sel3, $obj[0]);

$i++;

};

select $sel3;

select -cl;

changeToolIcon;

SelectTool;

AttachBrushToCurves;

$obj = `ls -sl`;

2 隨機(jī)控制選取對(duì)象

為了使插件更具有隨機(jī)性,能夠更加真實(shí)地模仿自然生長的花草,添加了隨機(jī)功能。

在隨機(jī)控制我們采取用數(shù)組儲(chǔ)存列表,然后對(duì)每個(gè)元素進(jìn)行操作。即每次在這個(gè)列表中隨機(jī)抽取一個(gè)元素,然后把最后一個(gè)元素填補(bǔ)在這個(gè)元素上,同時(shí)刪除最后一個(gè)元素,執(zhí)行次數(shù)為你想要的隨機(jī)概率。具體的實(shí)例小樣如下。

global proc random()

{

float $list[];

int $len = 1000;

int $i, $j;

for($i = 0;$i <$len; $i++)

{

$list[$i] = $i *0.001;

}

int $last = $len - 1;

for($j = 1;$j <=500; $j++)

{

int $a = rand($last + 1);

$qs = $list[$a];

$list[$a] = $list[$last];

$last--;

print($qs);

print("\n");

}

}

random();

在這里第一個(gè)for循環(huán)是建立1000長度的數(shù)組元素,值域0.001~0.999之間。第二個(gè)for循環(huán)是在1000選取500個(gè),print可以當(dāng)作以后對(duì)這個(gè)元素進(jìn)行操作的元素。接下來要實(shí)現(xiàn)我們?cè)诋嫻P一些屬性的隨機(jī)。

global proc setRandom()

{

float $sk[];

string $obj[] = `ls -sl`;

string $temp_obj[] =$obj;

int $obj_len = size($obj);

int $i, $j;

int $w = $obj_len - 1;

for($j = 1;$j <= $obj_len*0.8; $j++)

{

int $a = rand($w + 1);

string $qs = $obj[$a];

$obj[$a] = $obj[$w];

$w--;

setRandom_EvSingleSection({$qs});

}

select $temp_obj;

};

global proc setRandom_EvSingleSection(string $qs[])

{

float $getValue_flowSpeed = rand(1,5);

float $getValue_globalScale = rand(0.5,3);

float $getValue_brushWidth = rand(0.5,3);

$objSelected = $qs;

string $currentObject;

for($currentObject in $objSelected)

{

$selection = `ls -dag $currentObject `;

$node = `listConnections -d off -s on ($selection[1] + ".brush")`;

setAttr ($node[0] + ".flowSpeed") $getValue_flowSpeed;

}

};

在這里只是改變這個(gè)節(jié)點(diǎn)3個(gè)屬性,如果需要更多的變化,也可以這里多添加更多的屬性。要想獲得操作這個(gè)節(jié)點(diǎn),需要了解maya的dag網(wǎng)絡(luò)結(jié)構(gòu)。還有注意的是最后還要從新選擇temp_obj這樣用戶對(duì)隨機(jī)操作的效果不滿意,可以重新隨機(jī),而不用重新選擇。以上的隨機(jī)獲取并隨機(jī)的方式不只是可以在畫筆中,在其他模塊一樣有用。

3 實(shí)現(xiàn)用戶關(guān)鍵幀

由于為了使畫面的更加動(dòng)態(tài),所以會(huì)使每個(gè)畫筆的開始時(shí)間不同,可以設(shè)置關(guān)鍵幀。在此主要分為兩個(gè)模塊:第一模塊是用戶輸入想要開始生長的幀數(shù);第二模塊是通過滑塊組在當(dāng)前界面幀開始生長。在第一模塊中,由于maya中額starttime(開始時(shí)間)的修改是秒為單位,下面的時(shí)間滑塊組是以幀為單位的。為此,在mel中將輸入端的數(shù)據(jù)乘上1/25(maya中默認(rèn)1s為25幀),從而解決時(shí)間單位不統(tǒng)一的問題。第二模塊的實(shí)現(xiàn)則也需要考慮到時(shí)間單位的問題,直接通過獲取當(dāng)前界面的時(shí)間幀此時(shí)獲取的數(shù)據(jù)只是純的數(shù)字,若直接賦予則會(huì)產(chǎn)生錯(cuò)誤,因?yàn)橐x予的是以幀為單位的數(shù)據(jù),則同樣為界面獲取的時(shí)間數(shù)據(jù)乘上1/25,并將此數(shù)據(jù)對(duì)應(yīng)的maya屬性修改,從而實(shí)現(xiàn)了在界面當(dāng)前時(shí)間幀開始生長的功能。

參考文獻(xiàn)

[1] AdamMechtley,RyanTrowbridge.Maya Python游戲與影視編程指南[M].北京:人民郵電出版社,2016.

[2] 張寶榮,呂新歡.Maya總動(dòng)員[M].北京:清華大學(xué)出版社,2011.

[3] 王澄宇.MAYA腳本應(yīng)用手冊(cè)[M].北京:人民郵電出版社,2013.

猜你喜歡
建模
解析新課標(biāo)下高中數(shù)學(xué)建模教學(xué)策略
物理建模在教與學(xué)實(shí)踐中的應(yīng)用
在經(jīng)歷中發(fā)現(xiàn)在探究中建模
空間幾何體外接球問題的數(shù)學(xué)建模
3DSMAX建模技術(shù)分析
三維激光掃描技術(shù)建模與傾斜攝影測(cè)量建模對(duì)比
思維建模在連續(xù)型隨機(jī)變量中的應(yīng)用
模型與建模在高中生物學(xué)教學(xué)中的應(yīng)用——以“減數(shù)分裂”第1課時(shí)教學(xué)為例
求距求值方程建模
運(yùn)用5W1H教學(xué)策略培養(yǎng)高中物理問題建模能力
怀化市| 荔浦县| 万荣县| 成武县| 赣州市| 沛县| 静宁县| 黑水县| 鄂温| 玉山县| 庄浪县| 南昌县| 剑河县| 南涧| 福泉市| 喜德县| 白银市| 蓬莱市| 临汾市| 涿州市| 乌鲁木齐市| 津南区| 黄龙县| 云安县| 闸北区| 灌南县| 前郭尔| 辰溪县| 长治县| 旬邑县| 四子王旗| 龙川县| 卓资县| 平乐县| 文水县| 濉溪县| 自治县| 金阳县| 黑水县| 安远县| 嘉定区|