Render.ru

Вопрос по программированию в Maya

Станислав Папонов

Пользователь сайта
Рейтинг
2
#1
Здравствуйте. Учусь программировать на Python.
Получилось взять информацию о выделенных точках таким кодом:
import maya.cmds as cmds
c = cmds.polyInfo( ve=True )
Теперь хочется создать между точками полигон, есть такая функция polyCreateFacet, ей нужны координаты точек между которыми надо создать полигон, но к примеру переменные типа c он не воспринимает, так как они содержат такую информацию:
VERTEX 999: 1836 1837 1840
Собственно вопрос в том как достать координаты из этой переменной и запихнуть их в функцию polyCreateFacet.
Спасибо.
 

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

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

Станислав Папонов

Пользователь сайта
Рейтинг
2
#3
Я пояснил, что только начинаю изучать Python, я знаю что эта функция должна возвращать информацию о ребрах, но как ни странно, она возвращает точки = ) Я прошу совета, как это лучше реализовать ?
 

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

Активный участник
Рейтинг
17
#4
то, что вы только начинаете изучать майа видно невооруженным взглядом, но делаете Вы это немного не с того конца, так сказать. методом тыка. Чтоб не тыкать куда попала и потом удивляться е-мое че ж я наделал? я бы Вам посоветовал для начала книжки почитать. совет банальный, но в Вашей ситуации самый полезный.
 

Paul_Winex

Знаток
Рейтинг
20
#5
1. Для получения выделенных лучше лучше использовать команду
cmds.ls(cl=1, fl=1)
флаг fl для того чтобы он диапазоны не возвращал. Получится что-то типа:
[u'pCube1.vtx[2]', u'pCube1.vtx[3]', u'pCube1.vtx[4]', u'pCube1.vtx[5]']
2. polyCreateFacet это ты верно подметил но я думаю что лучше работать через polyAppendVertex, но так как он только аппендит то нужно сначала чо-то создать а в конце это удалить. Примерно так:
Код:
# координаты любые
first = [[1,0,0],[1,0,1],[0,0,1],[0,0,0]]
#делаем первый полигон
mesh = cmds.polyCreateFacet( p=first, ch=0)[0]
for x in y:
    # в цикле строим всё что надо
    p1 = ?
    p2 = ?
    p3 = ?
    p4 = ?
    cmds.polyAppendVertex(mesh, ch=0, a=[p1, p2, p3, p4] )
#мержим созданные полигоны если надо
cmds.polyMergeVertex(mesh,d=0.01, ch=0)
# удаляем первый полигон, который нам не нужен
cmds.delete(mesh+'.f[0]', ch=0)
 
Сверху