Render.ru

Maya 2016 Subdivisions With Height ...etc

blindartist

Активный участник
Рейтинг
8
#22
А можно скришот, в котором видно показатели Transform ноды в Attribute editor после того, как объект повернут на произвольный угол и отскалирован по одной из осей по world? Мне прям интересно, как это может быть?
 
Рейтинг
327
#24
надо было скейлить по одной\двум осям. забыл про это совсем =)
и предупреждение появилось, можно и не вращать
 

Lemieux

Знаток
Рейтинг
58
#25
смог повторить, но я считаю, что это какие-то извращения, скейлить объект в world
 

blindartist

Активный участник
Рейтинг
8
#26
смог повторить, но я считаю, что это какие-то извращения, скейлить объект в world
Для начала, я вообще считаю извращением скейлить объект до того, как у него выставленны все параметры. Размеры куда практичнее подгонять параметрами длина/высота/ширина, не получая в трансформе множитель скейла, который потом будет на многие действия влиять.
А что до скейла в world - не редко нужно отскейлить объект не в соответсвии с его осями, не важно - World, Parent или иное пространство. Но мне кажется, что это логично делать с готовым объектом и не возвращаться вниз по стеку.
В общем ладно, с вопросом разобрались, теперь объект ломается у всех, я спокоен XD
 

4i4ikov

Знаток
Рейтинг
37
#27
Да интересною - глюк это, или фича, или так и должно быть. Любопытно получается, вот что накопал.

Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется, но тогда и скейл уберётся и объект вернётся в исходное положение

Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.

Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.

При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов

И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.

Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.

Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
 
Последнее редактирование:

Lemieux

Знаток
Рейтинг
58
#28
Да интересною - глюк это, или фича, или так и должно быть. Любопытно получается, вот что накопал.

Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется

Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.

Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.

При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов

И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.

Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.

Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
А может всё дело в матрице трансформации?
 

4i4ikov

Знаток
Рейтинг
37
#29
А может всё дело в матрице трансформации?
Именно в её отсутствии. Они не задействовли матрицу объекта а похачили сдвиги через компоненты.
Это и вправду выглядит как хак: мы делаем трансформацию объекта(!), значит должны меняться атрибуты ноды Трансформ, а вместо этого меняются CVs ноды Шейп. Трансформ через ноду Шейп, Карл! А атрибуты scale и shear не меняются.

Сделали бы через матрицу объекта и не было бы этого косяка с искажениями.
 

4i4ikov

Знаток
Рейтинг
37
#30
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))

А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
 

blindartist

Активный участник
Рейтинг
8
#31
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))

А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
Тащем заняно. Вообще использование shear хоть и решает вопрос такого рода скела, но все же ИМХО плохая идея - локальное простраство объекта становится не прямоугольным и это может создать пачку проблем в будущем.
А вот другой вопрос на поразвлекаться с майа: сделать кубик, развернуть его на произвольный градус и отскейлить в направлении мировой оси Х так, чтобы после этого у него можно было спокойно изменить количество подразделений и ничего не сломалось. Я знаю два метода =) Если считать имитацию с помощью shear то и три.
 

Lemieux

Знаток
Рейтинг
58
#32
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))

А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
И что, у локатора можно менять сабдивижн после этих манипуляций?

Так же ещё вопрос. Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear?

меняются только CVs и их можно обнулить и искажение уберется
Это не работает в моём примере, ни ручное обнуление (становится исходные объект), ни фриз трансформ (при изменение сабдивижн объект всё равно искажается)
 
Последнее редактирование:

4i4ikov

Знаток
Рейтинг
37
#33
И что, у локатора можно менять сабдивижн после этих манипуляций?
Возьмите вместо локатора например флюид-контейнер, у него можно менять сабдивижн)))
Этот пример с локатором показывает что такой скейл сделан через CVs, если нет CVs, то нет и скейла. Чтобы не путаться можно назвать его "фейковый скейл" - это всякий скейл, который вне объектных осей.

А сабдивижн это частный случай, то что в теме изнально начали обсуждать. А общий случай это вляние такого скейла на всю историю, если в истории у какой-то ноды мы изменим параметры то будут искажения (после скейла естесвенно). Даже те параметры которые не меняют кол-во CVs. Вот в чём беда такой реализации скейла.


Это не работает в моём примере, ни ручное обнуление (становится исходные объект), ни фриз трансформ (при изменение сабдивижн объект всё равно искажается)
Да естественно объект становится исходным, это обсуждали и я не стал повторять, вкратце написал. Обнуляются все трансформы по CVs и объект тоже сбрасывается в исходный. Сейчас допишу в том посте, чтоб путаницы не было.

Фриз трансформ делать бесполезно, потому что как такого трансформа нет, матрицы трансформации нет, я выше это писал вам. В этом суть происходящего и вся веселуха.
 

4i4ikov

Знаток
Рейтинг
37
#34
По поводу shear

Вообще использование shear хоть и решает вопрос такого рода скела, но все же ИМХО плохая идея - локальное простраство объекта становится не прямоугольным и это может создать пачку проблем в будущем.
Так же ещё вопрос. Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear?
Как я понимаю shear - это такая же составляющая матрицы трансформации как и транслейт, ротейт и скейл. Только shear это как бы raw-data, сырые данные и напрямую его использовать мало удобно.
И это не локальное пространство, это преобразование геометрии, локальное пространство не меняется. Нет вру, если меняется матрица трансформации, значит меняется и локальное пространство. Но тогда это естественно, просто может непривычно. Проблемы пачками... хм, если будут примеры, плиз приведите.

Кубик так повернуть чисто через shear не получится, но если задействовать всю матрицу трансформации, то можно, при этом у shear тоже будут какие-то значения.
Логически я мыслю так:
Скейл по произвольной оси это аффинное преобразование, если это так, то значит его можно воспроизвести через матрицу трансформации, при этом могут быть задействованы не только shear, но транслейт, ротейт и скейл.
Практически надо будет посмотреть что там с вычислением матрицы, покурить математику, но теоретически проблем с таким преобразованием пока не вижу.
 
Последнее редактирование:

4i4ikov

Знаток
Рейтинг
37
#35
А вот другой вопрос на поразвлекаться с майа: сделать кубик, развернуть его на произвольный градус и отскейлить в направлении мировой оси Х так, чтобы после этого у него можно было спокойно изменить количество подразделений и ничего не сломалось. Я знаю два метода =) Если считать имитацию с помощью shear то и три.
Иерархические трансформации, что ещё?
 

4i4ikov

Знаток
Рейтинг
37
#36
Кубик через shear:
Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear
NewScene;
//создаем
polyCube -w 1 -h 1 -d 1 -sx 2 -sy 2 -sz 2 -ax 0 1 0 -tx 1 -ch 1;
setAttr "pCube1.rotateY" 45;
//подбираем матрицу трансформации (косвенно конечно)
setAttr "pCube1.shearXZ" 0.7; // <--------------- shear
setAttr "pCube1.scaleZ" 0.818;
setAttr "pCube1.rotateY" 27.49;

Всё.
Можно менять сабдивижен без проблем.

И shear лучше вынести в каналы чтобы интересней было играться
setAttr -k on |pCube1.shearXY;
setAttr -k on |pCube1.shearXZ;
setAttr -k on |pCube1.shearYZ;
 

4i4ikov

Знаток
Рейтинг
37
#38
Конечно можно менять без проблем, так как ты отскейлил в пространстве объекта, а не мировых. Когда скейлишь в мировых, скейл объекта не меняется.
Если ты перемещаешь объект как угодно - его трансформы меняются.
Если ты вращаешь объект как угодно - его ротейты меняются.
Если ты скейлешь объект как угодно - его скейлы меняются.
И только если ты скейлешь по методу Автостола - скейлы не меняются, потому что там нет скейла, там CVs меняются, а не матрица трансформации. В который раз уже объясняю одно и тоже.

И субдивижен ломается не от смены пространства, а потому что Автостол дергает CVs.
 

Lemieux

Знаток
Рейтинг
58
#39
Сверху