Maya 2016 Subdivisions With Height ...etc
- Автор темы Annuran
- Дата создания
- Рейтинг
- 8
смог повторить, но я считаю, что это какие-то извращения, скейлить объект в world
А что до скейла в world - не редко нужно отскейлить объект не в соответсвии с его осями, не важно - World, Parent или иное пространство. Но мне кажется, что это логично делать с готовым объектом и не возвращаться вниз по стеку.
В общем ладно, с вопросом разобрались, теперь объект ломается у всех, я спокоен XD
Да интересною - глюк это, или фича, или так и должно быть. Любопытно получается, вот что накопал.
Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется, но тогда и скейл уберётся и объект вернётся в исходное положение
Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.
Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.
При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов
И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.
Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.
Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется, но тогда и скейл уберётся и объект вернётся в исходное положение
Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.
Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.
При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов
И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.
Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.
Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
Последнее редактирование:
Да интересною - глюк это, или фича, или так и должно быть. Любопытно получается, вот что накопал.
Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется
Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.
Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.
При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов
И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.
Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.
Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
Сперва соберу то что blindartist уже сказал:
- искажения происходят если стоит режим скейла отличный от Object
- искажения происходят если скейлим по одной или двум осям
- значение скейла у объекта не меняется
- меняются только CVs и их можно обнулить и искажение уберется
Разобрались что по сути происходит не скейл а трансформация координат CVs, об этом собственно и говорит сообщение:
Warning: Non object-space scale baked onto components
Ахтунг: Скейла объекта нет, скейл имитируется перемещением компонетов.
Почему по трем осям скейлится нормально - потому что в этом случае скейлится реально объект , а компонеты не трогаются.
При перемещении и вращении этого не происходит, потому что у них трансформации в любой системе координат (мировой или выбранные оси) можно свести к осям объекта.
А с со скейлом так сделать нельзя. Если попытаться свести произвольный скейл к реальному скейлу объекта, то тогда надо будет задействовать трансформацию Shear (Скос, его можно менять в AE).
Есть два варианта реализации произвольного скейла:
1. имитировать через Shear + Scale(реальный скейл)
2. имитировать через перемещение компонентов
И вот в решение задачи Автостол, по-моему, пошёл не тем путём. Надо было задействовать Shear, а не компоненты и вот тогда бы искажений не было. И вообще такие вещи называются хаком.
Так что вся эта петрушка есть следствие математики скейла. Но реализовали как хак. А если бы сделали через Shear - искажений не было бы.
Такие вот скандалы-интриги-расследования получаются, поправьте меня если я где нафейлил. Сам не ожидал такого финала )))
А может всё дело в матрице трансформации?
Это и вправду выглядит как хак: мы делаем трансформацию объекта(!), значит должны меняться атрибуты ноды Трансформ, а вместо этого меняются CVs ноды Шейп. Трансформ через ноду Шейп, Карл! А атрибуты scale и shear не меняются.
Сделали бы через матрицу объекта и не было бы этого косяка с искажениями.
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
- Рейтинг
- 8
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
А вот другой вопрос на поразвлекаться с майа: сделать кубик, развернуть его на произвольный градус и отскейлить в направлении мировой оси Х так, чтобы после этого у него можно было спокойно изменить количество подразделений и ничего не сломалось. Я знаю два метода =) Если считать имитацию с помощью shear то и три.
Вот ещё прикол. А что будет если так поскейлить объект у которого нет CVs, каким образом Майя-Автостол, будет выкручиваться?
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
Локатор - пример такого объекта.
Пробуем и ничего не происходит, он не меняется.
Это во вьюпорте ничего, но команды честно пишет
scale -ws -r 1 1.252789 1 ; по мировым осям
или scale -oa 0.469634rad -0.234109rad 0.427211rad ... ; по произвольной оси
Но Локатор не менятся. Не меняется потому что нет CVs! Хачить-то нечего))
А теперь двигаем Shear у ноды transform и Локатор трансформируется на скос без проблем. Аффинные преобразования возможны.
Так же ещё вопрос. Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear?
меняются только CVs и их можно обнулить и искажение уберется
Последнее редактирование:
И что, у локатора можно менять сабдивижн после этих манипуляций?
Этот пример с локатором показывает что такой скейл сделан через CVs, если нет CVs, то нет и скейла. Чтобы не путаться можно назвать его "фейковый скейл" - это всякий скейл, который вне объектных осей.
А сабдивижн это частный случай, то что в теме изнально начали обсуждать. А общий случай это вляние такого скейла на всю историю, если в истории у какой-то ноды мы изменим параметры то будут искажения (после скейла естесвенно). Даже те параметры которые не меняют кол-во CVs. Вот в чём беда такой реализации скейла.
Это не работает в моём примере, ни ручное обнуление (становится исходные объект), ни фриз трансформ (при изменение сабдивижн объект всё равно искажается)
Фриз трансформ делать бесполезно, потому что как такого трансформа нет, матрицы трансформации нет, я выше это писал вам. В этом суть происходящего и вся веселуха.
По поводу shear
Как я понимаю shear - это такая же составляющая матрицы трансформации как и транслейт, ротейт и скейл. Только shear это как бы raw-data, сырые данные и напрямую его использовать мало удобно.
И это не локальное пространство, это преобразование геометрии, локальное пространство не меняется. Нет вру, если меняется матрица трансформации, значит меняется и локальное пространство. Но тогда это естественно, просто может непривычно. Проблемы пачками... хм, если будут примеры, плиз приведите.
Кубик так повернуть чисто через shear не получится, но если задействовать всю матрицу трансформации, то можно, при этом у shear тоже будут какие-то значения.
Логически я мыслю так:
Скейл по произвольной оси это аффинное преобразование, если это так, то значит его можно воспроизвести через матрицу трансформации, при этом могут быть задействованы не только shear, но транслейт, ротейт и скейл.
Практически надо будет посмотреть что там с вычислением матрицы, покурить математику, но теоретически проблем с таким преобразованием пока не вижу.
Вообще использование shear хоть и решает вопрос такого рода скела, но все же ИМХО плохая идея - локальное простраство объекта становится не прямоугольным и это может создать пачку проблем в будущем.
Так же ещё вопрос. Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear?
И это не локальное пространство, это преобразование геометрии, локальное пространство не меняется. Нет вру, если меняется матрица трансформации, значит меняется и локальное пространство. Но тогда это естественно, просто может непривычно. Проблемы пачками... хм, если будут примеры, плиз приведите.
Кубик так повернуть чисто через shear не получится, но если задействовать всю матрицу трансформации, то можно, при этом у shear тоже будут какие-то значения.
Логически я мыслю так:
Скейл по произвольной оси это аффинное преобразование, если это так, то значит его можно воспроизвести через матрицу трансформации, при этом могут быть задействованы не только shear, но транслейт, ротейт и скейл.
Практически надо будет посмотреть что там с вычислением матрицы, покурить математику, но теоретически проблем с таким преобразованием пока не вижу.
Последнее редактирование:
А вот другой вопрос на поразвлекаться с майа: сделать кубик, развернуть его на произвольный градус и отскейлить в направлении мировой оси Х так, чтобы после этого у него можно было спокойно изменить количество подразделений и ничего не сломалось. Я знаю два метода =) Если считать имитацию с помощью shear то и три.
Кубик через 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;
Создай куб, поверни его на 45 градусов по оси у и потом отскейли в мировых координатах по z. Как такое же получить с помощью shear
//создаем
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;
Конечно можно менять без проблем, так как ты отскейлил в пространстве объекта, а не мировых. Когда скейлишь в мировых, скейл объекта не меняется.
Если ты вращаешь объект как угодно - его ротейты меняются.
Если ты скейлешь объект как угодно - его скейлы меняются.
И только если ты скейлешь по методу Автостола - скейлы не меняются, потому что там нет скейла, там CVs меняются, а не матрица трансформации. В который раз уже объясняю одно и тоже.
И субдивижен ломается не от смены пространства, а потому что Автостол дергает CVs.