Render.ru

MEL? Python? PyMel?

3rr0r

Знаток
Рейтинг
71
#1
Итак.
0) Объясните мне в чем отличие простого питона в майе от pymel'a? В чем отличие использования:
import random as rand
randomize = rand.uniform(0, 1)
и
from pymel.core import *
randomize = rand(0, 1)

1) Выполняется быстрее mel или питон?
2) Как сделать выполение скрипта с фидбэком? То есть, например, я создаю в рандомных позициях 1000 сфер и хочу наблюдать процесс их появления во вьюпорте. Если на меле делать, то всё подвисает до появления конечного результата.
3) Существует 2 способа писать гуи: Qt дизайнером форм создавать ui файл и вручную в коде создавать форму (это всё PyQt?). Верно?

Обновление сообщения автором
08.10.2012 в 00:58
0) Пояснение: в чем разница использования "import maya.cmds as cmds" и "from pymel.core import * "
 

Dark™

Модератор форума
Команда форума
Рейтинг
431
#2
PyMel это более верная структурная реализация функций Mel'а в питоне. Например, в то время, как в обычном модуле maya.cmds недостаточно функций и многие команды приходится запускать через eval в виде строчных аргументов, в PyMel же все команды имеют свои классовые, объектно-ориентированные представления. Это напрямую сказывается на гибкости применения, а так же на то, что кода становится значительно меньше - его легче читать и использовать. В идеале Mel так и должен быть представлен Python'ом в исходной сборке Maya.

import random as rand
randomize = rand.uniform(0, 1)
Это пример использования нативного модуля для самого питона.

from pymel.core import *
randomize = rand(0, 1)
А тут rand не правильно вызван. Надо: mel.rand(0,1). Это равносильно этому:
Код:
import maya.mel as mel
mel.eval("rand 0 1")
Т.е. PyMel это просто другой подход для взаимодействия с майским Api.

1) Выполняется быстрее mel или питон?
Обычно mel быстрее. Но, думаю, можно найти случай, когда python быстрее будет в задачах, не связанных с вызовом maya api.

То есть, например, я создаю в рандомных позициях 1000 сфер и хочу наблюдать процесс их появления во вьюпорте.
Есть команда refresh.
 

3rr0r

Знаток
Рейтинг
71
#3
Спасибо за разъяснения!
Refresh работает. как и ожидалось, Время исполнения скрипта заметно увеличилось. Почти в 3 раза. 6.5 секунд против 16 с рефрешем.
Осталось переписать его на PyMel и замерить снова
 
Сверху