Проблема с зеркалированием Maya Python

Я хочу отразить объект в Maya "object1" и удалить его исходную версию после зеркалирования

cmds.polyMirrorFace("object1",name="object1Mirror",cutMesh=0,axis=0,axisDirection=1, mergeMode=0, mergeThresholdType=0, mergeThreshold=0.001, mirrorAxis=2, mirrorPosition=0, smoothingAngle=30, flipUVs=1, ch=0);
cmds.delete("object1")

Но polyMirrorFace дает мне один объединенный объект, помимо того факта, что я думал, что отключил слияние с mergeMode=0.

Когда я зеркалирую в Maya через пользовательский интерфейс, все работает нормально.

Я надеюсь, кто-нибудь может помочь.


person goetzmoritz    schedule 11.07.2017    source источник
comment
При зеркалировании в Maya через пользовательский интерфейс проверьте редактор сценариев и посмотрите, какую команду Maya использовала для успешного выполнения зеркалирования. Я попробовал ту же команду, которую вы использовали, и (вероятно, из-за моей другой версии Maya) я получил несколько ошибок, поскольку некоторые из тех флагов, которые вы использовали, были недоступны для меня, а некоторые я не мог найти в документации, например smoothingAngle, flipUVs. .   -  person davedwards    schedule 12.07.2017
comment
При зеркалировании в Maya через пользовательский интерфейс проверьте редактор сценариев и посмотрите, какую команду Maya использовала для успешного выполнения зеркалирования. Я попробовал ту же команду, которую вы использовали, и (вероятно, из-за моей другой версии Maya) я получил несколько ошибок, поскольку некоторые из тех флагов, которые вы использовали, были недоступны для меня, а некоторые я не смог найти в документации, например smoothingAngle, flipUVs help.autodesk.com/cloudhelp/2016/CHS /Maya-Tech-Docs/   -  person davedwards    schedule 12.07.2017


Ответы (1)


Попробуйте эту логику:

# mirror about +Y direction by merging the border vertices
import maya.cmds as mc

mc.polyCube( name='polyCube5' )

# deliberately deleting face `1`
mc.delete( 'polyCube5.f[1]' )

# mirror about +Y direction
mc.polyMirrorFace( 'polyCube5', direction=0, mergeMode=2 )

# deleting all faces but a target
mc.delete( 'polyCube5.f[0:9]' )

или эта логика, чтобы удалить исходный объект и оставить дубликат:

import maya.cmds as cmds

cmds.polyCube( name='poly1' )
cmds.move( -1, y=True )
cmds.duplicate( st=True )
cmds.move( 2, y=True )
cmds.delete( 'poly1' )

ДОБАВЛЕНИЕ:

import maya.cmds as mc

mc.polyHelix(c=3, h=2, w=2, r=0.4, sa=8, sco=50, sc=0, d=1, rcp=0, cuv=3, ch=1) 
mc.scale(1,1,-1, 'pHelix1', pivot=(0,0,0), absolute=True)
person Andy Fedoroff    schedule 11.07.2017
comment
Думаю, это работает в большинстве случаев. Становится забавнее, когда вы делаете это с импортированными объектами. Допустим, вы импортируете объект из .mb, включая несколько групп, зеркалируете его один за другим, а затем экспортируете как объект, например. Но да, ваша версия работает. Спасибо за это! - person goetzmoritz; 12.07.2017
comment
Спасибо, у меня все еще есть проблема, если я перебираю несколько объектов, которые они объединяют. Почему-то это кажется глючным. - person goetzmoritz; 12.07.2017
comment
cmds.polyHelix (c = 3, h = 2, w = 2, r = 0,4, sa = 8, sco = 50, sc = 0, d = 1, rcp = 0, cuv = 3, ch = 1) sel = cmds.ls(geometry=True) для obj в sel: cmds.polyMirrorFace(obj, mm=0, cm=True) - person goetzmoritz; 13.07.2017
comment
Он не правильно форматирует мой код, надеюсь понятно. Он создает спираль, отражает ее (и любой другой объект), но я всегда получаю объединенную спираль, независимо от параметров, которые я использую для отражения. - person goetzmoritz; 13.07.2017
comment
В этом случае вы можете использовать «масштаб» = -1 по оси Z. Я обновил ответ. - person Andy Fedoroff; 13.07.2017
comment
Спасибо, но есть разница между масштабированием на -1 и зеркалированием, поскольку UV и нормали не зеркалируются. Но в принципе я вас понял, спасибо. - person goetzmoritz; 17.07.2017