вращение по 90 градусов, po_dummy.rotateY = ???? |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
вращение по 90 градусов, po_dummy.rotateY = ???? |
02/02/2014, 20:01
Сообщение
#1
|
|
Учитель Группа: Пользователи Сообщений: 334 Регистрация: 16/01/2006 Из: Санкт-Петербург Пользователь №: 21 267 |
Здравствуйте.
Нужно, чтобы объект в сцене при попытке его повернуть поворачивался только на 90, 180, 270 и 360 градусов. В выражениях не силён, поэтому подскажите пожалуйста как это грамотно написать? P.S. Вариант "поставить в свойствах манипулятора step size = 90" не подходит. |
|
|
02/02/2014, 20:22
Сообщение
#2
|
|
Ученик Группа: Пользователи Сообщений: 26 Регистрация: 01/02/2014 Из: Санкт-Петербург, Россия Пользователь №: 99 102 |
Такой возможности не припомню. Но есть возможность активировать функцию с шагом в 5 градусов, тоесть обьект будет поворачиваться не плавно, а с шагом +-5 градусов (0, 5, 10, 15, 20...). Если ты конечно это имел в виду.
Сообщение отредактировал cedez1832 - 02/02/2014, 20:25 |
|
|
02/02/2014, 20:48
Сообщение
#3
|
|
Учитель Группа: Пользователи Сообщений: 334 Регистрация: 16/01/2006 Из: Санкт-Петербург Пользователь №: 21 267 |
Такой возможности не припомню. Но есть возможность активировать функцию с шагом в 5 градусов, тоесть обьект будет поворачиваться не плавно, а с шагом +-5 градусов (0, 5, 10, 15, 20...). Если ты конечно это имел в виду. Спасибо, но я совсем не про то, и не в максе Интересует именно MEL-скрипт для параметра rotateY и именно в майе. Также требуется автокей для этого параметра. Тоесть чтобы после вращения автоматом создавался ключ. Причём не с auto-тангенсом, а со stepped-тангенсом. |
|
|
02/02/2014, 20:59
Сообщение
#4
|
|
Президент Афро-Азиатской-Евро-Австралии Группа: Пользователи Сообщений: 275 Регистрация: 10/04/2006 Из: Севастополь Пользователь №: 29 811 |
Как то задача сформулирована непонятно. Можно поточнее?
|
|
|
02/02/2014, 21:02
Сообщение
#5
|
|
Ученик Группа: Пользователи Сообщений: 26 Регистрация: 01/02/2014 Из: Санкт-Петербург, Россия Пользователь №: 99 102 |
Такой возможности не припомню. Но есть возможность активировать функцию с шагом в 5 градусов, тоесть обьект будет поворачиваться не плавно, а с шагом +-5 градусов (0, 5, 10, 15, 20...). Если ты конечно это имел в виду. Спасибо, но я совсем не про то, и не в максе Интересует именно MEL-скрипт для параметра rotateY и именно в майе. Также требуется автокей для этого параметра. Тоесть чтобы после вращения автоматом создавался ключ. Причём не с auto-тангенсом, а со stepped-тангенсом. ах да:) Все. Мозги мои медленно испаряются=) ЗЫ: То приятное чувство, когда из Питера на форуме не ты один))) Сообщение отредактировал cedez1832 - 02/02/2014, 21:03 |
|
|
02/02/2014, 21:14
Сообщение
#6
|
|
Учитель Группа: Пользователи Сообщений: 334 Регистрация: 16/01/2006 Из: Санкт-Петербург Пользователь №: 21 267 |
Как то задача сформулирована непонятно. Можно поточнее? Ок. Кратко: По оси Y объект должен вращаться только под прямые углы. При этом автоматически должен создаваться анимационный ключ с кривой типа stepped (на моей картинке это кривая с прямым углом). Тоесть к примеру повернул я этот объект на любой градус в промежутке от 1 до 135 = объект сам повернутся на 90 градусов. В промежутке 136-225 = 180 градусов. 226-315 = 270 316-380 = 380 В качестве примера зайдите в свойства rotateTool → измените значение StepSize на 90 → покрутите любой объект. Вот именно это мне и надо, только не трогая инструмент rotateTool. |
|
|
03/02/2014, 04:19
Сообщение
#7
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
http://youtu.be/3cO4y2F-wTQ
Код import __main__, maya.cmds as mc from functools import partial if not hasattr( __main__, 'rot_scriptJobs' ): def rotateKey( attrib_name ): angle = mc.getAttr( attrib_name ) rest = angle % 360 if 45 < rest < 135: angle = angle + 90 - rest elif 135 < rest < 225: angle = angle + 180 - rest elif 225 < rest < 315: angle = angle + 270 - rest else: angle = angle - rest mc.rotate( 0, angle, 0, attrib_name.split('.')[0] ) mc.setKeyframe( attrib_name, ott="step" ) rot_transforms = mc.ls(sl=True, type='transform') if rot_transforms: __main__.rot_scriptJobs = [ mc.scriptJob(kws=1, ac=(transform+'.ry',partial(rotateKey, transform+'.ry'))) for transform in rot_transforms ] mc.inViewMessage( amg="Added {} object(s) to rotateKey".format(len(rot_transforms)), pos='topCenter', fade=True ) else: mc.inViewMessage( amg="No transforms in selection !!!", pos='topCenter', fade=True ) else: [ mc.scriptJob( k=scriptJob ) for scriptJob in __main__.rot_scriptJobs ] del __main__.rot_scriptJobs mc.inViewMessage( amg="Removed {} object(s) from rotateKey".format(len(__main__.rot_transforms)), pos='topCenter', fade=True ) Надеюсь я правильно понял суть проблемы Сообщение отредактировал VUX - 03/02/2014, 04:44 |
|
|
03/02/2014, 04:44
Сообщение
#8
|
|
Учитель Группа: Пользователи Сообщений: 334 Регистрация: 16/01/2006 Из: Санкт-Петербург Пользователь №: 21 267 |
Браво! То что нужно. На видео всё идеально и самое оно. Только скрипт стопорится в самом начале((( CODE // Error: import __main__, maya.cmds as mc // // Error: Line 1.16: Syntax error // Скрипт в каком-нибудь дополнительном редактировании нуждается? |
|
|
03/02/2014, 04:50
Сообщение
#9
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
Браво! То что нужно. На видео всё идеально и самое оно. Только скрипт стопорится в самом начале((( Код // Error: import __main__, maya.cmds as mc // // Error: Line 1.16: Syntax error // Скрипт в каком-нибудь дополнительном редактировании нуждается? Вы всунули скрипт в MEL вкладку (в scriptEditor-е), а нада в Python - мая думает что это мел-скрипт |
|
|
03/02/2014, 04:56
Сообщение
#10
|
|
Учитель Группа: Пользователи Сообщений: 334 Регистрация: 16/01/2006 Из: Санкт-Петербург Пользователь №: 21 267 |
|
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 25/04/2024 - 20:21 |