Maya как найти объект

Поиск объектов по названию

Используйте команды ls() для поиска объектов по имени:

freds = cmds.ls("fred") 
#finds all objects in the scene named exactly 'fred', ie [u'fred', u'|group1|fred']

Используйте * в качестве подстановочного знака:

freds = cmds.ls("fred*")
# finds all objects whose name starts with 'fred'
# [u'fred', u'frederick', u'fred2']

has_fred = cmds.ls("*fred*")
# [u'fred', u'alfred', u'fredericka']

ls () принимает несколько аргументов строки фильтра:

cmds.ls("fred", "barney") 
# [u'fred', u'|group1|barney']

Он также может принимать итеративный аргумент:

look_for = ['fred', 'barney']
# cmds.ls(look_for)
# [u'fred', u'|group1|barney']

Работа с результатами ls ()

Использование ls () в качестве фильтра иногда может обеспечить получение нечетных результатов. Если вы случайно забыли передать аргумент фильтра и вызовите ls() без аргументов, вы получите список всех узлов сцены Maya :

 cmds.ls()
 # [u'time1', u'sequenceManager1', u'hardwareRenderingGlobals', u'renderPartition'...] etc

Общей причиной этого является использование * args внутри ls() :

cmds.ls(["fred", "barney"]) # OK, returns ['fred', 'barney']
cmds.ls([]) # OK, returns [] 
cmds.ls(*[]) # not ok: returns all nodes!

Майя 2015 года и ранее

В Maya 2015 и ранее запрос ls() который ничего не находит, вернет None вместо пустого списка. В случае использования результата это может привести к исключению:

 for item in cmds.ls("don't_exist"):
     print item
 # Error: TypeError: file <maya console> line 1: 'NoneType' object is not iterable 

Самая чистая идиома для работы вокруг этого всегда добавляет альтернативный выход, когда None возвращается or [] после операции ls() . Это гарантирует, что возврат является пустым списком, а не None :

 for item in cmds.ls("don't_exist") or []:
     print item
 # prints nothing since there's no result -- but no exception

Поиск объектов по типу

ls() включает флаг type , который позволяет находить узлы сцены определенного типа. Например:

 cameras = cmds.ls(type='camera')
 // [u'topShape', u'sideShape', u'perspShape', u'frontShape']

Вы можете искать несколько типов в одном и том же вызове:

 geometry = cmds.ls(type=('mesh', 'nurbsCurve', 'nurbsSurface'))

Вы также можете искать «абстрактные» типы, которые соответствуют иерархии внутреннего класса Maya. Чтобы узнать, какие типы узлов представляют конкретный объект, используйте команду nodeType :

cmds.nodeType('pCubeShape1', i=True)  # 'i' includes the inherited object types
// Result: [u'containerBase',
 u'entity',
 u'dagNode',
 u'shape',
 u'geometryShape',
 u'deformableShape',
 u'controlPoint',
 u'surfaceShape',
 u'mesh'] //
 # in this example, ls with any of the above types will return `pCubeShape1`

Используя ls (), чтобы увидеть, существует ли объект

Поскольку ls() находит объекты по именам, это удобный способ узнать, присутствует ли объект в сцене. ls() со списком объектов возвращает только те, которые находятся в сцене.

 available_characters = cmds.ls('fred', 'barney', 'wilma', 'dino')
 # available_characters will contain only the named characters that are present

Работа с компонентами

При работе с компонентами, такими как вершины или точки uv, Maya по умолчанию возвращает диапазон, разделенный двоеточиями, а не отдельные элементы:

 print cmds.ls('pCube1.vtx[*]')  # get all the vertices in the cube
 # [u'pCube1.vtx[0:7]']

Вы можете использовать ls с параметром flatten чтобы заставить Maya расширять нотацию диапазона на отдельные записи компонентов:

expanded = cmds.ls('pCube1.vtx[*]', flatten=True)
print expanded
# [u'pCube1.vtx[0]', u'pCube1.vtx[1]', u'pCube1.vtx[2]', u'pCube1.vtx[3]', u'pCube1.vtx[4]', u'pCube1.vtx[5]', u'pCube1.vtx[6]', u'pCube1.vtx[7]']

Эта форма обычно лучше при циклировании, так как у вас нет кода для записи строки типа pCube1.vtx[0:7] в несколько отдельных записей.

Вы также можете получить тот же результат, используя команду filterExpand .

Безопасное получение одного объекта из ls

Многие запросы ls() предназначены для поиска одного объекта, но ls всегда возвращает список (или, в более старых Mayas, один None ). Это создает сложную проверку ошибок для простого вопроса.

Самый простой способ получить одно значение от ls при любых обстоятельствах:

result = (cmds.ls('your query here') or [None])[0]

or гарантирует, что вы, как минимум, получите список, содержащий один None чтобы вы всегда могли его индексировать.

Обратите внимание, что этот стиль не скажет вам, есть ли у вас несколько результатов — он просто позволяет предположить один результат.

Ускорьте ваши действия с помощью сочетания клавиш. Это стандартные сочетания клавиш в программе Autodesk Maya.

1. Базовые сочетания (Basic Maya Hotkey)
2. Выделение объектов (Selection Mode)
3. Редактирование геометрии (Edit Mesh)
4. Геометрия + Деформация (Mesh + Deform)
5. Конвертация выделенного (Convert Selection)
6. Камера и Изолирование (Camera & Isolation)
7. Дисплей (Display)
8. Координаты (UV)
9. Создание (Create)
10. Редактор координат (UV Editor)
11. Настройка окна (Windows)
12. Настройка проекта (Project Settings)
13. Моделирование Nurbs кривых (Nurbs Modeling)
Источник — Maya Bootcamp

Понравился материал? Расскажите о нем друзьям. Спасибо!

Find objects by name

Use the ls() commands to find objects by name:

freds = cmds.ls("fred") 
#finds all objects in the scene named exactly 'fred', ie [u'fred', u'|group1|fred']

Use * as a wildcard:

freds = cmds.ls("fred*")
# finds all objects whose name starts with 'fred'
# [u'fred', u'frederick', u'fred2']

has_fred = cmds.ls("*fred*")
# [u'fred', u'alfred', u'fredericka']

ls() takes multiple filter string arguments:

cmds.ls("fred", "barney") 
# [u'fred', u'|group1|barney']

It can also accept an iterable argument:

look_for = ['fred', 'barney']
# cmds.ls(look_for)
# [u'fred', u'|group1|barney']

Dealing with ls() results

Using ls() as a filter can sometimes provide produce odd results. If you accidentally forget to pass a filter argument and call ls() with no arguments, you will get a list of every node in the Maya scene:

 cmds.ls()
 # [u'time1', u'sequenceManager1', u'hardwareRenderingGlobals', u'renderPartition'...] etc

A common cause of this is using *args inside ls():

cmds.ls(["fred", "barney"]) # OK, returns ['fred', 'barney']
cmds.ls([]) # OK, returns [] 
cmds.ls(*[]) # not ok: returns all nodes!

Maya 2015 and and earlier

In Maya 2015 and earlier, an ls() query which finds nothing will return None instead of an empty list. In case of using the result, it can result in an exception:

 for item in cmds.ls("don't_exist"):
     print item
 # Error: TypeError: file <maya console> line 1: 'NoneType' object is not iterable 

The cleanest idiom for working around this is always adding an alternative output when None is returned adding or [] after an ls() operation. That will ensure that the return is an empty list rather than None:

 for item in cmds.ls("don't_exist") or []:
     print item
 # prints nothing since there's no result -- but no exception

Finding objects by type

ls() includes a type flag, which lets you find scene nodes of a particular type. For example:

 cameras = cmds.ls(type='camera')
 // [u'topShape', u'sideShape', u'perspShape', u'frontShape']

You can search for multiple types in the same call:

 geometry = cmds.ls(type=('mesh', 'nurbsCurve', 'nurbsSurface'))

You can also search for ‘abstract’ types, which correspond to Maya’s internal class hierarchy. These to find out what node types a particular object represents, use the nodeType command:

cmds.nodeType('pCubeShape1', i=True)  # 'i' includes the inherited object types
// Result: [u'containerBase',
 u'entity',
 u'dagNode',
 u'shape',
 u'geometryShape',
 u'deformableShape',
 u'controlPoint',
 u'surfaceShape',
 u'mesh'] //
 # in this example, ls with any of the above types will return `pCubeShape1`

Using ls() to see if an object exists

Since ls() finds objects by names, it’s a handy way to find out if an object is present in the scene. ls() with a list of objects will only return the ones which are in the scene.

 available_characters = cmds.ls('fred', 'barney', 'wilma', 'dino')
 # available_characters will contain only the named characters that are present

Working with component selections

When working with components, such as vertices or uv points, Maya defaults to returning a colon-separated range rather than individual items:

 print cmds.ls('pCube1.vtx[*]')  # get all the vertices in the cube
 # [u'pCube1.vtx[0:7]']

You can use ls with the flatten option to force Maya to expand the range notation into individual component entries:

expanded = cmds.ls('pCube1.vtx[*]', flatten=True)
print expanded
# [u'pCube1.vtx[0]', u'pCube1.vtx[1]', u'pCube1.vtx[2]', u'pCube1.vtx[3]', u'pCube1.vtx[4]', u'pCube1.vtx[5]', u'pCube1.vtx[6]', u'pCube1.vtx[7]']

This form is usually better when looping, since you don’t have write any code to turn a string like pCube1.vtx[0:7] into multiple individual entries.

You can also get the same result using the filterExpand command.

Safely getting a single object from ls

Many ls() queries are intended to find a single object, but ls always returns a list (or, in older Mayas, a single None). This creates complicated error checking for a simple question.

The easiest way to get a single value from an ls under any circumstances is

result = (cmds.ls('your query here') or [None])[0]

The or guarantees that at a minimum you’ll get a list containing a single None so you can always index into it.

Note that this style won’t tell you if you’ve got more than one result — it just makes it safe to assume a single result.

25 май 2009

Включаю Майку, открываю свою сцену….а объекта нет!!!! Хотя он был сохранён при последнем закрытии программы. Референсы с фотками есть, а самого полигонального объекта нет, исчез!!!!
Что делать, помогите пожалуйста!!!!!

Dark™


25 май 2009

Зачем столько восклицательных знаков? Проблему это решить не поможет.
В аутлайнере он есть?

26 май 2009

Я новичок, поэтому не знаю как найти его в аутлайнере. Но если есть, как его вернуть?

Dark™


26 май 2009

Ну если есть, то он либо скрыт (shift+h, чтобы показать), либо находится вне ракурса (А или F, чтобы навести), либо сетка полетела — причин может быть не мало.

26 май 2009

В аутлайнере понажимала shift+h по всем объектам — не появился. Пока не пойму причину, но может ли объект пропасть безвозвратно, если я его сохраняла?

26 май 2009

похоже жействительно полетела сетка. Нашла во временной папке свой объект как после взрыва….только по некоторым деталям поняла, что это именно тот объект который искала.
Скажите, пожалуйста, отчего такое случается? И это уже никак нельзя исправить ?

Vella Ri


19 янв 2020

У меня тоже исчез объект со сцены. в Outliner он есть, он не скрыт. Если выделить его то на сцене видна только точка и стрелки модификатора. Другие объекты на сцене сохранились и отображаются нормально. Что делать? Есть идеи?

Горячие клавиши чувствительны к раскладке и к регистру. Нажатая Caps Lock имеет значение.

Операции редактирования

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

Ctrl z Edit->Undo (отменить последнее действие)
Ctrl y Edit->Redo (повторить последнее действие)
Shift G Повторить команду под курсором
Ctrl d Edit->Duplucate (дублировать объект)
Ctrl+Shift D Edit->Duplicate Special (дублировать объект со всеми атрибутами)
Shift D Edit->Duplicate with Transform (дублировать, сохранив трансформации)
Ctrl g Edit->Group (создать новую группу и поместить в неё выделенные объекты)
p Edit->Parent (сделать родителем)
Shift P Edit->Unparent (изъять из родительской ноды)
Ctrl x Edit->Cut (вырезать)
Ctrl c Edit->Copy (копировать)
Ctrl v Edit->Paste (вставить)
Операции с файлами

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

Ctrl n File->New Scene
Ctrl o File->Open Scene
Ctrl s File->Save Scene
Ctrl Shift+s File->Save Scene As…
Ctrl q File->Exit
Ctrl r Создать референс файла
Моделирование

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

1 Стандартная отрисовка полигонального меша (без сглаживания)
2 Сглаженный меш плюс стандартная отрисовка в виде каркаса
3 Сглаженный меш
Ctrl F9 Конвертировать выделенный элемент полигонального меша в вертексы
Ctrl F10 Конвертировать выделенный элемент полигонального меша в рёбра
Ctrl F11 Конвертировать выделенный элемент полигонального меша в полигоны
Ctrl F12 Конвертировать выделенный элемент полигонального меша в UV
Отображение объектов

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

Ctrl h Скрыть выделенное (Display -> Hide -> Hide Selection)
Shift H Отобразить выделенное (Display -> Show -> Show Selection)
Ctrl+Shift H Отобразить скрытое последним (Display -> Show -> Show Last Hidden)
Alt h Display -> Hide -> Hide Unselected Objects
Shift I Show -> Isolate Select -> View Selected
Отрисовка во вьюпорте

Нажатая клавиша

Выполняемое действие

4 Сетка (т.е. 3д-каркас) (Shading -> Wireframe)
5 С шейдингом
6 С шейдингом и текстурированием
7 Освещать сцену всеми существующими источниками света (Lightning -> Use All Lights)
Операции с инструментами

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

q Инструмент выделения
w Инструмент перемещения
e Инструмент вращения
r Инструмент масштабирования
Ctrl t Универсальный манипулятор
y Вернуться к предыдущему инструменту редактирования (кроме вышеперечисленных)
= Увеличить размер манипулятора
Уменьшить размер манипулятора
d Перемещать опорную точку объекта
Insert Перейти в режим редактирования опорной точки
Привязки

Нажатая клавиша

Выполняемое действие

x Привязка к сетке (нажать и удерживать)
c Привязка к кривым (нажать и удерживать с зажатой средней кнопкой мыши)
v Привязка к точкам (вершинам) (нажать и удерживать)
Трансформации

Зажатая клавиша

Нажатая клавиша

Выполняемое действие

Alt Сдвинуть вверх на один пиксель
Alt Сдвинуть вниз на один пиксель
Alt Сдвинуть вправо на один пиксель
Alt Сдвинуть влево на один пиксель

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Фиксики как дим димыч нашел фиксиков
  • Как найти время при равномерном движении тела
  • Как найти процент снижения между двумя значениями
  • График функции логарифма как найти b
  • Как найти значение угла зная значение синуса

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии