Maya: вопрос-ответ

Материал из xrWiki
Перейти к: навигация, поиск

Вопрос: в новых версиях Майи со встроенным Modeling Toolkit'ом (он же NEX plugin) отсутствуют элементы интерфейса, позволявшие вызвать старые проверенные Split Polygon, Poly Cut, Sculpt Geometry tool'ы. В то же время они не вырезаны из функционала программы. Как их теперь вызвать?

Ответ: нужно ввести следующие команды в командную строку и перетащить их оттуда прямо на полку.
SplitPolygonTool;
performPolyCut 1;
SculptGeometryTool;

Вопрос: как изменить рабочие единицы, используемые Майкой по умолчанию, чтобы они не сбрасывались при создании новой сцены?
Ответ: поменять значения в [maya\<версия>\prefs\userPrefs.mel:

-sv "workingUnitLinearDefault" "cm"
-sv "workingUnitTimeDefault" "film"

Здесь показаны параметры по умолчанию — единицы измерения сантиметры, частота кадров равна 24 (фильм). В XRay используются метры и анимация с частотой кадров, равной 30 (стандарт NTSC):

-sv "workingUnitLinearDefault" "m"
-sv "workingUnitTimeDefault" "ntsc"

Плоскости отсечки настраиваются там же:

-fv "defaultCameraFarClipValue" 1000
-fv "defaultCameraNearClipValue" 0.01


Скриптовые решения

В большинстве случаев небольшие скрипты удобно скопипастить в редактор скриптов и перетащить их оттуда прямо на полку.


Вопрос: Как скриптом переместить объект в начало координат?

Ответ:
import maya.cmds as mc

selected = mc.ls( selection=True )
mc.move( 0, 0, 0, selected, rotatePivotRelative=True)

Вопрос: Как отцентрировать опорные точки (pivot'ы) по центру габаритного контейнера объекта (bounding box'а)?

Ответ:
mc.xform( centerPivots=True )

Вопрос: Как импортировать много файлов в сцену (например, при работе со сценой после декомпиляции уровня в режиме -mode le?

Ответ:
import maya.cmds as mc

def multiple_import():
    multiple_filters = "X-Ray object (*.object);;X-Ray game object(*.ogf);;X-Ray skeletal motion (*.skl);;All Files (*.*)"
    files = mc.fileDialog2(fileFilter = multiple_filters,
                            dialogStyle = 2,
                            caption = 'Import',
                            okCaption = 'Import',
                            fileMode = 4)
    for f in files:
        names_list  = f.split('/')
        object_name = names_list[-1].replace('.object', '') 
        returned_nodes = mc.file('%s' % f,
                                    i = True,
                                    type = "X-Ray object",
                                    rnn=True,
                                    ignoreVersion = True,
                                    options = "mo=0",
                                    loadReferenceDepth  = "all"  )
        mc.rename(returned_nodes[0], object_name)

Вопрос: Как выделить initialShadingGroup?

Ответ:
hyperShade -objects initialShadingGroup;