Render.ru

вопросы по MEL

Bipper

Активный участник
Рейтинг
8
Не совсем понятно, что подавать на второй input plusMinusAverage в качестве значения атрибута до его изменения. Собственно, в этом и вопрос.
Ну так раскурите мануал, там все прописано:)

This node actually has different input attributes for use for different kinds of data. For simple numbers, you use the Input1D attribute and get the result from Output1D. For 2d attributes, such as UV coordinates, you use the Input2D attribute and get the result from Output2D. For 3d attributes, like vectors or colors or 3d coordinates, you use the Input3D attribute and get the result from the Output3D attribute.

 

gimmick

Активный участник
Рейтинг
5
Ну так раскурите мануал, там все прописано:)
Спасибо, я знаю, как работать с plusMinusAverage.
Вопрос в другом. Можно ли как-то узнать значение атрибута до его изменения, чтобы подать на второй вход PMA. В первый - его текущее значение.
 

Bipper

Активный участник
Рейтинг
8
Спасибо, я знаю, как работать с plusMinusAverage.
Вопрос в другом. Можно ли как-то узнать значение атрибута до его изменения, чтобы подать на второй вход PMA. В первый - его текущее значение.
засунуть на второй вход экспрешн с запросом: getAttr -time (time -1)
 

Bipper

Активный участник
Рейтинг
8
Ещё раз спасибо, Капитан.
Но в посте от gimmick, Среда в 12:55 Я спрашиваю как это сделать без экспрешна
Тогда копай в сторону ноды frameCashe.
И если уж совсем по честному, то +- average слишком неточная нода потому что имеет только один знак после запятой. Я бы скачал вот эту ноду и юзал ее.

https://apps.exchange.autodesk.com/...id=appstore.exchange.autodesk.com:mathnode:en
 

Владимир Забелин

Активный участник
Рейтинг
17
Тогда копай в сторону ноды frameCashe.
И если уж совсем по честному, то +- average слишком неточная нода потому что имеет только один знак после запятой.
Это вас кто-то обманул. Там используются флоаты с как минимум двойной точностью...
 

Bipper

Активный участник
Рейтинг
8

Дмитрий Игрушка (toys81)

Пользователь сайта
Рейтинг
4
Добрый день. Ребята, нужна ваша помощь. Я не спец в mel, но буду очень рад если вы мне объясните кое что.
Задача: Есть плоскость (поли). Нужно прочитать в переменную каждый вертыкс и к нему создать шарик, и назначить этот шарик на вертекс через констрейн. Честно сказать проблема только в ветыксах. Не знаю как из в переменную прочитать с выделенного обжекта. Спасибо вам за ранее.
 
Господа, я знатоком МЕЛа никогда не был, а сейчас и того подзабыл.
У меня возникла проблема, со вставкой имени объекта в setAttr

Есть вот такой вот код (выполняется при двух выделенных объектах):
-----------------------------------------------
blendShape -frontOfChain;

setAttr "blendShape1.pCylinder2" 1; // С этой строчкой проблема
ArtPaintBlendShapeWeightsToolOptions;

artAttrCtx -e -value 0 `currentCtx`;
artAttrCtx -e -clear `currentCtx`;
artAttrCtx -e -value 1 `currentCtx`;
--------------------------------------------------
И все в нем хорошо. За исключением, в наглую указанного имени объекта "pCylinder2".

Как загнать в переменную имя с нужного объекта, я понимаю:
string $myPolyArray [] = `ls -sl`;
string $myObject;
$myObject = $myPolyArray[0];
//print ($myObject);

А вот вкрутить потом в setAttr, $myObject, вместо pCylinder2, не получается.

--------
setAttr "blendShape1."$myObject 1;
--------
 

Cyberika

Знаток
Рейтинг
21
Если ва нужен только первый обьект, то можно и так -
Код:
string $myPolyArray [] = `ls -sl`;
setAttr ("blendShape1."+ $myPolyArray [0]) 1;
Код выглядит по чище.
 

Lemieux

Знаток
Рейтинг
58
Вот мой индуский код. Работает 1 кнопка (Sphere), чтобы слишком много кода не было лишнее вырезал. Проблема такая - запускается, работает, если щёлкать "Sphere" - "Back to MM", то всё норм работает, если нажать "Create", создаётся сфера, но если после этого нажать "Back to MM" основное меню не появится, а будет пустое окно, иногда в скрипт эдиторе пишет "// Error: line 214: Object's name 'FORM_LAYOUT_MAIN' is not unique. // " (это почти в самом конце кода), иногда не пишет. Если, например делать, через вызов основной процедуры "lxCreatePrimitivesWindow", то всё работает, но мне не нравится, что окно перестраивается.

Код:
//initial window with button

global proc lxCreatePrimitivesWindow(){       
    if (`window -exists CREATE_PRIMITIVES_WINDOW`) deleteUI -window CREATE_PRIMITIVES_WINDOW;

    window -title "Create Primitives"
            -width 225
            -height 335
            -sizeable 0
            CREATE_PRIMITIVES_WINDOW;

    formLayout -numberOfDivisions 100 FORM_LAYOUT_MAIN;
    string $bt1 = `button -label "Sphere" -width 105 -height 105 -command "lxLayoutPolySphere"`;
    string $bt2 = `button -label "Cube" -width 105 -height 105 -command "lxLayoutPolyCube"`;
    string $bt3 = `button -label "Cylinder" -width 105 -height 105 -command "lxLayoutPolyCylinder"`;
    string $bt4 = `button -label "Cone" -width 105 -height 105 -command "lxLayoutPolyCone"`;
    string $bt5 = `button -label "Plane" -width 105 -height 105 -command "lxLayoutPolyPlane"`;
    string $bt6 = `button -label "Torus" -width 105 -height 105 -command "lxLayoutPolyTorus"`;
//

//do button layout
    formLayout -edit
                -attachForm $bt1 "left" 5
                -attachForm $bt1 "top" 5

                -attachForm $bt2 "top" 5
                -attachForm $bt2 "right" 5
                -attachControl $bt2 "left" 5 $bt1

                -attachForm $bt3 "left" 5
                -attachControl $bt3 "top" 5 $bt1

                -attachControl $bt4 "left" 5 $bt3
                -attachForm $bt4 "right" 5
                -attachControl $bt4 "top" 5 $bt2

                -attachForm $bt5 "left" 5   
                -attachControl $bt5 "top" 5 $bt3

                -attachControl $bt6 "left" 5 $bt5
                -attachForm $bt6 "right" 5
                -attachControl $bt6 "top" 5 $bt4

                FORM_LAYOUT_MAIN;

    window -edit -width 225 -height 335 CREATE_PRIMITIVES_WINDOW;
    showWindow CREATE_PRIMITIVES_WINDOW;
}
//

//procedure for create menu sphere
proc lxLayoutPolySphere(){

    deleteUI -layout FORM_LAYOUT_MAIN;
    formLayout -numberOfDivisions 100 FORM_LAYOUT_SPHERE;

    intSliderGrp -label "Radius" -annotation "Radius Sphere" -field 1 -minValue 1 -maxValue 50 -value 1 -columnWidth 1 50 -columnWidth 2 20 SLD_SPHERE_1;
    intSliderGrp -label "Sub. Ax." -annotation "Subdivisions Axis" -field 1 -minValue 3 -maxValue 50 -value 10 -columnWidth 1 50 -columnWidth 2 20 SLD_SPHERE_2;
    intSliderGrp -label "Sub. Hgt." -annotation "Subdivisions Height" -field 1 -minValue 3 -maxValue 50 -value 10 -columnWidth 1 50 -columnWidth 2 20 SLD_SPHERE_3;

    string $bt1 = `button -label "Create\nand\nClose" -width 50 -height 50 -command "lxCreateSphere 2"`;
    string $bt2 = `button -label "Create" -width 50 -height 50 -command "lxCreateSphere 1"`;
    string $bt3 = `button -label "Back\nto\nMenu" -width 50 -height 50 -command "lxCommonLayout 1"`;
    string $bt4 = `button -label "Cancel" -width 50 -height 50 -command "deleteUI -window CREATE_PRIMITIVES_WINDOW"`;               

    formLayout -edit
                -attachForm SLD_SPHERE_1 "left" 5
                -attachForm SLD_SPHERE_1 "top" 5

                -attachForm SLD_SPHERE_2 "left" 5
                -attachControl SLD_SPHERE_2 "top" 5 SLD_SPHERE_1

                -attachForm SLD_SPHERE_3 "left" 5
                -attachControl SLD_SPHERE_3 "top" 5 SLD_SPHERE_2

                -attachForm $bt1 "left" 5
                -attachForm $bt1 "bottom" 5

                -attachForm $bt2 "bottom" 5
                -attachControl $bt2 "left" 5 $bt1

                -attachForm $bt3 "bottom" 5
                -attachControl $bt3 "left" 5 $bt2

                -attachForm $bt4 "bottom" 5
                -attachForm $bt4 "right" 5
                -attachControl $bt4 "left" 5 $bt3
               
                FORM_LAYOUT_SPHERE;
}
//

//procedure creating a sphere
proc lxCreateSphere(int $cond){
    int $rad = `intSliderGrp -query -value SLD_SPHERE_1`;
    int $subDivAx = `intSliderGrp -query -value SLD_SPHERE_2`;
    int $subDivHei = `intSliderGrp -query -value SLD_SPHERE_3`;

    switch ($cond){
        case 1:
        polySphere -radius $rad -subdivisionsAxis $subDivAx -subdivisionsHeight $subDivHei;
        break;

        case 2:
        polySphere -radius $rad -subdivisionsAxis $subDivAx -subdivisionsHeight $subDivHei;
        deleteUI -window CREATE_PRIMITIVES_WINDOW;
    }
}
//

//procedure for function "Back to Main Menu"
proc lxCommonLayout(int $a1){
    switch ($a1){
        case 1:
        deleteUI -layout FORM_LAYOUT_SPHERE;
        break;
       
        case 2:
        deleteUI -layout FORM_LAYOUT_CUBE;
        break;
       
        case 3:
        deleteUI -layout FORM_LAYOUT_CYLINDER;
        break;
       
        case 4:
        deleteUI -layout FORM_LAYOUT_CONE;
        break;
       
        case 5:
        deleteUI -layout FORM_LAYOUT_PLANE;
        break;
       
        case 6:
        deleteUI -layout FORM_LAYOUT_TORUS;
        break;
    }
   
    formLayout -numberOfDivisions 100 FORM_LAYOUT_MAIN;
    string $bt1 = `button -label "Sphere" -width 105 -height 105 -command "lxLayoutPolySphere"`;
    string $bt2 = `button -label "Cube" -width 105 -height 105 -command "lxLayoutPolyCube"`;
    string $bt3 = `button -label "Cylinder" -width 105 -height 105 -command "lxLayoutPolyCylinder"`;
    string $bt4 = `button -label "Cone" -width 105 -height 105 -command "lxLayoutPolyCone"`;
    string $bt5 = `button -label "Plane" -width 105 -height 105 -command "lxLayoutPolyPlane"`;
    string $bt6 = `button -label "Torus" -width 105 -height 105 -command "lxLayoutPolyTorus"`;

    formLayout -edit
                -attachForm $bt1 "left" 5
                -attachForm $bt1 "top" 5

                -attachForm $bt2 "top" 5
                -attachForm $bt2 "right" 5
                -attachControl $bt2 "left" 5 $bt1

                -attachForm $bt3 "left" 5
                -attachControl $bt3 "top" 5 $bt1

                -attachControl $bt4 "left" 5 $bt3
                -attachForm $bt4 "right" 5
                -attachControl $bt4 "top" 5 $bt2

                -attachForm $bt5 "left" 5   
                -attachControl $bt5 "top" 5 $bt3

                -attachControl $bt6 "left" 5 $bt5
                -attachForm $bt6 "right" 5
                -attachControl $bt6 "top" 5 $bt4

                FORM_LAYOUT_MAIN;
}

lxCreatePrimitivesWindow;
 

Владимир Забелин

Активный участник
Рейтинг
17
Честно говоря разбираться во всем коде нет ни сил ни желания, но судя по всему есть 2 объекта с одинаковыми именами. не исключено, что это лайауты в разных окнах. в таком случае обращаться к объекту нужно по полному имени. включая всю иерархию.
Совет. Чтобы гарантировать единственность имен интерфейсных элементов можно задавать их имена в виде <Имя главного окна>_<имя интерфейсного элемента>.
 
Сверху