Render.ru

вопросы по MEL

Andots

Знаток
Рейтинг
66
А где почитать об этой магии?
:D А вот лично яб пообстерегся от этой черной магии.
Питонскому интерпретатору по большому счету побарабану какой код раскладывать. Когда код пишешь лучше его сделать не максимально коротким а максимально внятным самому себе.
Блин, я вот решил взять отпуск на месяц, не писать ничего, тупо отдохнуть, сейчас смотрю на то что я буквально месяцок назад писал и чешу репу, и думаю, хренасе я понаписал то.

В данном случае ИМХО краткость не сестра таланта.
 

2manoff

Активный участник
Рейтинг
14
Всем привет! Есть необходимость написать скрипт для автозамены материалов. Подскажите, пожалуйста, какой MEL-командой можно вызвать функцию Select Objects With Material?
 

Lemieux

Знаток
Рейтинг
58
Всем привет! Есть необходимость написать скрипт для автозамены материалов. Подскажите, пожалуйста, какой MEL-командой можно вызвать функцию Select Objects With Material?
hyperShade -objects "тратата"
 

2manoff

Активный участник
Рейтинг
14
всем привет! подскажите, какой командой переместить объект в ноль мировых координат? команда move -a 0 0 0; не дает результата, объект остается на месте
 

2manoff

Активный участник
Рейтинг
14
всем привет! подскажите, какой командой переместить объект в ноль мировых координат? команда move -a 0 0 0; не дает результата, объект остается на месте
прошу прощения, все работает, просто невнимательный
 

2manoff

Активный участник
Рейтинг
14
Всем привет! хочу написать скрипт по автозамене объектов, написал вот такую штуку:
Код:
string $obj[] = `ls -sl`;
select $obj[1];
CenterPivot;
float $XYZ[] = `objectCenter -gl $obj[1]`;
select $obj[0];
move -a $XYZ[0] $XYZ[1] $XYZ[2];
select $obj[1];
doDelete;
и в принципе это работает, но только с одним объектом, подскажите пожалуйста, как сделать тоже для нескольких объектов?
 

moris

Активный участник
Рейтинг
10
Всем привет! хочу написать скрипт по автозамене объектов, написал вот такую штуку:
Код:
string $obj[] = `ls -sl`;
select $obj[1];
CenterPivot;
float $XYZ[] = `objectCenter -gl $obj[1]`;
select $obj[0];
move -a $XYZ[0] $XYZ[1] $XYZ[2];
select $obj[1];
doDelete;
и в принципе это работает, но только с одним объектом, подскажите пожалуйста, как сделать тоже для нескольких объектов?
так я вижу решение твоего вопроса
proc MyProc()
{
string $obj[] = `ls -sl`;
int $end_index = `size $obj`-1;
select $obj[$end_index];
CenterPivot;
float $XYZ[] = `objectCenter -gl $obj[$end_index]`;
for ($i=0; $i<$end_index; $i++)
{
move -a $XYZ[0] $XYZ[1] $XYZ[2] $obj[$i];
}
delete $obj[$end_index];
}
 

moris

Активный участник
Рейтинг
10
Господа знатоки, знаете ли вы такой эффект в майке, когда во время выполнения скрипта не происходит своевременного апдейта трансформаций обьектов в сцене и следующая часть скрипта применяется к старым не обновленным трансформациям. А чтобы трансформы обновились надо currentTime "подвигать". Возможно существует некая команда, которая сделает апдейт трансформаций?
 

2manoff

Активный участник
Рейтинг
14
так я вижу решение твоего вопроса
proc MyProc()
{
string $obj[] = `ls -sl`;
int $end_index = `size $obj`-1;
select $obj[$end_index];
CenterPivot;
float $XYZ[] = `objectCenter -gl $obj[$end_index]`;
for ($i=0; $i<$end_index; $i++)
{
move -a $XYZ[0] $XYZ[1] $XYZ[2] $obj[$i];
}
delete $obj[$end_index];
}
не сработало, я решил таким способом:
Код:
string $obj[] = `ls -sl`;
int $sizeMas = size($obj);
int $i = $sizeMas - 1;
int $j;


for ($j = 0; $j < $i; $j = $j + 1 )
    {
        select $obj[$j];
        CenterPivot;
        float $XYZ[] = `objectCenter -gl $obj[$j]`;
        select $obj[$i];
        duplicate -rr;
        move -a $XYZ[0] $XYZ[1] $XYZ[2];
        select $obj[$j];
        doDelete;
    };
select $obj[$i];
doDelete;
 

2manoff

Активный участник
Рейтинг
14
Всем привет. Подскажите, пожалуйста, какой командой можно выделить все эджи выделенного сабдив-объекта?
 

2manoff

Активный участник
Рейтинг
14
они и сейчас есть, только очень редко используются. В общем нужна команда, которая выделяет все подобъекты (еджи\вертексы\полики) у выделенного объекта. На пример в сцене есть сфера pSphere1, я выбераю режим эдж, нажимаю ctrl + shift + a, а выделяются все эджи этой сферы и в скрипт эдиторе получаю строку: select -r pSphere1.e[0:779]; попробовал вместо [0:779] вставить [all] и получаю ошибку // Error: Invalid use of Maya object "all". // Вопрос, как записать выделение всех эджей\вертексов\фэйсов у выделенного объекта?
 

2manoff

Активный участник
Рейтинг
14
не совсем то. Я на буржуйских форумах нашел:
Код:
string $selObj[] = `ls -sl`;

select -r ($selObj[0] + ".e[*]");
".e[*]" - для выделения всех эджей; ".vtx[*]"- для выделения всех вешин; ".f[*]"- для выделения всех поликов;
 

2manoff

Активный участник
Рейтинг
14
теперь возник другой вопрос: делаю скрипт для конверта полигональных объекта в нурбсовые. Для этого поли-объекты нужно сперва сконвертить в сабдивы, потом сабдивы в нурбсы. Написал вот такой скрипт:
Код:
string $selP[] = `ls -sl`;
for ($i=0; $i<size($selP); $i++){
CenterPivot;
FreezeTransformations;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0;
doSubdivCreate( "2", { "1","1","10000","50"} );
polyToSubdiv -ap 0 -ch off -aut on -maxPolyCount 10000 -maxEdgesPerVert 50 $selP[$i];
};
string $selS[] =`ls -typ subdiv`;
print ($selS);
for ($j=0; $j < size($selS); $j++){
select $selS[$j];
subdToNurbs -ch off;
};
и получаю такую ошибку :
Код:
deleteInternalValence2Verts |Bumper_back_9|Bumper_back_9Shape;
polyToSubdiv -ap 0 -ch off -aut on  -maxPolyCount 10000  -maxEdgesPerVert 50 |Bumper_back_9|Bumper_back_9Shape;
// Result: polyToSubdShape1 //
delete |Bumper_back_9|Bumper_back_9Shape;
deleteInternalValence2Verts |black_plastic_09|black_plastic_09Shape;
polyToSubdiv -ap 0 -ch off -aut on  -maxPolyCount 10000  -maxEdgesPerVert 50 |black_plastic_09|black_plastic_09Shape;
// Result: polyToSubdShape2 //
delete |black_plastic_09|black_plastic_09Shape;
deleteInternalValence2Verts |trunk_01_part013|trunk_01_part013Shape;
polyToSubdiv -ap 0 -ch off -aut on  -maxPolyCount 10000  -maxEdgesPerVert 50 |trunk_01_part013|trunk_01_part013Shape;
// Result: polyToSubdShape3 //
delete |trunk_01_part013|trunk_01_part013Shape;
// Error: No object matches name: Bumper_back_9.vtx[*] //
но когда запускаю скрипт по частям, все выполняется, правда после выполнения первой части выдает такую же ошибку. Что я делаю не так?
 
Сверху